• Linux程序包管理初步-rpm的使用


    在Linux系统上,一般而言,对于程序包管理器来说分为三类:

      debian:dpt,dpkg;             (程序包后缀.deb)

      rhel:rpm         (程序包后缀.rpm)

      suse:rpm         (程序包后缀.rpm)

    那么,程序包管理器该怎么理解呢?

      程序包管理器:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便的实现程序包的安装、卸载、升级、查询、校验等管理操作。

      对于Centos系列来讲,rpm数据库的路径是:/var/lib/rpm

    rpm包命名格式:

      

    name-version-release.arch.rpm
    
    //name:软件的名称
    //version:软件的版本
    //release:发行商版本
    //arch:系统架构
    

      如:heartbeat-2.1.4-12.el6.x86_64.rpm

    接下来,详细介绍rpm命令的相关使用:

      rpm [OPTIONS] [PACKAGE_FILE]

      其主要选项有:

        -i,--install:安装

        -e,--erase:卸载

        -U,--upgrade:升级

        -q,--query:查询

        -V,--verify:校验

        --buliddb,--initdb:数据库维护

        -v:显示安装详情

        -vv:显示更为详细的信息


        ①安装相关:

        rpm [OPTIONS] [INSTALL-OPTIONS] [PACKAGE_FILE]

        其中,[INSTALL-OPTIONS](安装选项)有:

          -h:显示安装进度条(50个#);

          --test:测试安装;

          --nodeps:忽略程序包依赖关系(不建议使用);

          --replacepkgs:重新安装;

          --nosignature:不检查程序包签名信息;

          --nodigest:不检查程序包完整性信息;

        ②升级相关:

        rpm [OPTIONS] [UPGRADE-OPTIONS] [PACKAGE_FILE]

        rpm [OPTIONS] [FRESHEN-OPTIONS] [PACKAGE_FILE]

        其中,常用选项有:

          -U:升级并安装;

          -F:仅进行升级;

          --oldpackage:降级

          --force:强制升级

       ③卸载相关:

        rpm [OPTIONS] [ERASE-OPTIONS] [PACKAGE_FILE]

        其中,常用选项有:

          --allmatches:卸载所有匹配指定名称的程序包的各版本;
          --nodeps:忽略依赖关系
          --test:测试卸载

       ④查询相关:

        rpm [OPTIONS] [SELECT-OPTIONS] [QUERY-OPTIONS]

        其中:[SELECT-OPTIONS]有:

          PAKAGE_NAME:查询指定软件是否已经安装即其版本(此处是packagename,不是packagefile)

          -a,--all:查询所有已安装的程序包;

          -f FILE:查询指定文件是由哪个程序包安装生成的,例如:

    [root@myadmin ~]# rpm -q -f /etc/passwd
    setup-2.8.14-20.el6_4.1.noarch
    

          -p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作

          --whatprovides CAPBILITY:查询指定的能力是由哪个程序包提供的,如:

    [root@myadmin ~]# rpm -q --whatprovides zsh
    zsh-4.3.11-4.el6.centos.2.x86_64

          --whatrequires CAPBILITY:查询指定的能力是被哪个程序包所依赖,如:

    [root@myadmin ~]# rpm -q --whatrequires bash
    initscripts-9.03.53-1.el6.centos.x86_64
    dracut-004-409.el6.noarch
    rsyslog-5.8.10-10.el6_6.x86_64
    cronie-1.4.4-15.el6_7.1.x86_64
    autofs-5.0.5-122.el6.x86_64
    lvm2-2.02.143-7.el6.x86_64

        [QUERY-OPTIONS]有:

          --changelog:查询rpm包的changelog;

          -l,--list:程序安装生成的所有文件列表,如:

    [root@myadmin ~]# rpm -ql python
    /usr/bin/pydoc
    /usr/bin/python
    /usr/bin/python2
    /usr/bin/python2.6
    /usr/share/doc/python-2.6.6
    /usr/share/doc/python-2.6.6/LICENSE
    /usr/share/doc/python-2.6.6/README
    /usr/share/man/man1/python.1.gz

          -i,--info:程序包的相关信息【版本号、大小、所属包组等】

          -c,--configfiles:查询指定的程序包所提供的配置文件,如:

    [root@myadmin ~]# rpm -qc zsh
    /etc/skel/.zshrc
    /etc/zlogin
    /etc/zlogout
    /etc/zprofile
    /etc/zshenv

         -d,--docfiles:查询指定的程序包所提供的文档,如:

    [root@myadmin ~]# rpm -qd python
    /usr/share/doc/python-2.6.6/LICENSE
    /usr/share/doc/python-2.6.6/README
    /usr/share/man/man1/python.1.gz

         --provides:列出指定程序包所提供的所有功能,如:

    [root@myadmin ~]# rpm -q --provides python
    Distutils  
    python(abi) = 2.6
    python-abi = 2.6
    python-ctypes = 1.0.1
    python-hashlib = 20081120
    python-sqlite = 2.3.2
    python-uuid = 1.31
    python-x86_64 = 2.6.6-64.el6
    python2 = 2.6.6
    python = 2.6.6-64.el6
    python(x86-64) = 2.6.6-64.el6

        -R,--requires:查询指定程序包的依赖关系,如:    

    [root@myadmin ~]# rpm -qR python
    /usr/bin/python2.6  
    libc.so.6()(64bit)  
    libc.so.6(GLIBC_2.2.5)(64bit)  
    libdl.so.2()(64bit)  
    libm.so.6()(64bit)  
    libpthread.so.0()(64bit)  
    libpython2.6.so.1.0()(64bit)  
    libutil.so.1()(64bit)  
    python-libs(x86-64) = 2.6.6-64.el6
    rpmlib(CompressedFileNames) <= 3.0.4-1
    rpmlib(FileDigests) <= 4.6.0-1
    rpmlib(PartialHardlinkSets) <= 4.0.4-1
    rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    rpmlib(VersionedDependencies) <= 3.0.3-1
    rtld(GNU_HASH)  
    rpmlib(PayloadIsXz) <= 5.2-1

       --scripts:查看程序包自带的脚本片段;

      ④校验相关

        rpm [OPTIONS] [SELECT-OPTIONS] [VERIFY-OPTIONS]

        与上面的类似,在此不再赘述。

      ⑤数据库相关

        rpm {--initdb|--rebuilddb}

        其中:  

          --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;
          --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;


      rpm包的验证相关:

        首先要获取并导入程序包制作者的密钥:      

          对于CentOS发行版来说:
            rpm --import /etc/pki/rpm-gpg/******

          例如:  

    [root@myadmin ~]# ls -l /etc/pki/rpm-gpg/
    总用量 16
    -rw-r--r--. 1 root root 1706 5月  19 03:47 RPM-GPG-KEY-CentOS-6
    -rw-r--r--. 1 root root 1730 5月  19 03:47 RPM-GPG-KEY-CentOS-Debug-6
    -rw-r--r--. 1 root root 1730 5月  19 03:47 RPM-GPG-KEY-CentOS-Security-6
    -rw-r--r--. 1 root root 1734 5月  19 03:47 RPM-GPG-KEY-CentOS-Testing-6

        手动验证:

          rpm -K PACKAGE_FILE

        例如:  

    [root@myadmin ~]# rpm -K zsh-4.3.11-4.el6.centos.2.x86_64.rpm 
    zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
  • 相关阅读:
    20180818
    20200817
    [mac操作]程序运行技巧与注意事项
    [py编程]小白新奇的技巧
    [命令]使用的conda命令大全
    【编程】python文件读写
    latex学习
    [记录]菜鸡划水记录
    【pytorch】pytorch入门学习
    pycharm中出现unresolved reference的解决办法
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/6015244.html
Copyright © 2020-2023  润新知