首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 操作系统 > Linux > 正文
  • 你知道么?Yum让你随时拥有最新的Fedora
      2007-2-25  来源:网络资源  编辑:Jsbulo  热度:

    在Red Hat或者其它基于RPM的操作系统中安装或者更新软件时,我们经常会被一些莫名其妙的错误提示所困扰。即便是使用Red Hat提供的基于GUI的管理工具,这个问题也没有彻底解决。事实上,绝大部分的问题,都出在了各个软件包的关联性问题上。很显然,这是RPM软件包管理工具存在着一些不足。

    Yum是一个针对RPM操作系统的非常方便的自动升级和软件包管理工具。Yum会自动计算出程序之间的相互关联性,并且计算出完成软件包的安装需要哪些步骤。对于那些管理着大量机器的系统管理员来说,这意味着不需要通过RPM手工来升级每一台机器。在安装软件时,也不会再被那些关联性问题所困扰。

    在Red Hat中,有一个专门用于软件包升级的工具—Up2Date。在缺省情况下,它也是Fedora Core1中的RPM软件包管理工具。这是一个很直观的,基于GUI的软件包管理工具。遗憾的是,它在使用过程中经常会出错,并且也不够灵活。

    Yum可以代替Up2Date,或者作为其一个补充。实践发现,Yum不仅速度更快,更加可靠,而且还提供了很多其它工具所没有提供的功能,比如:

    ◆ 多个软件仓库

    ◆ 简单的配置文件

    ◆ 正确的依赖性检查

    ◆ somps.xml组支持

    ◆ 简单的界面

    如前所述,Yum不仅可以让系统上已经安装的软件包处于最新状态,也可用于直接安装软件包。现实中,经常会碰到的问题之一就是,无法找到足够的光盘存储一些需要的软件包。而使用Yum,可以直接从网上下载安装软件包。

    缺省情况下,Yum已经被安装到了Fedora Core 1中,如果系统没有安装这个工具,可以直接从光盘安装,也可以从以下位置下载Yum的RPM包,并安装:

    http://mirrors.kernel.org/fedora/core/1/i386/os/Fedora/RPMS/

    配置Yum

    在使用Yum之前,我们要编辑/etc/yum.conf配置文件,更改其中指明所使用的软件仓库服务器的位置。下面是缺省情况下该文件的内容:

    >

    [main]
    cachedir=/var/cache/yum
    debuglevel=2
    logfile=/var/log/yum.log
    pkgpolicy=newest
    distroverpkg=fedora-release
    tolerant=1
    exactarch=1
    [base]
    name=Fedora Core $releasever - $basearch - Base
    baseurl=http://fedora.redhat.com/releases/fedora-core-$releasever
    [updates-released]
    name=Fedora Core $releasever - $basearch - Released Updates
    baseurl=http://fedora.redhat.com/updates/released/fedora-core-$releasever
    #[updates-testing]
    #name=Fedora Core $releasever - $basearch - Unreleased Updates
    #baseurl=http://fedora.redhat.com/updates/testing/fedora-core-$releasever



    缺省情况下,Yum使用的是Fedora Core1主下载服务器。因为使用这个服务器的人实在是太多,所以速度比较慢。如果需要的话,我们可以将Yum设置成其它的镜像站点。请到http://fedora.redhat.com/download/mirrors.html查看可用的镜像站点。

    一般来说,我们都会选择在地理上与自己比较接近的站点,这通常有利于加快下载的速度(当然情况也并不总是如此)。

    在本例中,我选择mirrors.kernel.org作为升级站点。以root身份编辑/etc/yum.conf文件,将[base]和[updates-released]章节的内容改成下面的内容:

    [base] 
    name=Fedora Core $releasever - $basearch - Base 
    baseurl=http://mirrors.kernel.org/fedora/core/$releasever/$basearch/os 
    [updates-released] 
    name=Fedora Core $releasever - $basearch - Released Updates 
    baseurl=http://mirrors.kernel.org/fedora/core/updates/$releasever/$basearch



    当然,根据所选择的站点不同,上述章节的内容也不同。对于文件中的[updates-testing]部分则不用对其进行更改,因为一般来说,在升级和安装软件包时并不需要使用它。

    除了编辑yum.conf文件外,还需要更改/etc/sysconfig/rhn/sources文件,使用所选择的镜像站点来代替文件的内容:

    yum fedora-core-1 http://mirrors.kernel.org/fedora/core/1/i386/os 
    yum updates-released http://mirrors.kernel.org/fedora/core/updates/1/i386

    使用Yum

    使用Yum要做的第一件事情是更新其RPM header(文件头)列表。每一个RPM都有一个header,其中包含了完整的文件列表、软件包描述、实现的功能和提供的库、所需要的东西以及有什么冲突。Yum正是使用这些信息来决定如何升级和安装软件包的。

    下面就来解决这个问题,输入以下命令:

    yum check-update



    运行这个命令,Yum将从yum.conf文件中指定的软件包服务器上下载当前的完整header文件列表。这个过程通常需要花费一定的时间,并且会有如下的一些显示信息:

    Gathering header information file(s) from server(s)
    Server: Fedora Core 1 - i386 - Base
    Server: Fedora Core 1 - i386 - Released Updates
    Finding updated packages
    Downloading needed 
    headers
    getting /var/cache/yum/updates-released
    /headers/pango-0-1.2.5-4.i386.hdr
    pango-0-1.2.5-4.i386.hdr  
    100% |=======| 6.5 kB    00:02
    ......



    当上述的步骤完成之后,说明Yum已经下载完了所有的header文件。如果想让现在系统上安装的所有软件都处于最新的状态,只需使用以下命令:

    yum update



    Yum会将现在系统上安装的所有软件和目前的软件仓库服务器上的软件进行比较,比较完成后,它会给出一个有关细节的信息列表让用户确认,列表的内容如下所示:

    Gathering header information file(s) from server(s)
    Server: Fedora Core 1 - i386 - Base
    Server: Fedora Core 1 - i386 - Released Updates
    Finding updated packages
    Downloading needed headers
    Resolving dependencies
    Dependencies resolved
    I will do the following:
    [install: kernel 2.4.22-1.2188.nptl.i686]
    [update: pango 1.2.5-4.i386]
    ......
    [update: XFree86-font-utils 4.3.0-55.i386]
    Is this ok [y/N]:y



    在本例中,Yum告诉我有76个可用更新(因为我进行测试的系统在安装完Fedora以后还从来没有更新过)。要安装所有这些更新,所要做的只是输入“y”即可。如果想更新的只是某一个特定的软件,可以将上述命令稍做修改:

    yum update nmap



    会看到如下所述的内容:

    Gathering header information file(s) from server(s) 
    Server: Fedora Core 1 - i386 - Base 
    Server: Fedora Core 1 - i386 - Released Updates 
    Finding updated packages 
    Downloading needed headers 
    No Packages Available for Update 
    No actions to take



    在上述的例子中,Yum告诉我,我的系统上的nmap已经是最新版本了,因此无需进行任何升级。下面我们来看一看如何安装一个机器上没有的软件包,比如要安装的是XChat IRC客户端,只需要输入以下命令即可:

    yum install xchat



    可能会看到如下信息:

    Gathering header information file(s) from server(s)
    Server: Fedora Core 1 - i386 - Base
    Server: Fedora Core 1 - i386 - Released Updates
    Finding updated packages
    Downloading needed headers
    Resolving dependencies
    Dependencies resolved
    I will do the following:
    [install: xchat 1:2.0.7-1.FC1.0.i386]
    Is this ok [y/N]:



    按“y”就可以进行软件的安装,会出现下列内容提示安装成功:

    Getting xchat-2.0.7-1.FC1.0.i386.rpm
    xchat-2.0.7-1.FC1.0.i386.
    100% |==========| 1.1 MB    01:51
    Running test transaction:
    Test transaction complete, Success!
    xchat 100 % done 1/1
    Installed:  xchat 1:2.0.7-1.FC1.0.i386
    Transaction(s) Complete



    虽然我的机器上的namp已经不需要再进行升级,不过我还想为其安装一个GUI界面,但又不知道需要什么软件包,这时只需要输入以下命令:

    yum search nmap gui



    可能看到的内容如下:

    Gathering header information file(s) from server(s)
    Server: Fedora Core 1 - i386 - Base
    Server: Fedora Core 1 - i386 - Released Updates
    Finding updated packages
    Downloading needed headers
    Looking in available packages for a providing package
    Available package: redhat-config-printer-gui.i386 
    0:0.6.79.5-1 from updates-released matches with 
    redhat-config-printer-gui
    Available package: nmap.i386 2:3.48-1 
    from base matches with nmap
    Available package: nmap-frontend.i386 
    2:3.48-1 from base matches with
    Available package: nmap-frontend.i386 
    2:3.48-1 from base matches with nmap-frontend
    ......
    2 results returned



    如果现在需要一个并不是独立软件包的库文件,比如libc6.1-1.so.2,可以通过以下命令获取:

    yum provides libc6.1-1.so.2



    该命令会显示以下信息:

    Gathering header information file(s)
    from server(s) 
    Server: Fedora Core 1 - i386 - Base 
    Server: Fedora Core 1 - i386 - Released Updates 
    Finding updated packages 
    Downloading needed headers 
    Looking in available packages for a providing package 
    Available package: compat-libstdc++.i386 
    0:7.3-2.96.118 from base matches with 
    libstdc++-libc6.1-1.so.2 
    Available package: compat-libstdc++.i386 
    0:7.3-2.96.118 from base matches with 
    libstdc++-libc6.1-1.so.2(GCC.INTERNAL) 
    2 results returned 
    Looking in installed packages for a providing package 
    No packages found



    Yum告知所查询的库位于compat-libstdc++的软件包中,并且现在还没有安装到本地系统上,所以只需要输入命令“yum install compat-libstdc++”即可完成该库的安装。如果要删除系统中的某软件,只需要输入以下命令:

    yum remove nmap



    该命令将会删除该软件包以及所有与之相关联的软件包。

    在Yum升级或者安装软件时,它并不会自动清除磁盘缓冲区,所以要手动来完成这个过程。所幸的是这个过程非常简单,只需要输入以下命令即可:

    yum clean all



    该命令会删除所有缓冲区中的软件包以及所有不再需要的RPM header。如果要查看某一软件在本系统上的安装情况,可以使用以下命令:

    yum info xchat



    将会出现如下提示:

    Gathering header information file(s) 
    from server(s)
    Server: Fedora Core 1 - i386 - Base
    Server: Fedora Core 1 - i386 - Released Updates
    Finding updated packages
    Downloading needed headers
    Looking in Available Packages:
    Looking in Installed Packages:
    Name   : xchat
    Arch   : i386
    Version: 2.0.7
    Release: 1.FC1.0
    Size   : 2.77 MB
    Group  : 应用程序/互联网
    Repo   : Locally Installed
    Summary: GTK+ IRC (聊天) 客户。
    Description:
    X-Chat 是一个 X 窗口系统和 GTK+ 的 IRC 客户。
    X-Chat 使用简便并包括一个好看的界面。

    小结

    从上面的讨论可以看出,Yum是一个非常方便实用的升级工具,它可以很轻松地让用户的系统时刻处于最新的状态。事实上,Yum可以实现的功能还远不止本文讨论的内容。我们还可以用它来升级内核(升级至新版本的内核,而不是打补丁)。

    本文以Fedora Core 1为例,如果机器上安装的是以前的Red Hat版本,也可以使用Yum来进行软件的更新和安装管理。方法是从以下位置下载相应的版本安装,即可如本文所述的方法一样对系统进行更新(甚至可以直接将老的Red Hat系统升级至Fedora):

    http://www.linux.duke.edu/projects/yum
    /download/2.0/yum-2.0.6-1.noarch.rpm
    Red Hat Linux 8.0:
    http://www.linux.duke.edu/projects/yum
    /download/1.0/yum-1.0.3-1_80.noarch.rpm
    Red Hat Linux 7.3:
    http://www.linux.duke.edu/projects/yum
    /download/1.0/yum-1.0.3-1_73.noarch.rpm



    几个亚洲的软件仓库服务器镜像站点:

    http://download.stmc.edu.hk/fedora/linux/core/ 
     ftp://download.stmc.edu.hk/fedora/linux/core/ 
    
     ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/ 
     rsync://ftp.sfc.wide.ad.jp/fedora/ 
     http://ftp.kddilabs.jp/Linux/packages/fedora/core/ 
     ftp://ftp.kddilabs.jp/Linux/packages/fedora/core/ 
     rsync://ftp.kddilabs.jp/fedora/ 
     ftp://ftp.riken.go.jp/pub/Linux/fedora/core/ 
    
     ftp://ftp.kreonet.re.kr/pub/Linux/fedora/core/ 
     rsync://ftp.kreonet.re.kr/fedora/core/ 
     ftp://mirror.hostway.co.kr/pub/fedora/