• centos8平台使用rpm管理软件包


    一,什么是rpm

    rpm是redhat package manager 

    redhat的软件包管理器

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,查看rpm命令所属的包

    [root@blog ~]$ whereis rpm
    rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz
    
    [root@blog ~]$ rpm -qf /usr/bin/rpm
    rpm-4.14.2-11.el8_0.x86_64

    三,查看rpm的版本和帮助

    1,查看版本

    [root@blog ~]# rpm --version
    RPM version 4.14.2

    2,查看帮助

    [root@blog ~]# rpm --help 

    四,rpm的用法例子之一:查询已安装rpm包

    说明:查询已安装rpm包时一律使用 -q

    1,查询某个rpm包是否已安装

    #如已安装,会显示完整的包名称

    #如未安装,会给出提示

    [root@blog ~]# rpm -q openresty
    openresty-1.15.8.2-6.el8.x86_64
    
    [root@blog ~]# rpm -q nginx
    package nginx is not installed

    2,查询系统中所有安装的rpm包

    # -q:query 查询

    # -a:query/verify all packages   所有包

    [root@blog ~]# rpm -qa 

    #因为系统中的rpm包较多,建议使用管道传递给more或less

    [root@blog ~]# rpm -qa | more 

    3,查询一个文件属于哪个rpm包?

    # -q:query 查询

    #-f:    Query package owning FILE,查询哪个rpm包包含指定文件

    [root@blog ~]# rpm -qf /usr/bin/rpm
    rpm-4.14.2-11.el8_0.x86_64

    #如果查询的文件不属于rpm包,则会给出提示

    [root@blog ~]# rpm -qf /root/echo.sh
    file /root/echo.sh is not owned by any package

    4,列出一个rpm中包含哪些文件?

    # -q:query 查询

    # -l : List files in package   列出包中的文件

    [root@blog ~]# rpm -ql openresty
    /usr/bin/openresty 
    ...

    5,显示一个rpm包的信息

    # -q:query 查询

    #-i:    Display package information  显示包信息

    [root@blog ~]# rpm -qi openresty
    Name        : openresty
    Version     : 1.15.8.2
    Release     : 6.el8
    Architecture: x86_64
    Install Date: Thu 05 Mar 2020 10:19:52 AM CST
    Group       : System Environment/Daemons
    Size        : 3562830
    License     : BSD
    Signature   : RSA/SHA256, Sun 08 Sep 2019 08:12:43 AM CST, Key ID 97db7443d5edeb74
    Source RPM  : openresty-1.15.8.2-6.el8.src.rpm
    Build Date  : Sun 08 Sep 2019 08:12:40 AM CST
    Build Host  : rhel8-pkg
    Relocations : (not relocatable)
    Packager    : Yichun Zhang (agentzh) <yichun@openresty.com>
    URL         : https://openresty.org/
    Summary     : OpenResty, scalable web platform by extending NGINX with Lua
    Description :
    This package contains the core server for OpenResty. Built for production
    uses.

    6,查询rpm包的配置文件

    #-c: 列出配置文件的位置

    [root@blog ~]# rpm -qc openresty
    /usr/local/openresty/nginx/conf/fastcgi.conf
    ...

    7,查询rpm包的文档

    #-d: 列出man或doc的位置

    [root@blog ~]# rpm -qd systemd 

    8,查询指定的rpm包所依赖的软件包及文件

    # -R, --requires   List capabilities on which this package depends.

    [root@blog ~]# rpm -qR openresty
    /bin/sh
    /bin/sh
    /bin/sh
    openresty-openssl >= 1.1.0h-1
    openresty-pcre >= 8.42-1
    openresty-zlib >= 1.2.11-3
    rpmlib(CompressedFileNames) <= 3.0.4-1
    rpmlib(FileDigests) <= 4.6.0-1
    rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    rpmlib(PayloadIsXz) <= 5.2-1
    systemd

    五,rpm的用法例子之二:对未安装软件包文件的查询:

    使用 -qp参数
    #-p, --package PACKAGE_FILE Query  an  (uninstalled)  package PACKAGE_FILE. 

    1,查询未安装软件包的信息

    #-i:显示包信息

    [root@blog source]# rpm -qpi ImageMagick-6.9.10.86-1.el8.x86_64.rpm
    Name        : ImageMagick
    Epoch       : 0
    Version     : 6.9.10.86
    Release     : 1.el8
    Architecture: x86_64
    ...

    2,列出未安装软件包中包含的文件:

    # -l: 列出包中的文件

    [root@blog source]# rpm -qpl ImageMagick-6.9.10.86-1.el8.x86_64.rpm
    /usr/bin/animate
    /usr/bin/compare
    /usr/bin/composite
    /usr/bin/conjure
    /usr/bin/convert 
    ...

    3,查询未安装rpm包中包含的文档

    #-d:列出man或doc的位置

    [root@blog source]# rpm -qpd ImageMagick-6.9.10.86-1.el8.x86_64.rpm
    /usr/share/doc/ImageMagick/AUTHORS.txt
    /usr/share/doc/ImageMagick/ChangeLog
    ...

    4,查询未安装软件包中包含的配置文件

    #-c:列出配置文件的路径

    [root@blog source]# rpm -qpc ImageMagick-6.9.10.86-1.el8.x86_64.rpm

    5,列出未安装rpm包所依赖的软件包及文件

    #-R: requires:  rpm包所需要的文件

    [root@blog source]# rpm -qpR ImageMagick-6.9.10.86-1.el8.x86_64.rpm
    ImageMagick-libs(x86-64) = 0:6.9.10.86-1.el8
    libICE.so.6()(64bit)
    libMagickCore-6.Q16.so.6()(64bit)
    ...

    六,rpm的用法例子之三:安装

    1,安装rpm包

    下载安装包

    [root@blog source]# wget http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zsh-5.5.1-6.el8.x86_64.rpm

    安装

    #-i:  安装 install

    #-v: 显示详细信息 verbose

    #-h: 显示软件安装进度

    [root@blog source]# rpm -ivh zsh-5.5.1-6.el8.x86_64.rpm
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.5.1-6.el8                  ################################# [100%]

    2,也可以通过网络在线安装

    [root@blog source]# rpm -ivh http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zsh-5.5.1-6.el8.x86_64.rpm 

    3,只检查依赖关系,不真正安装

    # --test : 测试

    [root@blog source]# rpm -ivh --test zsh-5.5.1-6.el8.x86_64.rpm
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]

    4,安装时忽略依赖关系:

    #--nodeps:   忽略依赖关系,强制安装

    [root@blog source]# rpm -ivh --nodeps zsh-5.5.1-6.el8.x86_64.rpm
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.5.1-6.el8                  ################################# [100%]

    七,rpm的用法例子之四:升级

    1,升级一个rpm包

    #-U:升级软件

    [root@blog source]# rpm -Uvh zsh-5.5.1-6.el8_1.2.x86_64.rpm
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.5.1-6.el8_1.2              ################################# [ 50%]
    Cleaning up / removing...
       2:zsh-5.5.1-6.el8                  ################################# [100%]

    2,降级安装到低版本的rpm包

    # --oldpackage:   安装低版本的软件包

    [root@blog source]# rpm -Uvh --oldpackage zsh-5.5.1-6.el8.x86_64.rpm
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.5.1-6.el8                  ################################# [ 50%]
    Cleaning up / removing...
       2:zsh-5.5.1-6.el8_1.2              ################################# [100%]

    八,rpm的用法例子之五:卸载

    1,删除一个rpm包

    #-e :卸载软件

    [root@blog source]# rpm -e zsh

    2,删除一个rpm包时忽略依赖关系

     #--nodeps: 忽略依赖关系强制卸载

    [root@blog source]# rpm -e --nodeps zsh

    九,rpm的用法例子之六:校验

    1,校验rpm包的安装

    #-V 用来检查已安装rpm包的完整性

    [root@blog source]# rpm -V zsh

    说明:如果没有输出,表示无问题

    2,已安装rpm包的文件有被修改时的输出:

    [root@blog source]# rpm -V openresty
    S.5....T.  c /usr/local/openresty/nginx/conf/nginx.conf

    上面的这个配置文件被修改过(这里只是举例子,属于正常修改)

    3,输出格式的说明:

    SM5DLUGT c

    S:表示对应文件的大小(Size)不一致;

    M:表示对于文件的mode不一致;

    5:表示对应文件的MD5不一致;

    D:表示文件的major和minor号不一致;

    L:表示文件的符号连接内容不一致;

    U:表示文件的owner不一致;

    G:表示文件的group不一致;

    T:表示文件的修改时间不一致;

    c:只有文件是一个配置文件时才会有此标志,可以用这种方法快速定位rpm包的配置文件安装位置。(不是说只有文件不一致情况下才会显示吗?没错,但是配置文件通常会被修改,所以通常都会被检测出不一致)

    注意:校验功能的主要作用不是用来检查配置文件,而是检查rootkit,

              如果我们的二进制程序被修改过,可以被这个功能检验出来。

             对于安全的检测非常重要

    十,从rpm包中提取文件

    1,创建工作目录:

    [root@blog source]# mkdir zshfile
    [root@blog source]# mv zsh-5.5.1-6.el8.x86_64.rpm zshfile/
    [root@blog source]# cd zshfile/

    2,用rpm2cpio提取rpm包中的文件

    [root@blog zshfile]# rpm2cpio zsh-5.5.1-6.el8.x86_64.rpm | cpio -div
    [root@blog zshfile]# ls
    etc  usr  zsh-5.5.1-6.el8.x86_64.rpm

    提取后的文件保存在 etc和usr 两个目录下面

    十一,查看centos的版本

    [root@blog ~]$ cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core)
  • 相关阅读:
    # codeforces 1199 D. Welfare State(思维+dp)
    # codeforces 1245 A. A. Good ol' Numbers Coloring(数学)
    # codeforces 1272 F. Two Bracket Sequences(三维dp + bfs)
    关于MySQL无法启动 ERROR 2003 (HY000)
    PAT 甲级测试题目 -- 1002 A+B for Polynomials
    PAT 甲级测试题目 -- 1001 A+B Format
    Flask 中接收 web 端 JSON 的小例子
    一些工具
    MySql的一些常见问题(Windows 和 Ubuntu 下)
    Python学习笔记
  • 原文地址:https://www.cnblogs.com/architectforest/p/12685069.html
Copyright © 2020-2023  润新知