BCLinux云主机用户使用手册(二)


  • BCLinux Developers

    本文将介绍BCLinux云主机的安装和管理软件包的方法

    1 安装和管理软件包

    YUM 是 BCLinux 默认的软件包管理器,使用它可以查询指定软件包的元信息,从软件仓库下载软件包,安装和卸载软件包,升级指定软件包甚至整个系统等。并且,在做这些操作的时候,YUM 会自动获取软件包的依赖信息,在需要的时候自动安装依赖的软件包。

    YUM 可以配置额外的 YUM 源(软件仓库),并且提供众多的插件以强化和扩展 YUM 的功能。YUM 能够完成绝大部分 RPM 提供的功能,并且使用起来更加便捷,因为 YUM 使用的是在线而非离线的包管理机制。

    1.1 检查和更新软件包

    1.1.1 检查更新

    如果想了解当前系统上有哪些软件包可以更新,可以执行命令:

    ~]# yum check-update
    bash.x86_64                                4.1.2-15.el6_5.2                           updates
    ca-certificates.noarch                     2014.1.98-65.0.el6_5                       updates
    coreutils.x86_64                           8.4-31.el6_5.2                             updates
    coreutils-libs.x86_64                      8.4-31.el6_5.2                             updates
    cpio.x86_64                                2.10-12.el6_5                              updates
    curl.x86_64                                7.19.7-37.el6_5.3                          updates
    

    各字段的含义如下:

    • bash: 软件包名称
    • x86_64: 软件包适用的 CPU 架构
    • 4.1.2-15: 软件包的版本
    • updates: 软件可以升级

    1.1.1.2 更新软件包

    当需要更新软件包的时候,可以选择只更新一个软件包,多个软件包,或者所有的软件包。如果需要更新的软件包的依赖包也可以更新,那么依赖包会自动更新。

    如果希望只更新一个软件包,可以执行:

    ~]# yum update package_name
    Transaction Summary
    ================================================================================================
    Install       1 Package(s)
    Upgrade      55 Package(s)
    
    Total download size: 91 M
    Is this ok [y/N]: 
    

    YUM 会显示更新的细节信息,并提示用户确认是否升级。默认情况下,YUM 以交互式的方式运行。如果很明确一定会升级,可以使用 -y 选项,YUM 将不再提示,直接安装所需的软件包。

    如果希望更新系统所有的软件包,可以执行:

    ~]# yum update
    

    1.2单个软件包和软件包组

    1.2.1 搜寻软件包

    如果希望搜寻某个软件包是否存在,可以执行命令:

    ~]# yum search term…
    

    可以有多个关键字,彼此用空格分隔。

    1.2.2 列出软件包

    如果希望获取软件包的元信息,比如软件包所属组,软件包所属软件源等,可以执行命令:

    ~]# yum list glob_expression…
    

    列出的软件包既包括系统已经安装的软件包,也包括软件源里有但尚未安装的软件包。

    如果希望列出所有系统可用的软件包,包括已经安装的和未安装的,可以执行:

    ~]# yum list all
    

    如果希望列出所有已经安装的软件包,可以执行:

    ~]# yum list installed
    

    如果希望列出所有的软件包组,可以执行:

    ~]# yum grouplist
    

    如果希望列出所有的软件源,可以执行:

    ~]# yum repolist
    

    1.2.3 显示软件包元信息

    如果希望显示软件包的元信息,可以执行:

    ~]# yum info abrt
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Available Packages
    Name        : abrt
    Arch        : x86_64
    Version     : 2.0.8
    Release     : 21.el6.centos
    Size        : 208 k
    Repo        : base
    Summary     : Automatic bug detection and reporting tool
    URL         : https://fedorahosted.org/abrt/
    License     : GPLv2+
    Description : abrt is a tool to help users to detect defects in applications and
            : to create a bug report with all informations needed by maintainer to fix it.
            : It uses plugin system to extend its functionality.
    

    如果希望显示软件包包含哪些文件,可以执行:

      repoquery --list package_name
    

    1.2.4 安装软件包

    YUM 不但可以执行单个软件包的安装,也可以是多个软件包的安装,甚至是一个软件组的安装。

    如果你希望安装单个软件包,可以执行命令:

    ~]# yum install package_name
    

    如果希望安装多个软件包,可以执行命令:

    ~]# yum install package_name package_name…
    

    软件包名称也可以使用模式匹配,比如:

    ~]# ~]# yum install perl-Crypt-\*
    

    如果仅仅知道相应二进制文件的全路径名称,而不知道对应的软件包名,可以执行命令:

    ~]# yum install /usr/sbin/named
    

    1.2.5 安装软件包组

    软件包组类似于单个软件包,本身没有特别的含义,仅仅代表一类软件的统称。所以,如果执行安装软件包组,所有相关的软件包会被安装。

    软件包组包含一个名称和一个组 ID。yum grouplist -v 命令可以列出所有软件包组的组名以及组 ID。比如:

    yum -v grouplist kde\*
    Loading "fastestmirror" plugin
    Config time: 0.009
    Yum Version: 3.2.29
    Setting up Group Process
    Loading mirror speeds from cached hostfile
    rpmdb time: 0.001
    group time: 0.184
    Available Groups:
       KDE Desktop (kde-desktop)
    Done
    

    如果希望安装一个软件包组,可以执行:

    ~]# yum groupinstall group_name
    

    或者

    ~]# yum groupinstall groupid
    

    1.2.6 卸载安软件包

    YUM 也可以执行单个软件包,多个软件包,甚至是一个软件组的卸载。

    如果你希望卸载单个软件包,可以执行命令:

    ~]# yum remove package_name…
    

    如果希望卸载多个软件包,可以执行命令:

    ~]# yum remove package_name package_name…
    

    注意:YUM 不能卸载被其它软件包依赖的软件包,除非连其它软件包一起卸载。

    2.2.7 卸载软件包组

    如果希望卸载一个软件包组,可以执行:

    ~]# yum groupinstall group_name
    

    或者

    ~]# yum groupinstall groupid
    

    注意:当通过 YUM 卸载软件包组的时候,YUM 会卸载软件包组的所有软件包,即使有卸载的软件包还是其它软件包组的成员或者有其它已经安装的软件包仍然依赖卸载的软件包。如果不希望这样的行为模式,可以添加配置 groupremove_leaf_only=1 到 /etc/yum.conf 的 main 段。

    2.3 YUM 操作记录

    yum history 命令可以按照操作时序浏览 YUM 的操作记录,包括操作的日期和时间,操作的软件包(组),操作的结果是成功还是失败,甚至可以用来撤销或重新执行某个操作。

    1.3.1 列出操作记录

    如果希望列出 YUM 最近的操作记录,可以执行:

    ~]#  yum history
    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    -------------------------------------------------------------------------------
        32 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        31 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        30 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        29 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        28 | root <root>              | 2016-02-25 11:30 | Install        |    1   
        27 | root <root>              | 2016-02-25 11:30 | Erase          |    1   
        26 | root <root>              | 2016-02-25 11:30 | Install        |    1   
        25 | root <root>              | 2016-02-25 11:27 | Erase          |    1   
        24 | root <root>              | 2016-02-25 11:24 | Install        |    1   
        23 | root <root>              | 2016-02-25 11:24 | Erase          |    1   
        22 | root <root>              | 2016-02-25 11:20 | Install        |    1   
        21 | root <root>              | 2016-02-25 11:19 | Erase          |    1   
        20 | root <root>              | 2016-02-25 11:19 | Install        |    1   
        19 | root <root>              | 2016-02-25 11:19 | Erase          |    1   
        18 | root <root>              | 2016-02-25 11:19 | Install        |    1   
        17 | root <root>              | 2016-02-25 11:18 | Erase          |    1   
        16 | root <root>              | 2016-02-25 11:18 | Install        |    1   
        15 | root <root>              | 2016-02-25 11:12 | Install        |   47   
        14 | root <root>              | 2016-02-25 11:12 | Install        |    1   
        13 | root <root>              | 2016-02-25 11:12 | Update         |    2   
    history list
    
    或者
    
    ~]#  yum history
    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    -------------------------------------------------------------------------------
        32 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        31 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        30 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        29 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        28 | root <root>              | 2016-02-25 11:30 | Install        |    1   
        27 | root <root>              | 2016-02-25 11:30 | Erase          |    1   
        26 | root <root>              | 2016-02-25 11:30 | Install        |    1   
        25 | root <root>              | 2016-02-25 11:27 | Erase          |    1   
        24 | root <root>              | 2016-02-25 11:24 | Install        |    1   
        23 | root <root>              | 2016-02-25 11:24 | Erase          |    1   
        22 | root <root>              | 2016-02-25 11:20 | Install        |    1   
        21 | root <root>              | 2016-02-25 11:19 | Erase          |    1   
        20 | root <root>              | 2016-02-25 11:19 | Install        |    1   
        19 | root <root>              | 2016-02-25 11:19 | Erase          |    1   
        18 | root <root>              | 2016-02-25 11:19 | Install        |    1   
        17 | root <root>              | 2016-02-25 11:18 | Erase          |    1   
        16 | root <root>              | 2016-02-25 11:18 | Install        |    1   
        15 | root <root>              | 2016-02-25 11:12 | Install        |   47   
        14 | root <root>              | 2016-02-25 11:12 | Install        |    1   
        13 | root <root>              | 2016-02-25 11:12 | Update         |    2   
    history list
    

    输出各列的含义如下:

    • ID:操作 ID。
    • Login user:如果 YUM 操作是在登陆会话执行,就显示会话的登陆用户全名;如果不是,则显示 System <unset> 。
    • Date and time:操作执行的日期和时间。
    • Action(s) :具体的操作类型。
    • Altered:受到影响的软件包数量。

    其中,对于 Action(s) 来说,可能的操作类型包括:

    动作 简称 描述
    Downgrade D 至少有一个软件包被降级。
    Erase E 至少有一个软件包被卸载。
    Install I 至少有一个软件包被安装。
    Obsoleting O 至少有一个软件包被标记为过时。
    Reinstall R 至少有一个软件包被重装。
    Update U 至少有一个软件包被更新。

    对于 Altered,可能的取值包括:

    符号 描述
    < 在 YUM 操作之前,rpmdb 已经在 YUM 外部被更新。
    > 在 YUM 操作之后,rpmdb 已经在 YUM 外部被更新。
    * 操作失败。
    # 操作成功,但是 YUM 返回了非零值。
    E 操作成功,但是有 ERROR 或 WARNNING 显示。
    P 操作成功,但是 rpmdb 有问题。
    s 操作成功,但是使用了 --skip-broken 选项,因此某些软件包可能被略过。

    如果希望列出 YUM 全部的操作记录,可以执行:

    ~]#  yum history list all
    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    -------------------------------------------------------------------------------
        32 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        31 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        30 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        29 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        28 | root <root>              | 2016-02-25 11:30 | Install        |    1   
        27 | root <root>              | 2016-02-25 11:30 | Erase          |    1   
        26 | root <root>              | 2016-02-25 11:30 | Install        |    1   
        25 | root <root>              | 2016-02-25 11:27 | Erase          |    1   
        24 | root <root>              | 2016-02-25 11:24 | Install        |    1   
        23 | root <root>              | 2016-02-25 11:24 | Erase          |    1   
        22 | root <root>              | 2016-02-25 11:20 | Install        |    1   
        21 | root <root>              | 2016-02-25 11:19 | Erase          |    1   
        20 | root <root>              | 2016-02-25 11:19 | Install        |    1   
        19 | root <root>              | 2016-02-25 11:19 | Erase          |    1   
        18 | root <root>              | 2016-02-25 11:19 | Install        |    1   
        17 | root <root>              | 2016-02-25 11:18 | Erase          |    1   
        16 | root <root>              | 2016-02-25 11:18 | Install        |    1   
        15 | root <root>              | 2016-02-25 11:12 | Install        |   47   
        14 | root <root>              | 2016-02-25 11:12 | Install        |    1   
        13 | root <root>              | 2016-02-25 11:12 | Update         |    2   
        12 | root <root>              | 2016-02-25 11:08 | Install        |    1   
        11 | root <root>              | 2016-02-25 11:05 | Install        |   26   
        10 | root <root>              | 2015-11-25 15:10 | Update         |    1 EE
         9 | root <root>              | 2015-09-02 17:52 | Erase          |    1   
         8 | root <root>              | 2015-09-02 16:37 | Install        |   28   
         7 | root <root>              | 2015-09-02 16:36 | I, U           |   28   
         6 | root <root>              | 2015-09-02 16:33 | Install        |    1   
         5 | root <root>              | 2015-09-02 16:32 | Install        |    2   
         4 | root <root>              | 2015-09-02 16:27 | Reinstall      |    1   
         3 | root <root>              | 2015-09-02 16:23 | Install        |    1   
         2 | root <root>              | 2015-09-02 16:21 | Install        |    1   
         1 | System <unset>           | 2015-09-02 16:02 | Install        |  209   
    history list
    

    如果希望列出指定范围的 YUM 操作记录,可以执行命令:

    ~]#  yum history list 10..12
    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    -------------------------------------------------------------------------------
        12 | root <root>              | 2016-02-25 11:08 | Install        |    1   
        11 | root <root>              | 2016-02-25 11:05 | Install        |   26   
        10 | root <root>              | 2015-11-25 15:10 | Update         |    1 EE
    history list
    

    如果希望仅仅列出指定软件包的操作记录,可以执行命令:

    ~]#  yum history list wget curl
    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    -------------------------------------------------------------------------------
        32 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        31 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        30 | root <root>              | 2016-02-25 13:09 | Install        |    1   
        29 | root <root>              | 2016-02-25 13:09 | Erase          |    1   
        13 | root <root>              | 2016-02-25 11:12 | Update         |    2   
        12 | root <root>              | 2016-02-25 11:08 | Install        |    1   
         1 | System <unset>           | 2015-09-02 16:02 | Install        |  209   
    history list
    

    1.3.2 检查操作记录

    如果希望获取指定操作记录的详细信息,可以执行命令:

    ~]#  yum history info 32
    aded plugins: fastestmirror
    Transaction ID : 32
    Begin time     : Thu Feb 25 13:09:30 2016
    Begin rpmdb    : 342:50a94dbc9a5145354a82bd418f8adb7c82141f66
    End time       :            13:09:32 2016 (2 seconds)
    End rpmdb      : 343:03b0a04db38967aa8b06e6affaa4639d573069f5
    User           : root <root>
    Return-Code    : Success
    Command Line   : install wget -y
    Transaction performed with:
        Installed     rpm-4.8.0-37.el6.x86_64                       @anaconda-BigCloudEnterpriseLinux-201311272149.x86_64/6.5
        Installed     yum-3.2.29-40.el6.centos.noarch               @anaconda-BigCloudEnterpriseLinux-201311272149.x86_64/6.5
        Installed     yum-plugin-fastestmirror-1.1.30-14.el6.noarch @anaconda-BigCloudEnterpriseLinux-201311272149.x86_64/6.5
    Packages Altered:
        Install wget-1.12-1.11.el6_5.x86_64 @updates
    history info
    

    操作记录的 ID 是一个可选参数,如果不给出,YUM 自动显示最后一个 YUM 操作的详细信息。或者也可以给出指定范围 YUM 操作记录的详细信息,比如:

    ~]#  yum history info 31..32
    Loaded plugins: fastestmirror
    Transaction ID : 31..32
    Begin time     : Thu Feb 25 13:09:24 2016
    Begin rpmdb    : 343:03b0a04db38967aa8b06e6affaa4639d573069f5
    End time       :            13:09:32 2016 (8 seconds)
    End rpmdb      : 343:03b0a04db38967aa8b06e6affaa4639d573069f5
    User           : root <root>
    Return-Code    : Success
    Command Line   : remove wget -y
    Command Line   : install wget -y
    Transaction performed with:
        Installed     rpm-4.8.0-37.el6.x86_64                       @anaconda-BigCloudEnterpriseLinux-201311272149.x86_64/6.5
        Installed     yum-3.2.29-40.el6.centos.noarch               @anaconda-BigCloudEnterpriseLinux-201311272149.x86_64/6.5
        Installed     yum-plugin-fastestmirror-1.1.30-14.el6.noarch @anaconda-BigCloudEnterpriseLinux-201311272149.x86_64/6.5
    Packages Altered:
        Reinstall wget-1.12-1.11.el6_5.x86_64 @updates
    history info
    

    1.3.3 撤销和重复执行操作

    如果希望撤销某条操作,可以执行命令:

    ~]#  yum history undo id
    

    如果希望重复某条操作,可以执行命令:

    ~]#  yum history redo id
    

    如果需要管理多台同样的系统,可以在一台系统上执行需要的 YUM 操作,并把操作细节记录在文件中。在经过测试以后,可以在其余的系统上重复执行文件记录的操作。YUM 提供这样的记录和回放功能。

    为了记录 YUM 操作,可以执行命令:

    ~]#  yum -q history addon-info id saved_tx > file_name
    

    为了回放保存的操作记录,可以执行命令:

    ~]#  yum load-transaction file_name
    

    注意: 两个系统的 rpmdb 版本必须一致,可以执行 yum version nogroups 命令检查 rpmdb 的版本。

    1.3.4 意外处理

    如果在执行 YUM 操作的时候,因为断电或者系统崩溃等原因,导致YUM 操作没能执行完成。YUM 提供了工具可以在这种情况下清理或恢复操作执行。

    如果希望恢复 YUM 的执行,可以执行命令:

    ~]#  yum-complete-transaction
    

    该命令会检索未完成或意外退出的 YUM 操作,并尝试恢复执行。默认情况下,这类操作记录会存放在 /var/lib/yum/transaction-all 和 /var/lib/yum/transaction-done 文件。

    如果希望清理而不是恢复 YUM 的执行,可以执行命令:

    ~]#  yum-complete-transaction --cleanup-only
    

    1.3.5 使用新的 YUM 操作日志

    YUM 的操作日志都存放在一个 SQLite 数据库中。

    如果希望抛弃已有的操作记录,启用一个全新的操作记录环境,可以执行命令:

    ~]#  yum history new
    

    该命令会在 /var/lib/yum/history/ 创建一个新的 SQLite 数据库文件,同时旧的数据库文件被保存。但是,只要存在新的数据库文件,旧的数据库文件就永远不会被访问。

    2.4 配置 YUM

    YUM 以及 YUM 相关工具的配置信息在文件 /etc/yum.conf 中。该文件包括一个 [main] 小节,用于设置 YUM 的全局参数;一个或多个 [repository] 小节,用于设置 YUM 源。针对 YUM 源的配置,还可以有另外一种方式,就是每个 YUM 源放在一个独立的 .repo 后缀的配置文件中,然后把所有的配置文件放在 /etc/yum.repos.d/ 目录即可。

    注意:/etc/yum.conf 中的 YUM 源配置优先级高于 /etc/yum.repos.d/ 目录里的 .repo 配置文件。

    1.4.1 [main] 小节的配置

    YUM 的 主配置文件 /etc/yum.conf 只包括一个 [main] 小节,该小节涵盖多个键值对,有些用来配置 YUM 的操作行为,其余的则会影响 YUM 是如何处理 YUM 源的。比如:

    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=0
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=5
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release
    
    #  This is the default, if you make this bigger yum won't see if the metadata
    # is newer on the remote and so you'll "gain" the bandwidth of not having to
    # download the new metadata and "pay" for it by yum not having correct
    # information.
    #  It is esp. important, to have correct metadata, for distributions like
    # Fedora which don't keep old packages around. If you don't like this checking
    # interupting your command line usage, it's much better to have something
    # manually check the metadata once an hour (yum-updatesd will do this).
    # metadata_expire=90m
    
    # PUT YOUR REPOS HERE OR IN separate files named file.repo
    # in /etc/yum.repos.d
    

    各个选项的含义如下:

    • assumeyes=value

    value 可以是 0 或者 1。0 表示重要操作提示要求确认,这也是默认选项;1 表示不要求确认,等同于命令行选项 --yes 或者 -y。

    • cachedir=directory

    设置 YUM 的缓存文件和数据库文件存储路径,这里必须是绝对路径。默认情况下,YUM 使用 /var/cache/yum/$basearch/$releasever 存放缓存文件和数据库文件。

    • debuglevel=value

    value 是一个 0 到 10 之间的整数。数值越大,YUM 输出的调试信息越多。0 代表禁止调试信息。默认值是 2。

    • exactarch=value

    value 可以是 0 或者 1。0 表示升级包的时候不考虑具体的 CPU 架构;1 表示考虑架构。当设置为 1 的时候,如果系统已经安装某个包的 i386 版本,升级的时候就不会考虑 i686 的版本。默认值是 1。

    • exclude=package_name [more_package_names]

    在安装或升级的时候排除某些软件包。可以指定多个软件包,彼此用空格分开即可。也可是使用匹配模式。

    • gpgcheck=value

    value 可以是 0 或者 1。0 表示在所有的 YUM 源,也包括本地软件包,禁用 GPG 签名认证;1 表示启用。默认值是 1。该参数既可以在 /etc/yum.conf 配置,也可以在每个独立的 YUM 源配置,并且独立 YUM 源的配置会覆盖 /etc/yum.conf 的全局配置。

    • roupremove_leaf_only=value

    value 可以是 0 或者 1。0 表示当卸载软件包组的时候,不检查包依赖关系,卸载所有软件包组的所有软件包。1 表示检查,也就是说在卸载软件包组的时候,仅仅卸载那些不再被其它软件包或软件包组依赖的软件包。默认值是 0。

    • installonlypkgs=space separated list of packages

    这里是一个空格分隔的软件包列表,所有列出的软件包只能通过 install 的方式安装,而不支持 update。默认的软件包包括:kernel, kernel-bigmem, kernel-enterprise, kernel-smp, kernel-modules, kernel-debug, kernel-unsupported, kernel-source, kernel-devel, kernel-PAE, kernel-PAE-debug 等。通常情况下,没有必要自己维护这个列表,如果确实需要自定义的话,新的列表必须包含上述系统默认的软件包。

    • installonly_limit=value

    value 是一个正整数,表示 installonlypkgs 列出的软件包最多可以同时安装的数目。默认值是 3。

    • keepcache=value

    value 可以是 0 或者 1。0 表示软件包成功安装以后不保留头文件和软件包缓存。1 表示保留。

    • logfile=file_name

    YUM 操作记录的日志文件。默认是 /var/log/yum.log。

    • multilib_policy=value

    value 可以是 best 或者 all。best 表示安装同 CPU 架构的软件包;all 表示安装所有 CPU 架构的软件包。

    • obsoletes=value

    value 可以是 0 或者 1。0 表示升级的时候禁止 YUM 进行过时废弃软件包的处理。1 表示开启。默认值是 1。

    • plugins=value

    value 可以是 0 或者 1。0 表示禁止使用 YUM 插件;1 表示开启。默认值是 1。

    • reposdir=directory

    配置独立 YUM 源配置文件的存放路径。默认值是 /etc/yum.repos.d/。

    • retries=value

    value 是一个不小于 0 的正整数。设置在 YUM 报错之前尝试的次数,0 表示一直尝试下去。默认值是 10。

    1.4.2 [repository] 小节的配置

    YUM 的主配置文件 /etc/yum.conf 可以包括零个或多个 [repository] 配置。这里 repository 表示 YUM 源的 ID,是一个独一无二的字符串。每一个 [repository] 都表示一个独一无二 YUM 源。比如下面是一个最精简的 [repository] 配置。

    [repository]
    name=repository_name
    baseurl=repository_url
    

    每一个 [repository] 配置都必须包括至少上面几个参数,各个参数的含义如下:

    • name=repository_name

    关于 YUM 源的文字描述。

    • baseurl=repository_url

    repository_url 表示 YUM 源的路劲,YUM 支持 HTTP、FTP 以及本地 YUM 源设置。如果是 HTTP,格式为 http://path/to/repo;如果是 FTP,格式为 ftp://path/to/repo;如果是本地源,格式为 file:///path/to/local/repo。
    如果 HTTP YUM 源需要认证,可以指定用户名和密码。比如,对于 YUM 源 http://www.example.com/repo/ 来说,如果认证用户名和密码分别是 user 和 password,则完整的 baseurl 可以设置为 http://user:password@www.example.com/repo/。

    通常情况下,baseurl 是一个 HTTP 链接,比如:

    baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/
    

    注意:releasever, arch, 和 basearch 都是 YUM 内置变量。

    其余可选的配置参数包括:

    • enabled=value

    value 可以是 0 或者 1。0 表示禁用本 YUM 源;1 表示启用本 YUM 源。也可以通过 YUM 命令行选项 --enablerepo=repo_name 或 --disablerepo=repo_name 启用或禁用指定 YUM 源。

    1.4.3 YUM 内置变量

    • $releasever

    版本号。通常情况下,YUM 从主配置文件 /etc/yum.conf 的 distroverpkg=value 行获取发行版的版本号。如果主配置文件不存在上述配置行,YUM 就从 release 软件包解析获取。

    • $arch

    CPU 架构。

    • $basearch

    系统基础架构。比如,对于 i686 机器来说,该值是 i386;而对于 AMD64 和 Intel64 机器来说,该值是 x86_64。

    • $YUM0-9

    自定义环境变量。用户可以定义一个或多个这样的环境变量,并在 YUM 配置文件中引用它们。
    为了创建这样的环境变量,用户可以在 /etc/yum/vars/ 目录创建一个与变量同名的文件(不带 $ 前缀),文件内容就是希望的变量值。

    1.4.4 查看当前 YUM 配置

    如果希望查看 YUM 所有的全局配置,可以执行命令:

    ~]# yum-config-manager
    Loaded plugins: fastestmirror
    ===================================== main =====================================
    [main]
    alwaysprompt = True
    assumeyes = False
    bandwidth = 0
    bugtracker_url = http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    ...
    sslclientcert = 
    sslclientkey = 
    sslverify = True
    throttle = 0
    timeout = 30.0
    username = 
    

    如果希望查看 YUM 某个或某几个小节的配置,可以执行命令:

    yum-config-manager main
    Loaded plugins: fastestmirror
    =========================================================================================== main ===========================================================================================
    [main]
    alwaysprompt = True
    assumeyes = False
    ...
    timeout = 30.0
    tolerant = True
    tsflags = 
    username = 
    

    1.4.5 使用 yum-config-manager 添加、启用和禁用 YUM 源

    YUM 源的提供者通常会提供制作完备的 .repo 文件。如果希望添加这样的 YUM 源,可以执行命令:

    ~]# yum-config-manager --add-repo repository_url
    

    repository_url 是一个指向 .repo 文件的链接。

    如果希望启用一个或多个被禁用的 YUM 源,可以执行命令:

    ~]# yum-config-manager --enable repository…
    

    如果希望禁用一个或多个 YUM 源,可以执行命令:

    ~]# yum-config-manager --disable repository…
    

    1.4.6 自建 YUM 源

    也可以按照如下步骤自己搭建一个 YUM 源。

    1. 安装 createrepo 软件包。

      ~]# yum install createrepo

    2. 准备所有需要的软件包,把它们放在同一个目录下,比如 /mnt/local_repo/。

    3. 切换到软件包所在目录,并执行命令。

      ~]# createrepo --database /mnt/local_repo

    该命令会创建 YUM 源必须的所有元数据,以及 sqlite 数据库以加速 YUM 源的操作。

    1.4.7 YUM 缓存

    默认情况下,YUM 在操作成功以后会删除已下载的无用数据文件,以减少 YUM 占用的空间。但是,通过开启 YUM 缓存,可以在缓存中保留下载的数据文件,这样某些 YUM 操作就可以无需网络而实现本地化操作,也可以直接重用缓存里保存的数据文件等等。

    YUM 默认的缓存目录在 /var/cache/yum/$basearch/$releasever/,可以在 YUM 主配置文件 /etc/yum.conf 里配置 YUM 缓存路径,配置参数是 cachedir。其中$basearch 和 $releasever 是 YUM 的内置环境变量,前者代表系统基础架构,后者表示发行版本号。每一个配置的 YUM 源都有各自的子目录。比如,/var/cache/yum/$basearch/$releasever/bclinux/packages/ 代表从 bclinux 源缓存的数据文件。

    如果希望启用 YUM 缓存,可以配置 YUM 主配置文件 /etc/yum.conf 的 [main] 小节参数。

    keepcache = 1
    

    如果希望在执行 YUM 操作之前缓存所有的元数据,可以执行命令:

    ~]# yum makecache
    

    如果希望给缓存的元数据设置一个过期时间,可以配置 YUM 主配置文件 /etc/yum.conf 的 metadata-expire 参数。

    如果希望 YUM 不执行联网操作,只操作本地的 YUM 缓存,可以添加命令行参数 -C 或 --cacheonly。

    如果希望清除 YUM 缓存,可以执行命令:

    ~]# yum clean all
    

    2.5 YUM 插件

    YUM 提供了插件机制以扩展和增强其功能。每次执行 YUM 操作的时候,YUM 都会提示已经加载的 YUM 插件。比如:

    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=0
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=5
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release
    
    #  This is the default, if you make this bigger yum won't see if the metadata
    # is newer on the remote and so you'll "gain" the bandwidth of not having to
    # download the new metadata and "pay" for it by yum not having correct
    # information.
    #  It is esp. important, to have correct metadata, for distributions like
    # Fedora which don't keep old packages around. If you don't like this checking
    # interupting your command line usage, it's much better to have something
    # manually check the metadata once an hour (yum-updatesd will do this).
    # metadata_expire=90m
    
    # PUT YOUR REPOS HERE OR IN separate files named file.repo
    # in /etc/yum.repos.d
    

    1.5.1 启用/禁用插件

    如果希望启用 YUM 插件支持,可以配置 YUM 主配置文件 /etc/yum.conf [main] 小节的 plugins 参数:

    plugins=1
    

    plugins 可以是 0 或者 1。0 表示禁用;1表示启用。

    每一个插件都有独立的配置文件存放在目录 /etc/yum/pluginconf.d/。因此,除了在主配置文件 /etc/yum.conf 配置全局禁用插件机制以外,还可以在插件自己的配置文件里配置启用或禁用插件。比如:
    如果希望单独启用一个插件,比如 refresh-packagekit 插件,可以配置文件 /etc/yum/pluginconf.d/refresh-packagekit.conf:

    [main]
    enabled=1
    

    但是,如果已经在 YUM 主配置文件 /etc/yum.conf 理配置禁用了 YUM 插件机制,这里的配置就不管用了。

    如果只是临时地禁用插件机制,可以执行带 --noplugins 选项的 YUM 命令:

    ~]# yum --noplugins search wget
    

    同样,如果只是临时禁用一个或多个插件,可以执行带 --disableplugin 选项的 YUM 命令:

    ~]# yum --disableplugin=plugin_name search wget
    

    1.5.2 安装插件

    YUM 插件就是普通的软件包,所以,安装 YUM 插件跟普通的软件包安装没有区别。比如:

    ~]# yum install plugin-name
    

    1.5.3 插件列表

    kabi (kabi-yum-plugins)

    kabi 插件用于检查待升级的驱动软件包是否符合 kABI(kernel Application Binary Interface) 接口规范。当启用这个插件以后,如果用户执行安装的软件包引用了不在白名单里的内核符号,系统日志就会记录一条警告信息。如果希望彻底阻止该类软件包的安装,可以配置该插件运行在强制模式。

    如果希望配置该插件的功能,可以编辑配置文件 /etc/yum/pluginconf.d/kabi.conf。可选的配置选项包括:

    选项          | 描述               
    -------------------------------------------------------------------------------
    enabled=value | enabled 可以是 0 或者 1。0 表示禁用;1表示启用。 默认值是 1。         
    whitelists=directory | 指定存放白名单文件的路径。默认值是 /lib/modules/kabi/。           
    enforce=value | enforce 可以是 0 或者 1。0 表示禁用;1表示启用。默认值是 0,也就是仅仅打印警告信息。   
    

    presto (yum-presto)

    presto 插件允许从启用 presto 元数据的 YUM 源下载 RPM 增量包。因为增量包仅仅包含旧版本包和新版本包之间的差异数据,所以,使用增量包可以显著提高下载速度和一定程度上提高升级速度。当增量包下载以后,YUM 会把它应用到已安装的软件包重新生成新的完整的升级包。这个过程会耗费系统的 CPU 时间。所以,增量包机制是下载时间(依赖网络)和编译时间(依赖 CPU)的一种折中。如果系统的 CPU 能力富余而网络性能较差,推荐使用增量包机制;反之,使用普通的升级机制即可。

    security (yum-plugin-security)

    security 插件增强了 YUM 的功能,提供了一系列的命令和子命令。

    如果希望只是检查安全方面有没有可用的更新,可以执行命令:

    ~]# yum check-update --security
    Loaded plugins: fastestmirror, security
    Loading mirror speeds from cached hostfile
    Limiting package lists to security relevant ones
    No packages needed for security; 54 packages available
    

    如果希望仅仅执行安全更新,可以执行命令:

    ~]# yum update --security
    

    或者

    ~]# yum update-minimal --security
    

    yum-downloadonly (yum-plugin-downloadonly)

    yum-downloadonly 插件增加了一个新的 YUM 选项,--downloadonly,该选型允许只下载而不安装或升级软件包。比如:

    ~]# yum install wget --downloadonly
    Loaded plugins: downloadonly, fastestmirror, security
    Loading mirror speeds from cached hostfile
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package wget.x86_64 0:1.12-1.11.el6_5 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ============================================================================================================================================================================================
     Package                                  Arch                                       Version                                              Repository                                   Size
    ============================================================================================================================================================================================
    Installing:
     wget                                     x86_64                                     1.12-1.11.el6_5                                      updates                                     483 k
    
    Transaction Summary
    ============================================================================================================================================================================================
    Install       1 Package(s)
    
    Total size: 483 k
    Installed size: 483 k
    Is this ok [y/N]: n
    Exiting on user Command
    [root@tangwei2 ~]# yum install wget --downloadonly
    Loaded plugins: downloadonly, fastestmirror, security
    Loading mirror speeds from cached hostfile
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package wget.x86_64 0:1.12-1.11.el6_5 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ============================================================================================================================================================================================
     Package                                  Arch                                       Version                                              Repository                                   Size
    ============================================================================================================================================================================================
    Installing:
     wget                                     x86_64                                     1.12-1.11.el6_5                                      updates                                     483 k
    
    Transaction Summary
    ============================================================================================================================================================================================
    Install       1 Package(s)
    
    Total size: 483 k
    Installed size: 483 k
    Is this ok [y/N]: y
    Downloading Packages:
    
    
    exiting because --downloadonly specified 
    

    默认情况下,使用 --downloadonly 选项下载的软件包存放在 /var/cache/yum 的子目录。如果希望指定下载目录,可以使用带选项 --downloaddir 的命令。比如:

    ~]# yum install wget --downloadonly --downloaddir=.
    Loaded plugins: downloadonly, fastestmirror, security
    Loading mirror speeds from cached hostfile
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package wget.x86_64 0:1.12-1.11.el6_5 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ============================================================================================================================================================================================
     Package                                  Arch                                       Version                                              Repository                                   Size
    ============================================================================================================================================================================================
    Installing:
     wget                                     x86_64                                     1.12-1.11.el6_5                                      updates                                     483 k
    
    Transaction Summary
    ============================================================================================================================================================================================
    Install       1 Package(s)
    
    Total download size: 483 k
    Installed size: 483 k
    Is this ok [y/N]: y
    Downloading Packages:
    
    
    exiting because --downloadonly specified

登录后回复
 

与 BC-LINUX 的连接断开,我们正在尝试重连,请耐心等待