翻译自:20 Linux YUM (Yellowdog Updater, Modified) Commands for Package Management
前言
本篇文章将介绍如何使用RedHat开发的YUM(Yellowdog Updater Modified)工具,在Linux系统上安装,更新,删除,查找,管理软件包和软件仓库。
yum简介
yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http 或ftp 站点,也可以是本地软件池,但必须包含rpm 的header,header 包括了rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等。正是收集了这些header 并加以分析,才能自动化地完成余下的任务。
yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。这一点上,yum 和apt 相同。yum 可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。
yum命令使用示例
使用YUM安装包
要安装名为Firefox 14的软件包,只需运行以下命令,它将自动查找并安装Firefox所需的所有依赖项。
# yum install firefox
Loaded plugins: fastestmirror
Dependencies Resolved ================================================================================================
Package Arch Version Repository Size
================================================================================================
Updating:
firefox i686 10.0.-.el6.centos updates M
Updating for dependencies:
xulrunner i686 10.0.-.el6.centos updates M Transaction Summary
================================================================================================
Install Package(s)
Upgrade Package(s) Total download size: M
Is this ok [y/N]: y
Downloading Packages:
(/): firefox-10.0.-.el6.centos.i686.rpm | MB :
(/): xulrunner-10.0.-.el6.centos.i686.rpm | MB :
------------------------------------------------------------------------------------------------
Total kB/s | MB : Updated:
firefox.i686 :10.0.-.el6.centos Dependency Updated:
xulrunner.i686 :10.0.-.el6.centos Complete!
在系统上安装任何软件包之前,上述命令将询问确认。如果要在不要求任何确认的情况下自动安装软件包,请使用选项-y,如下例所示。
yum -y install firefox
使用YUM删除包
删除包时,如果连依赖一起删除,只需要执行以下命令
yum remove firefox
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 :10.0.-.el6.centos set to be erased
--> Finished Dependency Resolution Dependencies Resolved ====================================================================================================
Package Arch Version Repository Size
====================================================================================================
Removing:
firefox i686 10.0.-.el6.centos @updates M Transaction Summary
====================================================================================================
Remove Package(s)
Reinstall Package(s)
Downgrade 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.-.el6.centos.i686 / Removed:
firefox.i686 :10.0.-.el6.centos Complete!
同样,上面的命令会在删除包之前询问确认。要禁用确认提示,只需添加选项-y,如下所示。
yum -y remove firefox
yum remove有个弊端,例如yum remove -y vim,他只会匹配vim-xxx.rpm这个包,他的依赖包并不会被卸载。比如vim-minimal-7.4.160-4.el7.x86_64,必须单独写在才可以yum -y remove vim-minimal
使用YUM更新包
假设你有一个旧版本的MySQL,你希望将其更新为最新的稳定版本。只需运行以下命令,它将自动解决所有依赖项问题并安装它们。
# yum update mysql
Loaded plugins: fastestmirror
Dependencies Resolved ============================================================================================================
Package Arch Version Repository Size
============================================================================================================
Updating:
vsftpd i386 2.0.-.el5_8. updates k Transaction Summary
============================================================================================================
Install Package(s)
Upgrade Package(s) Total size: 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 /
Cleanup : vsftpd / Updated:
vsftpd.i386 :2.0.-.el5_8. Complete!
使用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 .3p2-.el5_6. installed
Available Packages .3p2-.el5
为了使您的搜索更准确,请使用其版本定义包名称,如果你知道的话。例如,搜索包的特定版本openssh-4.3p2
# yum list openssh-.3p2
使用YUM搜索包
如果你不记得包的确切名称,请使用search参数搜索所有可用包以匹配你指定的包的名称。
# 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
使用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.
Release : .el5.centos
Size : M
Repo : updates
Summary : Mozilla Firefox Web browser
URL : http://www.mozilla.org/projects/firefox/
License : MPLv1. or GPLv2+ or LGPLv2+
Description: Mozilla Firefox is an open-source web browser, designed for standards
: compliance, performance and portability.
使用YUM列出所有可用包
要列出Yum数据库中的所有可用包,请使用以下命令。
# yum list | less
使用YUM列出所有已安装的软件包
要列出系统上所有已安装的软件包,只需发出以下命令,它将显示所有已安装的软件包。
# yum list installed | less
找出文件属于哪个软件包
provides参数用于查找特定文件所属的包。例如,如果您想知道包含/etc/httpd/conf/httpd.conf文件的包名称。
# yum provides /etc/httpd/conf/httpd.conf
Loaded plugins: fastestmirror
httpd-2.2.-.el5.centos.i386 : Apache HTTP Server
Repo : base
Matched from:
Filename : /etc/httpd/conf/httpd.conf httpd-2.2.-.el5.centos..i386 : Apache HTTP Server
Repo : updates
Matched from:
Filename : /etc/httpd/conf/httpd.conf httpd-2.2.-.el5.centos.i386 : Apache HTTP Server
Repo : updates
Matched from:
Filename : /etc/httpd/conf/httpd.conf httpd-2.2.-.el5.centos..i386 : Apache HTTP Server
Repo : installed
Matched from:
Other : Provides-match: /etc/httpd/conf/httpd.conf
使用whatprovides 效果是一样的
使用Yum检查可用更新
要查找系统上已安装的软件包有多少可用更新,请检查以下命令。
# yum check-update
使用Yum更新系统
如下命令将为系统安装所有最新补丁和安全更新。
# yum update
列出所有可用的Group Packages
在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
安装Group Packages
要安装特定的软件包组,我们使用参数groupinstall。例如,要安装“MySQL数据库”,只需执行以下命令即可。
# yum groupinstall 'MySQL Database'
Dependencies Resolved =================================================================================================
Package Arch Version Repository Size
=================================================================================================
Updating:
unixODBC i386 2.2.-.el5 base k
Installing for dependencies:
unixODBC-libs i386 2.2.-.el5 base k Transaction Summary
=================================================================================================
Install Package(s)
Upgrade Package(s) Total size: 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 /
Updating : unixODBC /
Cleanup : unixODBC / Dependency Installed:
unixODBC-libs.i386 :2.2.-.el5 Updated:
unixODBC.i386 :2.2.-.el5 Complete!
更新Group Packages
使用参数groupupdate
# yum groupupdate 'DNS Name Server' Dependencies Resolved
================================================================================================================
Package Arch Version Repository Size
================================================================================================================
Updating:
bind i386 :9.3.-.P1.el5_8. updates k
bind-chroot i386 :9.3.-.P1.el5_8. updates k
Updating for dependencies:
bind-libs i386 :9.3.-.P1.el5_8. updates k
bind-utils i386 :9.3.-.P1.el5_8. updates k Transaction Summary
================================================================================================================
Install Package(s)
Upgrade 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 /
Updating : bind /
Updating : bind-chroot /
Updating : bind-utils /
Cleanup : bind /
Cleanup : bind-chroot /
Cleanup : bind-utils /
Cleanup : bind-libs / Updated:
bind.i386 :9.3.-.P1.el5_8. bind-chroot.i386 :9.3.-.P1.el5_8. Dependency Updated:
bind-libs.i386 :9.3.-.P1.el5_8. bind-utils.i386 :9.3.-.P1.el5_8. Complete!
移除Group Packages
使用参数groupremove
# yum groupremove 'DNS Name Server' Dependencies Resolved ===========================================================================================================
Package Arch Version Repository Size
===========================================================================================================
Removing:
bind i386 :9.3.-.P1.el5_8. installed 2.1 M
bind-chroot i386 :9.3.-.P1.el5_8. installed 0.0 Transaction Summary
===========================================================================================================
Remove Package(s)
Reinstall Package(s)
Downgrade 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 /
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave
Erasing : bind-chroot / Removed:
bind.i386 :9.3.-.P1.el5_8. bind-chroot.i386 :9.3.-.P1.el5_8. Complete!
列出已启用的Yum仓库
要列出系统中所有已启用的Yum存储库,请使用以下选项。
# yum repolist repo id repo name status
base CentOS- - Base enabled: ,
epel Extra Packages for Enterprise Linux - i386 enabled: ,
extras CentOS- - Extras enabled:
mod-pagespeed mod-pagespeed enabled:
rpmforge RHEL - RPMforge.net - dag enabled: ,
updates CentOS- - Updates enabled:
repolist: ,
列出所有已启用和已禁用的Yum存储库
# yum repolist all repo id repo name status
C5.-base CentOS-5.0 - Base disabled
C5.-centosplus CentOS-5.0 - Plus disabled
C5.-extras CentOS-5.0 - Extras disabled
base CentOS- - Base enabled: ,
epel Extra Packages for Enterprise Linux - i386 enabled: ,
extras CentOS- - Extras enabled:
repolist: ,
从特定yum仓库安装包
要从特定的yum仓库(已启用或已禁用)安装特定软件包,必须在yum命令中使用-enablerepo选项。 例如,要安装PhpMyAdmin 3.5.2软件包,只需执行命令即可。
# yum --enablerepo=epel install phpmyadmin Dependencies Resolved
=============================================================================================
Package Arch Version Repository Size
=============================================================================================
Installing:
phpMyAdmin noarch 3.5.-.el6 epel 4.2 M Transaction Summary
=============================================================================================
Install Package(s) Total download size: 4.2 M
Installed size: M
Is this ok [y/N]: y
Downloading Packages:
phpMyAdmin-3.5.-.el6.noarch.rpm | 4.2 MB :
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : phpMyAdmin-3.5.-.el6.noarch /
Verifying : phpMyAdmin-3.5.-.el6.noarch / Installed:
phpMyAdmin.noarch :3.5.-.el6 Complete!
交互式yum shell
Yum提供自定义shell,可以在其中执行多个命令。
# 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
>
清除Yum缓存
默认情况下,yum再/var/cache/yum及其子目录下保存已启用Yum仓库中的rpm包,要清除这些缓存下来的rpm包,需要定期运行以下命令来清理所有缓存并确保 没有什么不必要的空间正在使用。
# yum clean all
查看Yum历史
查看Yum命令的历史纪录
# yum history Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
| root | -- : | Install |
| root | -- : | Install |
| root | -- : | Erase | EE
| root | -- : | Install |
| root | -- : | Install |
| root | -- : | Install |
| root | -- : | I, U | E<
| root | -- : | Install | >
| root | -- : | I, U | EE
| System | -- : | Install |
history list