一、了解 YUM
YUM(Yellow dog Update Manager)是 RedHat 新一代的软件包管理器,目前的 RHEL、Fedora Core、CentOS 等红帽子出产的 Linux 系列发行套件都采用了这种包管理方法。软件包的安装、更新和补丁的下发都可以用 YUM 来管理。
YUM 管理软件包的依据是 repo 下载源,这是一个采用 http 协议的 Web 站点,在 /etc/yum.repos.d/ 文件夹下的 repo 文本文件中定义。repo 文件可以理解为下载源的配置文件,用于为 YUM 导航。
二、了解 repo 文件
以下是 CentOS5.5 下的 /etc/yum.repos.d/CentOS-Base.repo 文本文件的内容:
# CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
这个文件有[base]、[updates]、[addons]、[extras]、[centosplus]和[contrib]6个节的配置。
每个部分定义了节的名称、下载源镜像站点的地址,如果 mirrorlist 指向的站点无法下载,可以去掉 baseurl 前的注释试一下。gpgkey 指向了一个公钥文件,公钥用于进行信息加密、防止信息传输中的欺骗和抵赖。gpgcheck=1表示进行密钥检查,0 表示关闭它。enabled=0 表示暂时关闭本节的下载源定义,不定义的时默认认为 enabled=1。
在用 yum 命令安装、更新、检测软件包时,yum 程序会依次检查 enabled=1 的节中定义的下载源,进行软件包的管理。
如果 /etc/yum.repos.d/ 路径下有别的 repo 文件,YUM 会自动加载它,与 CentOS-Base.repo 文件同样对待。
比如,utterramblings.repo 文件:
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitk
这个文件定义了一个 AMP 安装下载源,会被 yum 程序自动加载。定义了新的下载源后,如果新的下载源里包含有目前一些软件包的更新,那么 CentOS 5.5 的“Package Updater”(软件包更新管理器,出现在桌面的右上角)就会适时检测到这些更新,并通知我们。请根据需要,谨慎选择可以更新的软件包。
三、熟悉 YUM 命令
1,检查下载源是否有更新:
# yum check-update
该命令依次连接和测试所有 repo 中定义的下载源,例如:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirrors.163.com
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
addons | 951 B 00:00
base | 2.1 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
utterramblings | 951 B 00:00
apr.i386 1.3.12-1.jason.1 utterramblings
apr-util.i386 1.3.9-1.jason.2 utterramblings
httpd.i386 2.2.15-jason.1 utterramblings
httpd-manual.i386 2.2.15-jason.1 utterramblings
mod_perl.i386 2.0.4-7.jason.2 utterramblings
mod_python.i386 3.3.1-8.jason.2 utterramblings
mod_ssl.i386 1:2.2.15-jason.1 utterramblings
mysql.i386 5.0.91-jason.2 utterramblings
mysql-devel.i386 5.0.91-jason.2 utterramblings
mysql-server.i386 5.0.91-jason.2 utterramblings
pcre.i386 8.02-1.jason.1 utterramblings
subversion.i386 1.4.6-jason.1 utterramblings
我们看到的,就是可以安装或更新软件包。可以看到 Apache、mysql 都可以安装或更新。
2,检查 PHP、MySQL、Httpd 是否有更新
例-1:yum list php mysql httpd
会分别列出 PHP、MySQL、Apache 的 Installed Packages(已安装)和 Available Packages(可用)的软件包。
例-2:yum list httpd 命令结果如下:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirrors.163.com
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
Installed Packages
httpd.i386 2.2.3-43.el5.centos installed
Available Packages
httpd.i386 2.2.15-jason.1 utterramblings
可以看到 Apache 可以由现在的 2.2.3 版本升级到 2.2.15。
例-3:yum list php* 命令可以查看所有 PHP 已安装的和可以安装/升级的模块。
(命令运行结果略)
3,几个有用的 yum 命令选项
--enablerepo=onerepo
表示需要检查[onerepo]节定义的 YUM 下载源。当 [onerepo] 节中的 enabled=0 时,这个命令很有。
比如:
yum --enablerepo=utterramblings list php*
--disablerepo=onerepo
表示禁止检查[onerepo]节定义的 YUM 下载源。
比如,禁止所有下载源,除过 c5-media:
yum --disablerepo=/* --enablerepo=c5-media list php*
–exclude=php*5.3*
表示不包括与“php*5.3*”字符串匹配的软件包,比如:
yum –exclude=php*5.3* list php
四、更新 PHP、Apache、MySQL
命令 yum update 可以一次更新所有的软件包。当然我们也可以根据需要选择更新某些软件包。
4.1 更新 PHP:
# yum update php -y
-y 参数保证在命令运行时需要yes/no确认时,都自动输入 yes,结果如下:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirrors.163.com
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
addons| 951 B 00:00
base | 2.1 kB 00:00
extras| 2.1 kB 00:00
updates | 1.9 kB 00:00
Setting up Update Process
Resolving Dependencies
--> Running transaction check
--> Processing Dependency: php = 5.1.6-27.el5 for package: php-devel
---> Package php.i386 0:5.2.13-jason.1 set to be updated
--> Processing Dependency: php-cli = 5.2.13-jason.1 for package: php
--> Processing Dependency: php-common = 5.2.13-jason.1 for package: php
--> Running transaction check
---> Package php-cli.i386 0:5.2.13-jason.1 set to be updated
--> Processing Dependency: php-common = 5.1.6-27.el5 for package: php-gd
--> Processing Dependency: php-common = 5.1.6-27.el5 for package: php-pgsql
--> Processing Dependency: php-common = 5.1.6-27.el5 for package: php-mysql
--> Processing Dependency: php-common = 5.1.6-27.el5 for package: php-pdo
--> Processing Dependency: php-common = 5.1.6-27.el5 for package: php-mbstring
--> Processing Dependency: php-common = 5.1.6-27.el5 for package: php-ldap
---> Package php-common.i386 0:5.2.13-jason.1 set to be updated
---> Package php-devel.i386 0:5.2.13-jason.1 set to be updated
--> Running transaction check
---> Package php-gd.i386 0:5.2.13-jason.1 set to be updated
---> Package php-ldap.i386 0:5.2.13-jason.1 set to be updated
---> Package php-mbstring.i386 0:5.2.13-jason.1 set to be updated
---> Package php-mysql.i386 0:5.2.13-jason.1 set to be updated
---> Package php-pdo.i386 0:5.2.13-jason.1 set to be updated
---> Package php-pgsql.i386 0:5.2.13-jason.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================
Package Arch Version Repository Size
==============================================================
Updating:
php i386 5.2.13-jason.1 utterramblings3.6 M
Updating for dependencies:
php-cli i386 5.2.13-jason.1 utterramblings 2.6 M
php-common i386 5.2.13-jason.1 utterramblings 510 k
php-devel i386 5.2.13-jason.1 utterramblings 556 k
php-gd i386 5.2.13-jason.1 utterramblings 331 k
php-ldap i386 5.2.13-jason.1 utterramblings 59 k
php-mbstring i386 5.2.13-jason.1 utterramblings 1.3 M
php-mysql i386 5.2.13-jason.1 utterramblings 266 k
php-pdo i386 5.2.13-jason.1 utterramblings 164 k
php-pgsql i386 5.2.13-jason.1 utterramblings 159 k
Transaction Summary
=============================================================
Install 0 Package(s)
Upgrade 10 Package(s)
Total download size: 9.5 M
Downloading Packages:
(1/10): php-ldap-5.2.13-jason.1.i386.rpm | 59 kB 00:00
(2/10): php-pgsql-5.2.13-jason.1.i386.rpm | 159 kB 00:04
(3/10): php-pdo-5.2.13-jason.1.i386.rpm | 164 kB 00:02
(4/10): php-mysql-5.2.13-jason.1.i386.rpm | 266 kB 00:02
(5/10): php-gd-5.2.13-jason.1.i386.rpm | 331 kB 00:02
(6/10): php-common-5.2.13-jason.1.i386.rpm | 510 kB 00:04
(7/10): php-devel-5.2.13-jason.1.i386.rpm | 556 kB 00:04
(8/10): php-mbstring-5.2.13-jason.1.i386.rpm | 1.3 MB 00:07
(9/10): php-cli-5.2.13-jason.1.i386.rpm | 2.6 MB 00:14
(10/10): php-5.2.13-jason.1.i386.rpm | 3.6 MB 00:26
----------------------------------------------------------------
Total 133 kB/s | 9.5 MB 01:13
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 0d4306ef
utterramblings/gpgkey | 1.3 kB 00:00
Importing GPG key 0x0D4306EF "Jason Litka (http://www.jasonlitka.com)
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : php-common 1/20
warning: /etc/php.ini created as /etc/php.ini.rpmnew
Updating : php-pdo 2/20
Updating : php-cli 3/20
Updating : php 4/20
Updating : php-ldap5/20
Updating : php-pgsql 6/20
Updating : php-gd 7/20
Updating : php-mysql 8/20
Updating : php-mbstring 9/20
Updating : php-devel 10/20
Cleanup : php 11/20
Cleanup : php-ldap 12/20
Cleanup : php-pgsql 13/20
Cleanup : php-gd 14/20
Cleanup : php-common 15/20
Cleanup : php-pdo16/20
Cleanup : php-mysql 17/20
Cleanup : php-mbstring 18/20
Cleanup : php-cli19/20
Cleanup : php-devel 20/20
Updated:
php.i386 0:5.2.13-jason.1
Dependency Updated:
php-cli.i386 0:5.2.13-jason.1 php-common.i386 0:5.2.13-jason.1
php-devel.i386 0:5.2.13-jason.1 php-gd.i386 0:5.2.13-jason.1
php-ldap.i386 0:5.2.13-jason.1 php-mbstring.i386 0:5.2.13-jason.1
php-mysql.i386 0:5.2.13-jason.1 php-pdo.i386 0:5.2.13-jason.1
php-pgsql.i386 0:5.2.13-jason.1
Complete!
可以看到,一些被依赖的包也都被自动安装上了。看来 YUM 程序确实是很完善的,
更新其它一些 PHP 的扩展模块,例如 php-gd、php-mbstring、php-mcrypt 等,可以一次运行:
# yum install php-gd php-mbstring php-mcrypt
也可以分别运行:
# yum install php-gd
# yum install php-mbstring
# yum install php-mcrypt
这样,就会下载 php-gd.so、php-mbstring.so、php-mcrypt.so 以及依赖的 *.so 模块文件到文件夹 /usr/lib/php/modules/ 下,并在 /etc/php.d/ 文件夹下生成了对应的配置文件 gd.ini、mbstring.ini、mcrypt.ini。
gd.ini 文件内容为:
; Enable gd extension module
extension=gd.so
mbstring.ini、mcrypt.ini 文件内容与 gd.ini 类似。注意这和 Windows 下 php.ini 的配置是不同的。
4.2 更新 Apache:
# yum update httpd -y
(运行结果略)
4.3 更新 MySQL:
# yum update mysql -y
(运行结果略)
作者:张庆(网眼) 西安 PHP 教育培训中心 2010-8-22
来自“网眼视界”:http://blog.why100000.com
作者微博:http://t.qq.com/zhangking
“十万个为什么”电脑学习网:http://www.why100000.com