yum进行系统更新
使用yum无法进行系统更新的原因
这些天一直在trixbox上进行二次开发,trixbox是一个开源PBX的分发版,它将所有依赖的软件安装在centerOS(一个linux的分发版)上,打包成一个ISO镜像,你只需要安装十几分钟就可以将一个PC格式化安装成一个家用的PBX.然而,我想要在上边做开发,需要一些第三方的软件,比如GCC,kernel-devel(用来编译),subversion(用来取得一个更新的软件包);这些都是trixbox默认没有安装的。
所以我使用了yum管理软件,参考了yum的使用,发现它很强大,
一方面他可以管理软件:
1,安装新软件
2.更新软件
3.移除软件
另一方面还可以使用yum搜索软件
当然,最普通的用户,使用yum可以更新您的系统,这个功能相当于windows的自动更新一样,可以为您的系统打上补丁。
在使用之前,我们首先来了解软件仓库(repository),一般社区的成员会维护一个适用于操作系统的软件仓库,另外,一些软件的作者可能也提供了一个单独的仓库。而这个仓库的信息是存放在您系统中的/etc/yum.repos.d、目录下的若干个描述文件中。仓库的维护者一般会在网站上公布自己仓库的描述文件。仓库描述文件的名称以.repo结尾,您必须有root权限才能向这个目录添加文件。
而此次,我遇到的问题就是,当我使用yum -y update想要更新我的系统时,发生了如下报告:
http://download.skype.com/linux/repo...ta/repomd.xml: [Errno 14] HTTP Error 404: Server: nginx/0.5.14
Trying other mirror.
Error: Cannot open/read repomd.xml file for repository: skype )
当然,从字面意思理解是不能找到目标的服务器,也就是取得软件仓库中的软件了;但另我困惑的是,为什么要去一个skype的网站上去更新软件呢?后来查阅了资料发现有人这样回复:
You have installed a lot of useless repos and Yum is not working properly because of that.
Post the output of this
也就是说,你配置了太多的目标软件仓库库,导致yum在寻找的时候发生了混乱。果然,我查看了一下:
ls /etc/yum.repos.d
发现好多的*.repo,试着打开一个,看到就是类似与一个地址的配置。看到有两个貌似官方的配置文件,保留下来,其他的通通删除。
然后执行了yum clean all
OK,然后再执行yum -y update,我靠,成功了,就看着一直下载,等了N长的时间。
那边等边写了,yum不需要任何日常的维护,为了保证yum的操作速度,应当禁用或删除那些不再需要的仓库,可以删除yum缓存中的文件,从而节省硬盘空间。
禁用的方法可以在仓库的描述文件中设置enable=0,yum工具忽略包含这一设置的描述文件。
要彻底删除一个仓库,可以从/etc/yum.repos.d/目录中删除相关的文件,从/var/cache/yum中删除相关的缓存目录
默认情况下,yum保留它下载的软件包和软件信息文件,这样下次不用重新下载,要删除软件文件信息,使用命令:
yum clean headers
要删除缓存中所有的软件包,使用命令:
yum clean packages