zoukankan      html  css  js  c++  java
  • CentOS系统程序包管理器【rpm、yum】

    将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装、卸载、升级、查询,校验等程序管理。 centos常用的程序管理器有rpm和yum

    rpmredhat package manager, RPM is Package Manager

    rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。

    RPM包的命名
    例如,bash-4.3.2-1.centos6.x86_64.rpm
    rpm的应用
    安装

    rpm {-i|--install} [install-options] PACKAGE_FILE ...

     

    -i            安装

    -v            显示详细信息,可叠加使用查看更加详细信息,如-vv,-vvv

    -h            显示进度,用50个#来作为进度条

     

                  我们一般组合使用-ivh来安装rpm包

     

    --nodeps      取消依赖关系

    --replacepkgs 重新安装

    --test        测试安装,而不是真正安装

    举例:

    [root@localhost ~]# rpm -ivh package.rpm

    升级

    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

         如果有较旧的版本程序包,则升级安装;若没有,则直接安装

    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

         如果有较旧的版本程序包,则升级安装;若没有,则终止

     

         我们一般组合使用-Uvh、-Fvh来安装rpm包

     

    [install-options]

         --oldpackage  降级安装

         --force       忽略冲突,强制执行

     

    注意:

    不要对内核包执行升级操作;linux支持多版本内核并存,因此,对新版本内核可直接安装;

    如果原程序包的配置文件安装后曾被改动,升级时,新版本的文件并不会直接覆盖老版本的文件,而是把新版本的文件重命(加后缀.rpmnew)名后保留;

    举例:

    [root@localhost ~]# rpm -Uvh package.rpm

    卸载

    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

     

    --nodeps     忽略依赖关系

    --test       卸载测试

    举例:

    [root@localhost ~]# rpm -ev package

    查询

    rpm {-q|--query} [select-options] [query-options]

     

    [select-options]

    1、查询该包是否安装

         rpm -q PACKAGE_NAME...

    2、查询已安装的所有包

         rpm -qa

    3、查询某文件是由哪个包安装生成

         rpm -qf /path/to/somefile

    4、查询尚未安装包的相关信息

         rpm -qp PACKAGE_FILE

     

    [query-options]

    1、查询某包的简要说明信息

         rpm -qi PACKAGE_NAME

    2、查询某包安装后生成的所有文件列表

         rpm -ql PACKAGE_NAME

    3、查询某包安装后生成的所有配置文件列表

         rpm -qc PACKAGE_NAME

    4、查询某包安装后生成的所有帮助文件列表

         rpm -qd PACKAGE_NAME

    5、查询某rpm包制作时随版本变化的changelog列表信息

         rpm -q --changelog PACKAGE_NAME

    6、查询某包提供的capabilities

         rpm -q --provides PACKAGE_NAME

    7、查询某包所依赖的capabilities

         rpm -q --requires PACKAGE_NAME

    8、查询某包安装卸载时的脚本

         rpm -q --scripts

         

         安装卸载时的脚本有四种:

            preinstall:     安装前执行的脚本

            postinstall:    安装后执行的脚本

            preuninstall:   卸载前执行的脚本

            postuninstall:  卸载后执行的脚本

    举例:

    查询系统中所有已安装 RPM 包

    [root@localhost ~]# rpm -qa

    查询 RPM 包中包含的文件列表

    [root@localhost ~]# rpm -qlp package

    查询 RPM 包中包含的帮助文件列表

    [root@localhost ~]# rpm -qdp package

    校验

    rpm {-V|--verify} [select-options] [verify-options]

    常用用法:rpm -V PACKAGE_NAME

     

    文件改动后校验会有下列相关信息提示:

     

    5:文件的MD5校验值

    S:文件大小

    L:链接文件

    T:文件创建的时间

    D:设备文件

    U:文件的用户

    G:文件的用户组

    M:文件的权限

    举例:

    先用vim对yum.conf文件进行修改,再进行校验

    [root@localhost ~]# rpm -V yum.conf

    S.5....T.  c /etc/yum.conf

    包来源合法性及完整性验正

    rpm --import PUBKEY ...

        导入密钥

    rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...

        验证密钥

       --nosignature: 不检查来源合法性

        --nodigest: 不检查完整性

    举例:

    [root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-*

    [root@localhost ~]# rpm -k /var/ftp/pub/Server/kernel-PAE-2.6.18-194.el5.i686.rpm

    /var/ftp/pub/Server/kernel-PAE-2.6.18-194.el5.i686.rpm: (sha1) dsa sha1 md5 gpg OK

    公共数据库:/var/lib/rpm

    重建数据库

        rpm {--initdb|--rebuilddb}

        

          初始化:--initdb

                 如果事先不存在数据,则会新之;否则,不执行任何操作

     

          重新构造:--rebuilddb

                  无论当前是否已经存在数据库,都会直接重建并覆盖现有数据库

    举例:

    [root@localhost ~]# rpm --initdb

    [root@localhost ~]# rpm --rebuilddb

    yumYellow dog Updater,Modified

    主要功能是更方便的添加/删除/更新RPM包,它能自动解决包的倚赖性问题,便于管理大量系统的更新问题

     

    配置yum仓库

    yum仓库配置文件:

    指向仓库的位置以及各种配置信息;每个yum客户可以有多个可用的yum仓库

     

    主配置文件有:

    /etc/yum.conf

    /etc/yum.repos.d/*.repo

    yum客户端配置的高级用法:

    1、如果有多个yum仓库,想优先选择使用,可以在配置文件添加一行cost定义仓库的使用开销值,默认值是1000,数值越低越优先

    例如:cost=400

    2、baseurl中指定路径时可使用变量,

    例如:http://mirrors.sohu.com/centos/$releasever/os/$basearch

    3、可以使用mirrorlist指令替换baseurl

    指向一个URL,此URL是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之做为本次访问的baseurl

    yum的应用

    yum仓库相关的命令

    列出所有可用仓库:

        # yum repolist

     

    列出所有程序包:

        # yum list {all | installed | available}

            支持globbing通配符

     

    缓存管理:

        # yum clean {all | packages}

        # yum makecache

    举例:

    [root@localhost ~]# yum list

    [root@localhost ~]# yum clean

    [root@localhost ~]# yum makecache

    安装

    yum install PACKAGE_NAME ...

       -y: 自动回答为yes

     

    如果需要安装指定的版本的程序:

        yum install PACKAGE-VERSION ...

     

    重新安装指定的程序包:

        yum reinstall PACKAGE_NAME ...

    举例:

    [root@localhost ~]# yum -y install creatrepo

    升级

    yum update PACKAGE_NAME

     

        如果有多个版本的升级包可用,且仅期望升级到指定版本:

            yum update PACKAGE-VERSION

     

        降级:

            yum downgrade PACKAGE_NAME

     

        检查可用升级:

            yum check-update

    举例:

    [root@localhost ~]# yum update createrepo

    卸载

    yum erase|remove PACKAGE_NAME

     

    注意:依赖于该指定程序包的其它包,会被一并卸载

    举例:

    [root@localhost ~]# yum remove createrepo

    查询

    yum list

    列出所有可安裝的软件清单

     

    yum info PACKAGE_NAME

    列出软件包信息

     

    yum search KEYWORD

    根据关键字模糊查询包名或包的sumary信息包含此KEYWORD的相关列表

     

    yum provides|whatprovides /path/to/somefile

    列出软件包提供哪些文件

    举例:

    [root@localhost ~]# yum list

    [root@localhost ~]# yum info createrepo

    [root@localhost ~]# yum provides createrepo

    包组管理

    显示所有包组:

        yum grouplist

     

    显示某包组的相关信息:

        yum groupinfo "GROUP_NAME"

     

    安装包组:

        yum groupinstall "GROUP_NAME"

        或

        yum install @GROUP_NAME  引号加不加都可以

     

    卸载包组:

        yum groupremove "GROUP_NAME"

        yum remove @"GROUP_NAME"

     

    升级包组:

        yum groupupdate "GROUP_NAME"

    举例:

    [root@localhost ~]# yum groupremove "Development tools"

    从yum仓库下载rpm包
    yumdownloader --resolve PACKAGE_FILE …

     

    --destdir DIR

      指定下载目标目录。默认为当前目录。

    --urls

      而不是下载RPM包,列出将要下载的网址

    --resolve

      当下载RPM包,解决依赖关系,并下载所需的软件包

    --source

      而不是下载的二进制RPM包,下载源RPM包

    举例:

    [root@localhost ~]# yumdownloader --resolve glances

    从RPM文件中提取文件(RPM2CPIO, CPIO的使用)

    如果下载一个 RPM,需要检查它的内容而不是安装它,可以使用 rpm2cpio 命令把内容转换为 cpio 存档,然后通过 cpio 命令提取出包中的某些或所有文件。对 bind 包执行转换,然后显示提取出的文件(和目录)。关于 rpm2cpio 和 cpio 命令的更多信息参见它们的手册页

    参考链接:http://blog.chinaunix.net/uid-26435987-id-3399279.html 

    举例:

    [root@localhost ~]# rpm2cpio ./bind-9.8.2-0.17.rc1.el6.x86_64.rpm| cpio -idv

     

    yum命令还可用安装本地rpm包文件

    yum localinstall /path/to/rpm_package_file ...

    安装本地rpm包

     

    选项:

       --enablerepo=启用某yum仓库

       --disablerepo=禁用某yum仓库

          注意:优先级高于/etc/yum.repos.d/*.repo配置文件中定义的属性;

       -y: 自动回答为yes

       --nogpgcheck:不验证包的来源和完整性

     

  • 相关阅读:
    Idea中将项目支持groovy语法
    Python驱动SAP GUI完成自动化(四)
    山东一男孩疑被假警察掳走
    关系型数据库,查看表列表,及字段列表
    my.cnf配置
    MySQL 密码策略
    Docker UnicodeEncodeError: 'ascii' codec can't encode characters in position
    三星S20开启120Hz高刷新率
    三星S20关闭5G消息状态图标
    Centos 7挂载本地ISO光盘
  • 原文地址:https://www.cnblogs.com/webnote/p/5759729.html
Copyright © 2011-2022 走看看