YUM到底是啥东东?
YUM(Yellowdog Updater Modified)是一款开源命令行及图形化软件包管理工具,面向基于RPM(红帽软件包管理器)的Linux系统。 它让广大用户和系统管理员可以在系统上轻松地安装、更新、移除或搜索软件包。它由Seth Vidal开发和发布,采用了GPL(通用公共许可证),是一款开源工具。这意味着,谁都可以下载和访问代码,以修复软件错误,开发定制的软件包。YUM 通过解决软件包的依赖项问题,使用众多的第三方软件库来自动安装软件包。
1. 使用Yum安装软件包
想安装一个名为Firefox 14的软件包,只要运行下面这个命令,它会自动寻找并安装Firefox浏览器的所有必要依赖项。
- # yum install firefox
- Loaded plugins: fastestmirror
- Dependencies Resolved
- ==================================== Package Arch Version Repository Size
- ====================================
- Updating:
- firefox i686 10.0.6-1.el6.centos updates 20 M
- Updating for dependencies:
- xulrunner i686 10.0.6-1.el6.centos updates 12 M
- Transaction Summary
- ===========================================Install 0 Package(s)
- Upgrade 2 Package(s)
- Total download size: 32 M
- Is this ok [y/N]: y
- Downloading Packages:
- (1/2): firefox-10.0.6-1.el6.centos.i686.rpm | 20 MB 01:10
- (2/2): xulrunner-10.0.6-1.el6.centos.i686.rpm | 12 MB 00:52
- ------------------------------------------------------------------------------------------------
- Total 63 kB/s | 32 MB 02:04
- Updated:
- firefox.i686 0:10.0.6-1.el6.centos
- Dependency Updated:
- xulrunner.i686 0:10.0.6-1.el6.centos
- Complete!
上述命令会先要求予以确认,然后再将任何软件包安装到你的系统上。如果你不要求任何确认,就想自动安装软件包,可使用选项-y,如下例所示。
- # yum -y install firefox
2. 使用Yum移除软件包
想完全移除软件包连同所有依赖项,只要运行下面这个命令,如下所示。
- # yum remove firefox
- Loaded plugins: fastestmirror
- Setting up Remove Process
- Resolving Dependencies
- --> Running transaction check
- ---> Package firefox.i686 0:10.0.6-1.el6.centos set to be erased
- --> Finished Dependency Resolution
- Dependencies Resolved
- ===========================================Package Arch Version Repository Size
- ===========================================Removing:
- firefox i686 10.0.6-1.el6.centos @updates 23 M
- Transaction Summary
- ===========================================
- Remove 1 Package(s)
- Reinstall 0 Package(s)
- Downgrade 0 Package(s)
- Is this ok [y/N]: y
- Downloading Packages:
- Running rpm_check_debug
- Running Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Erasing:firefox-10.0.6-1.el6.centos.i686 1/1
- Removed:
- firefox.i686 0:10.0.6-1.el6.centos
- Complete!
同样,上述命令会先要求予以确认,然后再移除软件包。想禁用确认提示,只要添加选项-y,如下所示。
- # yum -y remove firefox
3. 使用Yum更新软件包
假设你有过时版本的MySQL软件包,想把它更新到最新的稳定版本。只要运行下面这个命令,它就会自动解决所有的依赖项问题,并安装依赖项。
- # yum update mysql
- Loaded plugins: fastestmirror
- Dependencies Resolved
- ===========================================Package Arch Version Repository Size
- ===========================================Updating:
- vsftpd i386 2.0.5-24.el5_8.1 updates 144 k
- Transaction Summary
- Install 0 Package(s)
- Upgrade 1 Package(s)
- Total size: 144 k
- Is this ok [y/N]: y
- Downloading Packages:
- Running rpm_check_debug
- Running Transaction Test
- Finished Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Updating : vsftpd 1/2
- Cleanup : vsftpd 2/2
- Updated:
- vsftpd.i386 0:2.0.5-24.el5_8.1
- Complete!
4. 使用Yum列出软件包
使用list函数,可搜索带名称的特定软件包。比如说,想搜索一个名为openssh的软件包,使用该命令。
- # yum list openssh
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * base: mirror.neu.edu.cn
- * epel: mirror.neu.edu.cn
- * extras: mirror.neu.edu.cn
- * rpmforge: mirror.nl.leaseweb.net
- * updates: mirror.nus.edu.sg
- Installed Packages
- openssh.i386 4.3p2-72.el5_6.3 installed
- Available Packages 4.3p2-82.el5 base
想让你的搜索更精确,明确软件包名称的版本,如果你知道的话。比如说,想搜索软件包的特定版本openssh-4.3p2 ,使用该命令。
- # yum list openssh-4.3p2
5. 使用Yum搜索软件包
要是你不记得软件包的确切名称,那么可以使用search函数,搜索与指定软件包的名称相匹配的所有可用软件包。比如说,想搜索与vsftpd这个单词匹配的所有软件包。
- # yum search vsftpd
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * base: mirror.neu.edu.cn
- * epel: mirror.neu.edu.cn
- * extras: mirror.neu.edu.cn
- * rpmforge: mirror.nl.leaseweb.net
- * updates: ftp.iitm.ac.in
- ============================== Matched: vsftpd ========================
- ccze.i386 : A robust log colorizer
- pure-ftpd-selinux.i386 : SELinux support for Pure-FTPD
- vsftpd.i386 : vsftpd - Very Secure Ftp Daemon
6. 使用Yum获取软件包信息
假设你想在安装软件包之前先知道它的信息。想获得某软件包的信息,只要执行下面这个命令。
- # yum info firefox
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * base: mirror.neu.edu.cn
- * epel: mirror.neu.edu.cn
- * extras: mirror.neu.edu.cn
- * rpmforge: mirror.nl.leaseweb.net
- * updates: ftp.iitm.ac.in
- Available Packages
- Name : firefox
- Arch : i386
- Version : 10.0.6
- Release : 1.el5.centos
- Size : 20 M
- Repo : updates
- Summary : Mozilla Firefox Web browser
- URL : http://www.mozilla.org/projects/firefox/
- License : MPLv1.1 or GPLv2+ or LGPLv2+
- Description : Mozilla Firefox is an open-source web browser, designed for standards
- : compliance, performance and portability.
7. 使用Yum列出所有的可用软件包
想列出Yum数据库中所有的可用软件包,使用下面这个命令。
- # yum list | less
8. 使用Yum列出所有的已安装软件包
想列出系统上所有的已安装软件包,只要执行下面这个命令,它会显示所有的已安装软件包。
- # yum list installed | less
9. Yum Provides函数
Yum provides函数用于查找某个特定文件属于哪个软件包。比如说,如果你想知道含有/etc/httpd/conf/httpd.conf文件的软件包的名称。
- # yum provides /etc/httpd/conf/httpd.conf
- Loaded plugins: fastestmirror
- httpd-2.2.3-63.el5.centos.i386 : Apache HTTP Server
- Repo : base
- Matched from:
- Filename : /etc/httpd/conf/httpd.conf
- httpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP Server
- Repo : updates
- Matched from:
- Filename : /etc/httpd/conf/httpd.conf
- httpd-2.2.3-65.el5.centos.i386 : Apache HTTP Server
- Repo : updates
- Matched from:
- Filename : /etc/httpd/conf/httpd.conf
- httpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP Server
- Repo : installed
- Matched from:
- Other : Provides-match: /etc/httpd/conf/httpd.conf
10. 使用Yum检查可用更新版
想找出你系统上有多少已安装软件包有可用更新版,只要使用下面这个命令。
- # yum check-update
11. 使用Yum更新系统
想确保系统版本最新,打上了所有的安全补丁和二进制软件包更新,只要运行下面这个命令。它会为你的系统安装所有最新的补丁和安全更新版。
- # yum update
12. 列出所有的可用群组软件包
在Linux中,软件包数量与特定群组捆绑在一起。你可以安装某个群组,它就会安装属于该群组的所有相关软件包,用不着使用Yum安装单个软件包。比如说,想列出所有的可用群组,只要执行下面这个命令。
- # yum grouplist
- Installed Groups:
- Administration Tools
- DNS Name Server
- Dialup Networking Support
- Editors
- Engineering and Scientific
- FTP Server
- Graphics
- Java Development
- Legacy Network Server
- Available Groups:
- Authoring and Publishing
- Base
- Beagle
- Cluster Storage
- Clustering
- Development Libraries
- Development Tools
- Eclipse
- Educational Software
- KDE (K Desktop Environment)
- KDE Software Development
13. 安装群组软件包
想安装某个软件包群组,我们使用选项groupinstall。比如说,想安装"MySQL Database",只要执行下面这个命令。
- # yum groupinstall 'MySQL Database'
- Dependencies Resolved
- ==================================================================Package Arch Version Repository Size
- ==================================================================Updating:
- unixODBC i386 2.2.11-10.el5 base 290 k
- Installing for dependencies:
- unixODBC-libs i386 2.2.11-10.el5 base 551 k
- Transaction Summary
- ==================================================================Install 1 Package(s)
- Upgrade 1 Package(s)
- Total size: 841 k
- Is this ok [y/N]: y
- Downloading Packages:
- Running rpm_check_debug
- Running Transaction Test
- Finished Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Installing : unixODBC-libs 1/3
- Updating : unixODBC 2/3
- Cleanup : unixODBC 3/3
- Dependency Installed:
- unixODBC-libs.i386 0:2.2.11-10.el5
- Updated:
- unixODBC.i386 0:2.2.11-10.el5
- Complete!
14. 更新群组软件包
想更新任何现有的已安装群组软件包,只要运行下面这个命令,如下所示。
- # yum groupupdate 'DNS Name Server'
- Dependencies Resolved
- ==================================================================Package Arch Version Repository Size
- ==================================================================
- Updating:
- bind i386 30:9.3.6-20.P1.el5_8.2 updates 981 k
- bind-chroot i386 30:9.3.6-20.P1.el5_8.2 updates 47 k
- Updating for dependencies:
- bind-libs i386 30:9.3.6-20.P1.el5_8.2 updates 864 k
- bind-utils i386 30:9.3.6-20.P1.el5_8.2 updates 174 k
- Transaction Summary
- Install 0 Package(s)
- Upgrade 4 Package(s)
- Total size: 2.0 M
- Is this ok [y/N]: y
- Downloading Packages:
- Running rpm_check_debug
- Running Transaction Test
- Finished Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Updating : bind-libs 1/8
- Updating : bind 2/8
- Updating : bind-chroot 3/8
- Updating : bind-utils 4/8
- Cleanup : bind 5/8
- Cleanup : bind-chroot 6/8
- Cleanup : bind-utils 7/8
- Cleanup : bind-libs 8/8
- Updated:
- bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2
- Dependency Updated:
- bind-libs.i386 30:9.3.6-20.P1.el5_8.2 bind-utils.i386 30:9.3.6-20.P1.el5_8.2
- Complete!
15. 移除群组软件包
想从系统删除或移除任何现有的已安装群组软件包,只要使用下面这个命令。
- # yum groupremove 'DNS Name Server'
- Dependencies Resolved
- ==========================================Package Arch Version Repository Size
- ==========================================Removing:
- bind i386 30:9.3.6-20.P1.el5_8.2 installed 2.1 M
- bind-chroot i386 30:9.3.6-20.P1.el5_8.2 installed 0.0
- Transaction Summary
- ==========================================Remove 2 Package(s)
- Reinstall 0 Package(s)
- Downgrade 0 Package(s)
- Is this ok [y/N]: y
- Downloading Packages:
- Running rpm_check_debug
- Running Transaction Test
- Finished Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Erasing : bind 1/2
- warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave
- Erasing : bind-chroot 2/2
- Removed:
- bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2
- Complete!
16. 列出启用的Yum软件库
列出系统里面所有启用的Yum软件库,使用下面这个选项。
- # yum repolist
- repo id repo name status
- base CentOS-5 - Base enabled: 2,725
- epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783
- extras CentOS-5 - Extras enabled: 282
- mod-pagespeed mod-pagespeed enabled: 1
- rpmforge RHEL 5 - RPMforge.net - dag enabled: 11,290
- updates CentOS-5 - Updates enabled: 743
- repolist: 20,824
17. 列出所有启用和禁用的Yum软件库
下面这个命令会显示系统上所有启用和禁用的yum软件库。
- # yum repolist all
- repo id repo name status
- C5.0-base CentOS-5.0 - Base disabled
- C5.0-centosplus CentOS-5.0 - Plus disabled
- C5.0-extras CentOS-5.0 - Extras disabled
- base CentOS-5 - Base enabled: 2,725
- epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783
- extras CentOS-5 - Extras enabled: 282
- repolist: 20,824
18. 安装来自特定软件库的软件包
想安装来自某个启用或禁用的软件库的某个软件包,必须在yum命令中使用-enablerepo选项。比如,想安装PhpMyAdmin 3.5.2软件包,只要执行这个命令。
- # yum --enablerepo=epel install phpmyadmin
- Dependencies Resolved
- ================================================================== Package Arch Version Repository Size
- ==================================================================Installing:
- phpMyAdmin noarch 3.5.1-1.el6 epel 4.2 M
- Transaction Summary
- ==================================================================Install 1 Package(s)
- Total download size: 4.2 M
- Installed size: 17 M
- Is this ok [y/N]: y
- Downloading Packages:
- phpMyAdmin-3.5.1-1.el6.noarch.rpm | 4.2 MB 00:25
- Running rpm_check_debug
- Running Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Installing : phpMyAdmin-3.5.1-1.el6.noarch 1/1
- Verifying : phpMyAdmin-3.5.1-1.el6.noarch 1/1
- Installed:
- phpMyAdmin.noarch 0:3.5.1-1.el6
- Complete!
19. 交互式Yum外壳
Yum实用工具提供了一个自定义外壳,你可以在这个环境下执行多个命令。
- # yum shell
- Loaded plugins: fastestmirror
- Setting up Yum Shell
- > update httpd
- Loading mirror speeds from cached hostfile
- * base: mirrors.sin3.sg.voxel.net
- * epel: ftp.riken.jp
- * extras: mirrors.sin3.sg.voxel.net
- * updates: mirrors.sin3.sg.voxel.net
- Setting up Update Process
- >
20. 清理Yum缓存内容
默 认情况下,yum将所有软件库中启用软件包的数据,连同每个子目录保存在/var/cache/yum/中,想清除启用软件库中的所有缓存文件,你要定期 运行下面这个命令,清理所有缓存内容,并确保没有任何东西在使用不必要的存储空间。我们不想给出下面这个命令的输出结果,因为我们想保持缓存数据的原来样 子。
- # yum clean all
21. 查看Yum的历史记录
想查看Yum命令的所有过去的事务,只要使用下面这个命令。
- # yum history
- Loaded plugins: fastestmirror
- ID | Login user | Date and time | Action(s) | Altered
- ------------------------------------------------------------------
- 10 | root | 2012-08-11 15:19 | Install | 3
- 9 | root | 2012-08-11 15:11 | Install | 1
- 8 | root | 2012-08-11 15:10 | Erase | 1 EE
- 7 | root | 2012-08-10 17:44 | Install | 1
- 6 | root | 2012-08-10 12:19 | Install | 2
- 5 | root | 2012-08-10 12:14 | Install | 3
- 4 | root | 2012-08-10 12:12 | I, U | 13 E<
- 3 | root | 2012-08-09 13:01 | Install | 1 >
- 2 | root | 2012-08-08 20:13 | I, U | 292 EE
- 1 | System | 2012-08-08 17:15 | Install | 560
- history list
我们试图探讨所有基本面,给出了每个Yum命令的示例。要是遗漏了与Yum命令有关的任何内容,请在此留言告知我们,以便我们根据收到的反馈,不断更新内容。