红联Linux门户
Linux帮助

CentOS 5.5下的YUM、软件包下载源及AMP升级

发布时间:2015-02-23 15:56:24来源:linux网站作者:张庆

一、了解 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.1utterramblings
httpd-manual.i386 2.2.15-jason.1utterramblings
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.2utterramblings
mysql-devel.i386  5.0.91-jason.2utterramblings
mysql-server.i386 5.0.91-jason.2utterramblings
pcre.i386  8.02-1.jason.1utterramblings
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.CentOSinstalled
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

PackageArch   Version  Repository  Size
Updating:
php i386   5.2.13-jason.1   utterramblings3.6 M
Updating for dependencies:
php-clii386   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-pdoi386   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) <jasonlitka@verizon.net>" from http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
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: php11/20
Cleanup: php-ldap  12/20
Cleanup: php-pgsql 13/20
Cleanup: php-gd 14/20
Cleanup: php-common15/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
(运行结果略)