Linux中gcc和yum问题

  • Post author:
  • Post category:linux


本来打算在Ubuntu上用apt-get安装redis和图片服务器的,于是输入如下命令:

# apt-get install redis

但是出现如下提示:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package redis is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'redis' has no installation candidate

大概就是说找不到

redis

,没有

redis

的安装候选。找到相关的问题

http://askubuntu.com/questions/14685/what-does-package-package-has-no-installation-candidate-mean

,应该是要

# apt-get update

一下。但是尴尬的事情又来了,update 出现如下错误:

......
Reading package lists... Done
W: Failed to fetch http://hk.archive.ubuntu.com/ubuntu/dists/precise/InRelease  
W: Failed to fetch http://hk.archive.ubuntu.com/ubuntu/dists/precise-updates/InRelease  
W: Failed to fetch http://hk.archive.ubuntu.com/ubuntu/dists/precise-backports/InRelease  
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/precise-security/InRelease  
W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/precise/InRelease  
W: Failed to fetch 
......
W: Some index files failed to download. They have been ignored, or old ones used instead.

于是我又查了关于“Failed to fetch”的相关问题,参考

http://askubuntu.com/questions/298177/a-failed-to-fetch-error-occurs-when-apt-get-update-is-run-how-do-i-fix-this



http://blog.csdn.net/npy_lp/article/details/42080553

。提到跟 DNS 配置有关,于是我做了相应修改后发现依然无效(我装的是 Ubuntu 12.04 Server)。

然后我就开始尝试修改软件源了,我的 Ubuntu 没有图形界面,相关操作如下:


1、保险起见,备份 Ubuntu12.04 源列表

# cp /etc/apt/sources.list /etc/apt/sources.list.backup


2、修改源列表文件

# vi /etc/apt/sources.list


3、把里面的列表替换成下面的列表


【163源】

 deb http://mirrors.163.com/ubuntu/ precise main restricted
 deb-src http://mirrors.163.com/ubuntu/ precise main restricted
 deb http://mirrors.163.com/ubuntu/ precise-updates main restricted
 deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted
 deb http://mirrors.163.com/ubuntu/ precise universe
 deb-src http://mirrors.163.com/ubuntu/ precise universe
 deb http://mirrors.163.com/ubuntu/ precise-updates universe
 deb-src http://mirrors.163.com/ubuntu/ precise-updates universe
 deb http://mirrors.163.com/ubuntu/ precise multiverse
 deb-src http://mirrors.163.com/ubuntu/ precise multiverse
 deb http://mirrors.163.com/ubuntu/ precise-updates multiverse
 deb-src http://mirrors.163.com/ubuntu/ precise-updates multiverse
 deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
 deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
 deb http://mirrors.163.com/ubuntu/ precise-security main restricted
 deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted
 deb http://mirrors.163.com/ubuntu/ precise-security universe
 deb-src http://mirrors.163.com/ubuntu/ precise-security universe
 deb http://mirrors.163.com/ubuntu/ precise-security multiverse
 deb-src http://mirrors.163.com/ubuntu/ precise-security multiverse
 deb http://extras.ubuntu.com/ubuntu precise main
 deb-src http://extras.ubuntu.com/ubuntu precise main


4、更新软件源

# apt-get update

我使用的是163源,出现如下提示即更新成功:

......
Hit http://mirrors.163.com precise-security/main Translation-en
Hit http://mirrors.163.com precise-security/multiverse Translation-en
Hit http://mirrors.163.com precise-security/restricted Translation-en
Hit http://mirrors.163.com precise-security/universe Translation-en
Reading package lists... Done

在此之前,不管是出现没有yum,没有gcc还是没有rpm,还是出现各类编译问题。不用理会。

  • 那么,除了

    apt-get update

    ,我们平常还会看到

    apt-get upgrade

    以及

    apt-get dist-upgrade

    ,它们的区别是什么呢?查阅相关资料,有如下解释:

    An

    update

    should always be performed before an upgrade or dist-upgrade.

    upgrade

    is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded.

    也就是说:

    update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

    upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能是最新的。

    由于包与包之间存在各种依赖关系,upgrade只是简单的更新包,不管这些依赖,它不和添加包,或是删除包。而dist-upgrade可以根据依赖关系的变化,添加包,删除包。

    更详细说明可以参考:

    http://www.cnblogs.com/PlusHappy/p/5725145.html


那么,回到我们最开始的目的——安装 yum和gcc和redis等。

当我们执行完

apt-get update

后,可以不执行

apt-get upgrade

,直接执行

apt-get install yum

即可。



版权声明:本文为OYY_90原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。