什么是yum? yum是yellowdogupdatermodified的缩写。
yellowdog是一个Linux的distribution,RH将这种升级技术利用到自己的distribution形成了现在的yum,感觉上yum和apt的原理类似,但是apt是编译代码,执行效率远高于使用python写成的yum。这是yum的主页。
yum的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution的应用
程序相互关系,根据计算出来的
软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux用户一直头痛的dependencies的问题。这一点上,yum和apt相同。apt原为debian的deb类型软件管理所使用,但是现在也能用到RH门下的rpm了。
一般这类软件通过一个或者多个
配置文件描述对应的repository的网络地址,通过http或者ftp协议在需要的时候从repository获得必要的信息,下载相关的软件包。这样,本地用户通过建立不同的repository的描述说明,在有Internet连接时就能方便进行系统的升级维护工作。另外,如果需要使用代理,
可以用http_proxy和ftp_proxy这些shell
里面标准环境变量的设定。
repository是用yum-arch或者createrepo命令创建的,也可以用别人已有的repository作为镜像,这里部探讨如何建立一个repository。
yum的基本操作 yum的基本操作包括软件的安装(本地,网络),升级(本地,网络),卸载,另外还有一定的查询功能。
设定好了本地的yum之后,就可以很方便的进行安装(现在假设就用fc5自带的yum进行安装),如我们需要安装虚拟机bochs,可以使用
#yuminstallbochs
如果本地有相关的rpm文件,可以用
#yumlocalinstallur.rpm
前者导致yum搜索现有repository中的数据(一般先会连接到这些repository下载更新数据),如果发现有此软件,则会通过分析其dependencies然后下载并安装所需软件。
如果需要卸载,可以使用
#yumremovebochs
或者
#yumerasebochs
这也会消解对应的dependencies,如删除firefox会把R同时删掉,因为R依赖于firefox
更新某个软件可以用
#yumupdatefirefox
如果不带后面的程序名,将会升级所有可以升级的软件。过时的软件如果需要处理(如删掉)可以添加——obsolete参数,或者使用upgrade。如果需要更自动化一些的操作(避免回答一些问题)还可以增加一些参数,如
#yum-yupgrade
如果做完一次系统级的升级,将会下载大量rpm等等东西,这将占用较多的硬盘,可以使用
#yumcleanpackages
将相关的rpm文件删除,其他的一些有headers,packages,cache,metadata,all
查看什么rpm提供某个程序可以使用
$yumprovides/bin/rpm
而使用
$yumlistrpm
会列出rpm相关的信息,而
$yumlistinfo
给出详细的说明,可以用
$yumsearchrpm
获得一切能找到的与rpm相关的程序,搜索的对象是每个程序的描述部分。
更详细的参数说明请查阅相关的manpages。在yum-utils里面可以找到叫yumdownloader的程序。使用它可以方便下载,如srpm等包
$yumdownloader——sourcefirefox
如何使用yum升级我的fc?
升级的核心部分很简单,首先,需要让yum能用新的repository,fc管理自己版本也用了一个rpm,可以用如下命令更新这个包
#rpm-Uvhhttp://download.fedora.redhat.com/pub/fedora\
/
linux/core/5/i386/os/Fedora/RPMS/fedora-release-5-5.\
noarch.rpm
此后就是用yum把fc4相关的程序更新到fc5,
#yum-yupgrade
注意,由于某些自己安装的程序没有相关的repository程序替代,因此很可能干扰这个过程,如qterm,原来的repository里面没有,偷懒的办法自然是先找到相关的repository并添加到yum的配置文件,笨拙的方法是先卸载这些东西进行了漫长的等待之后(我做的那次下载了1.5Gb+的东西),就可以看着一个一个的软件更新了,然后重启,用新内核boot成功就几乎大功告成了。
也许有一些应用软件无法处理老版本的配置文件,需要手动配置一下基本就行了。我的fc5就这样从fc4上长了出来~
FC本身有一个关于升级的FAQ,可以参考。
怎样配制yum添加新的repository?
这主要需要关心yum的配置文件。它的主配置文件在/etc/yum.conf,其说明可以参考这里。
其中重要的有repository的相关信息,在fc5里面,repository的信息是分开存储的,一般在/tec/yum.repos.d/里面,一般一个repository写成一个文件,如fedora-core.repo。
网上一般提供yum升级的repository都会提供类似的说明,如DAG,他提供了可供安装的rpm,装上后yum就配置好了,可以直接用上面的命令执行系统维护,又如dries,可以建立一个dries.repo文件,内容是
[dries]
name=ExtraFedorarpmsdries-$releasever-$basearch
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el3/en/i386/dries
这个一般看见就明白了,恕不赘述。
一些其他的工具
在yum-utils里面还有一些有用的工具,如package-cleanup用于清除本地安装的rpm,还有维护repository的一些工具,如repo-graph,repo-rss,repoclosure,repomanage,repoquery,reposync,repotrack,yum-builddep。