Linux程序包管理命令之rpm

一、官方文档
rpm命令man文档如下:

NAME
       rpm - RPM Package Manager

SYNOPSIS
   QUERYING AND VERIFYING PACKAGES:
       rpm {-q|--query} [select-options] [query-options]

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

   INSTALLING, UPGRADING, AND REMOVING PACKAGES:
       rpm {-i|--install} [install-options] PACKAGE_FILE ...

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

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

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

二、常用命令总结:
安装:rpm -i | --install PACKAGE_FILE …
卸载:rpm -e | --erase PACKAGE_FILE …
升级:rpm -U | --update PACKAGE_FILE …
查询:rpm -q | --query [select-options] [query-options]
校验:rpm -V | --verify PACKAGE_FILE …

[root@linux4 Packages]# ls zsh-*
zsh-5.0.2-34.el7_8.2.x86_64.rpm  zsh-html-5.0.2-34.el7_8.2.x86_64.rpm

########################## 安装rpm包 ##############################
[root@linux4 Packages]# rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]

########################## 升级rpm包 ##############################
[root@linux4 Packages]# rpm -Uvh zsh-*
Preparing...                          ################################# [100%]
	package zsh-5.0.2-34.el7_8.2.x86_64 is already installed

########################## 查询rpm包 ##############################
[root@linux4 Packages]# rpm -q zsh
zsh-5.0.2-34.el7_8.2.x86_64

######################## 查询rpm包详细信息 ##############################
[root@linux4 Packages]# rpm -qi zsh
Name        : zsh
Version     : 5.0.2
Release     : 34.el7_8.2
Architecture: x86_64
Install Date: Wed 21 Sep 2022 03:16:05 PM CST
Group       : System Environment/Shells
Size        : 5860430
License     : MIT
Signature   : RSA/SHA256, Wed 08 Apr 2020 10:41:00 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : zsh-5.0.2-34.el7_8.2.src.rpm
Build Date  : Tue 07 Apr 2020 10:38:13 PM CST
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://zsh.sourceforge.net/
Summary     : Powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

########################## 校验rpm包 ##############################
[root@linux4 Packages]# rpm -V zsh
[root@linux4 Packages]# 

########################## 卸载rpm包 ##############################
[root@linux4 Packages]# rpm -e zsh

三、各命令详解
1、安装
 命令:rpm {-i|–install} [install-options] PACKAGE_FILE …
 文档:

       rpm {-i|--install} [install-options] PACKAGE_FILE ...
          install-options
        [--allfiles] [--badreloc] [--excludepath OLDPATH]
        [--excludedocs] [--force] [-h,--hash]
        [--ignoresize] [--ignorearch] [--ignoreos]
        [--includedocs] [--justdb] [--nocollections]
        [--nodeps] [--nodigest] [--nosignature] [--noplugins]
        [--noorder] [--noscripts] [--notriggers]
        [--oldpackage] [--percent] [--prefix NEWPATH]
        [--relocate OLDPATH=NEWPATH]
        [--replacefiles] [--replacepkgs]
        [--test]

  [install-options]
   -h: 输出进度条,每个#显示2%的进度
   --test: 测试安装,不执行安装,仅检查并报告依赖关系及冲突
   --nodeps: 不检查依赖
   --force: 同replacepkgs
   --replacepkgs: 即使包已存在,也要执行安装,即覆盖安装
   --justdb: 只更新数据库
   --nosignature: 不检查签名信息
   --nodigest: 不检查完整性信息
   --prefix NEWPATH: 指定路径安装

############### -h  ###############
[root@linux4 Packages]# rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
   
############### --test ###############
[root@linux4 Packages]# rpm -ivh --test zsh-html-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]

############### --force ###############
[root@linux4 Packages]# rpm -ivh --force zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
   
############### --replacepkgs ###############
[root@linux4 Packages]# rpm -ivh --replacepkgs zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
   
############### --justdb ###############
[root@linux4 Packages]# rpm -ivh --justdb zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
	package zsh-5.0.2-34.el7_8.2.x86_64 is already installed
[root@linux4 Packages]# rpm -e zsh

############### --nosignature ###############
[root@linux4 Packages]# rpm -ivh --nosignature zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
[root@linux4 Packages]# rpm -e zsh

############### --nodigest ###############
[root@linux4 Packages]# rpm -ivh --nodigest zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
[root@linux4 Packages]# rpm -e zsh

############### --prefix ###############
[root@linux4 Packages]# rpm -ivh --prefix /tmp/zsh zsh-5.0.2-34.el7_8.2.x86_64.rpm 
error: package zsh is not relocatable
[root@linux4 Packages]# 

2、升级
 命令:rpm {-U|–upgrade} [install-options] PACKAGE_FILE … 升级或安装
    rpm {-F|–freshen} [install-options] PACKAGE_FILE … 只升级
 文档:同install
  --oldpackage: 降级
  --force: 强制升级

3、查询
 命令:rpm {-q|–query} [select-options] [query-options]
 文档:

   select-options
        [PACKAGE_NAME] [-a,--all] [-f,--file FILE]
        [-g,--group GROUP] {-p,--package PACKAGE_FILE]
        [--hdrid SHA1] [--pkgid MD5] [--tid TID]
        [--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
        [--whatprovides CAPABILITY] [--whatrequires CAPABILITY]

   query-options
        [--changelog] [-c,--configfiles] [--conflicts]
        [-d,--docfiles] [--dump] [--filesbypkg] [-i,--info]
        [--last] [-l,--list] [--obsoletes] [--provides]
        [--qf,--queryformat QUERYFMT] [-R,--requires]
        [--scripts] [-s,--state] [--triggers,--triggerscripts]

  [select-options]
   PACKAGE_NAME: 查询指定的包是否被安装
   -a|–all: 查询所有安装的包,通常会配合grep使用
   -f|–file:查询指定文件由哪个程序包安装生成
   -p|–package PACKAGE_FILE: 查询未安装的程序包
  [query-options]
   --changelog:查询rpm包的changelog
   -c|–configfiles:查询rpm包的配置文件信息
   -d|–docfiles:查询rpm包指定的文档
   -i|–info: 查询rpm包相关信息,如版本号、大小等
   -l|–list:程序包生成的文件列表
   -R|–requires:查询程序包的依赖关系
   --scripts:查询程序包自带的脚本文件

[root@linux4 Packages]# rpm -q zsh
zsh-5.0.2-34.el7_8.2.x86_64

[root@linux4 Packages]# rpm -qf /bin/ls
coreutils-8.22-24.el7.x86_64
[root@linux4 Packages]# rpm -qp zlib-static-1.2.7-18.el7.x86_64.rpm 
zlib-static-1.2.7-18.el7.x86_64
[root@linux4 Packages]# rpm -qa
aether-util-1.13.1-13.el7.noarch
firewalld-0.6.3-11.el7.noarch
atinject-tck-1-13.20100611svn86.el7.noarch
perl-Convert-ASN1-0.26-4.el7.noarch
......

[root@linux4 Packages]# rpm -qa|grep mysql
mha4mysql-node-0.58-0.el7.centos.noarch
mha4mysql-manager-0.58-0.el7.centos.noarch

[root@linux4 Packages]# rpm -q --changelog zsh-5.0.2-34.el7_8.2.x86_64.rpm 
package zsh-5.0.2-34.el7_8.2.x86_64.rpm is not installed
[root@linux4 Packages]# rpm -q --changelog zsh
* Tue Mar 03 2020 Kamil Dudka <kdudka@redhat.com> - 5.0.2-34.el7_8.2
- improve printing of error messages introduced by the fix of CVE-2019-20044
* Mon Feb 24 2020 Kamil Dudka <kdudka@redhat.com> - 5.0.2-34.el7_8.1
- drop privileges securely when unsetting PRIVILEGED option (CVE-2019-20044)
......

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

[root@linux4 Packages]# rpm -qd zsh
/usr/share/doc/zsh-5.0.2/BUGS
/usr/share/doc/zsh-5.0.2/CONTRIBUTORS
/usr/share/doc/zsh-5.0.2/FAQ
/usr/share/doc/zsh-5.0.2/FEATURES
/usr/share/doc/zsh-5.0.2/LICENCE
/usr/share/doc/zsh-5.0.2/MACHINES
/usr/share/doc/zsh-5.0.2/NEWS
/usr/share/doc/zsh-5.0.2/README
/usr/share/doc/zsh-5.0.2/completion-style-guide
/usr/share/doc/zsh-5.0.2/zsh-development-guide

[root@linux4 Packages]# rpm -qi zsh
Name        : zsh
Version     : 5.0.2
Release     : 34.el7_8.2
Architecture: x86_64
Install Date: Wed 21 Sep 2022 04:50:02 PM CST
Group       : System Environment/Shells
Size        : 5860430
License     : MIT
Signature   : RSA/SHA256, Wed 08 Apr 2020 10:41:00 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : zsh-5.0.2-34.el7_8.2.src.rpm
Build Date  : Tue 07 Apr 2020 10:38:13 PM CST
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://zsh.sourceforge.net/
Summary     : Powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

[root@linux4 Packages]# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
/usr/lib64/zsh
/usr/lib64/zsh/5.0.2
/usr/lib64/zsh/5.0.2/zsh
/usr/lib64/zsh/5.0.2/zsh/attr.so
/usr/lib64/zsh/5.0.2/zsh/cap.so
/usr/lib64/zsh/5.0.2/zsh/clone.so
/usr/lib64/zsh/5.0.2/zsh/compctl.so
/usr/lib64/zsh/5.0.2/zsh/complete.so
/usr/lib64/zsh/5.0.2/zsh/complist.so

[root@linux4 Packages]# rpm -qR zsh
/bin/sh
/bin/zsh
/sbin/install-info
config(zsh) = 5.0.2-34.el7_8.2
coreutils
grep
grep
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libm.so.6()(64bit)
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
......

[root@linux4 Packages]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi

if [ -f /usr/share/info/zsh.info.gz ]; then
# This is needed so that --excludedocs works.
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
  --entry="* zsh: (zsh).			An enhanced bourne shell."
fi

:
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    if [ -f /usr/share/info/zsh.info.gz ]; then
    # This is needed so that --excludedocs works.
    /sbin/install-info --delete /usr/share/info/zsh.info.gz /usr/share/info/dir \
      --entry="* zsh: (zsh).			An enhanced bourne shell."
    fi
fi
:
postuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    if [ -f /etc/shells ] ; then
        TmpFile=`/bin/mktemp /tmp/.zshrpmXXXXXX`
        grep -v '^/bin/zsh$' /etc/shells > $TmpFile
        cp -f $TmpFile /etc/shells
        rm -f $TmpFile
    fi
fi
[root@linux4 Packages]# 

4、卸载
 命令:rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
  --allmatches: 卸载所有匹配指定名称的程序包的各版本
  --nodeps:忽略依赖关系
  --test:测试卸载,不真的执行

[root@linux4 Packages]# rpm -e --test zsh
[root@linux4 Packages]# rpm -q zsh
zsh-5.0.2-34.el7_8.2.x86_64
[root@linux4 Packages]# rpm -e zsh
[root@linux4 Packages]# rpm -q zsh
package zsh is not installed

5、校验
 命令:rpm {-V|–verify} [select-options] [verify-options]
 文档:

   verify-options
        [--nodeps] [--nofiles] [--noscripts]
        [--nodigest] [--nosignature]
        [--nolinkto] [--nofiledigest] [--nosize] [--nouser]
        [--nogroup] [--nomtime] [--nomode] [--nordev]
        [--nocaps] [--noconfig] [--noghost]

 示例:

[root@linux4 Packages]# rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
[root@linux4 Packages]# rpm -V zsh
[root@linux4 Packages]# 

6、数据库重建(此处待验证)
  rpm管理器数据库的路径: /var/lib/rpm
  rpm相关的查询操作会通过此数据库运行
  语法:rpm {–initdb|–rebuilddb}
    --initdb: 初始化数据库,当前无任何数据库可初始化创建一个新的,当前有时不执行任何操作
    --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建

[root@linux4 lib]# pwd
/var/lib
[root@linux4 lib]# ls rpm
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername

#############创建目录,备份rpm数据库,请务必做好备份!!!############
[root@linux4 lib]# mkdir rpm_bak   
[root@linux4 lib]# cp -r ./rpm/* rpm_bak
[root@linux4 lib]# rm -rf rpm
[root@linux4 lib]# rpm --initdb
[root@linux4 lib]# ls rpm
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[root@linux4 lib]# cd rpm
[root@linux4 rpm]# ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[root@linux4 rpm]# 
[root@linux4 rpm]# rpm --rebuilddb
[root@linux4 rpm]# ls
Basenames     Dirnames  Installtid  Obsoletename  Providename  Sha1header  Triggername
Conflictname  Group     Name        Packages      Requirename  Sigmd5
[root@linux4 rpm]# 

7、包来源合法性验证和完整性验证
  获取并导入信任的包制作者密钥:
   对于CentOS发行版来说命令如下:
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  验证:
    1、安装此组织签名的程序时会自动执行验证
    2、手动验证:rpm -K PACKAGE_FILE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值