yum是redhat系统上的一个很好的软件包管理工具,它解决了rpm存在的包之间的依赖性关系,实现快速,可靠的安装和管理系统的软件包。而且配置和使用都非常简单,和debian的apt大有一比。呵呵。一直很少写技术类的文章,朋友总是说我没有点开源的精神,只知道学也不共享点出来,其实不然,我也想写,但就是太忙了,呵呵,以后会尽量多的写的技术类的文章。说了那么多废话,言归正传:
缺省情况下yum已经被安装到了系统中(我选择的是fedora core1 有人说现在都F7了。呵呵。F1用习惯了。)如果没有安装可以从光盘或者网上直接下载 http://archives.fedoraproject.org/fedora/linux/core/1/i386/os/ 其他版本的在http://mirrors.kernel.org/fedora/core/n/i386/os (n>1)
配置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 选择个速度比较快的服务器作为升级的站点我们,修改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://archives.fedoraproject.org/fedora/linux/core/1/i386/os/
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://mirrors.kernel.org/fedora/core/updates/1/i386
#[updates-testing]
#name=Fedora Core $releasever - $basearch - Unreleased Updates
#baseurl=http://fedora.redhat.com/updates/testing/fedora-core-$releasever
同时我们还要编辑文件/etc/sysconfig/rhn/sources 替换其中的默认站点修改后的内容为:
yum fedora-core-1 http://archives.fedoraproject.org/fedora/linux/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已经是最新版本了,因此无需进行任何升级。下面我们来看一看如何安装一个机器上没有的软件包,比如如果系统中没有nmap我们要安装的是nmap软件包,只需要输入以下命令即可:
yum install 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
Resolving dependencies
Dependencies resolved
I will do the following:
[install: nmap 2:3.48-1.i386]
Is this ok [y/N]:
按“y”就可以进行软件的安装,会出现下列内容提示安装成功:
Getting nmap-3.48-1.i386.rpm
nmap-3.48-1.i386.rpm 100% |=========================| 368 kB 00:17
Running test transaction:
Test transaction complete, Success!
nmap 100 % done 1/1
Installed: nmap 2:3.48-1.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 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
Looking in Available Packages:
Looking in Installed Packages:
Name : nmap
Arch : i386
Version: 3.48
Release: 1
Size : 1.26 MB
Group : Applications/System
Repo : Locally Installed
Summary: Network exploration tool and security scanner
Description:
Nmap is a utility for network exploration or security auditing. It
supports ping scanning (determine which hosts are up), many port
scanning techniques (determine what services the hosts are offering),
and TCP/IP fingerprinting (remote host operating system
identification). Nmap also offers flexible target and port
specification, decoy scanning, determination of TCP sequence
predictability characteristics, reverse-identd scanning, and more
。
小结
从上面的讨论可以看出,Yum是一个非常方便实用的升级工具,它可以很轻松地让用户的系统时刻处于最新的状态。事实上,Yum可以实现的功能还远不止本文讨论的内容。我们还可以用它来升级内核(升级至新版本的内核,而不是打补丁)。