CentOS5.5 下的 YUM、软件包下载源及 AMP 升级

    一、了解 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) " 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        : 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

你可能感兴趣的:(CentOS5.5 下的 YUM、软件包下载源及 AMP 升级)