rpm 软件包管理机制

安装:


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

install-options:
        -h:        显示安装进度,更易看懂
        -v:         显示安装过程的信息
        -vv:        显示安装过程的详细信息
        -vvv:      显示安装过程的更详细的信息
        --test:    不执行真正安装,仅报告冲突信息
        --force:   强制安装
        --nodeps:  忽略依赖关系安装
        --replacepkgs: 覆盖安装,若有配置文件修改过,则覆盖安装不会覆盖这些文件


例子:覆盖安装
[root@centos6 Packages]#rpm -ivh --replacepkgs zsh-4.3.11-8.el6.centos.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]
[root@centos6 Packages]#

卸载:

rpm {-e|-erase} [options] PACEAGE_NAME...

options:
    --nodeps:    忽略依赖关系卸载
    --test:     测试卸载,不是真正卸载,仅检测冲突信息
    --allmatches: 如果一个程序包同时安装了多个版本,则一次全部卸载

注意:如果程序包有配置文件被修改过,则卸载时,这些文件不会被删除,而是重命名为file.rpmsave
后留存


例子:卸载zsh
[root@centos6 Packages]#rpm -e zsh
warning: /etc/zshrc saved as /etc/zshrc.rpmsave
[root@centos6 Packages]#

升级或回退版本:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
    -U: 升级或安装
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
    -F: 升级,若程序事先未安装,则不会安装

options:
    --test:
    --nodeps:
    --oldpackage: 回退到旧版本

注意:
    如果程序包有配置文件修改过,则升级时,新版本不会覆盖这些文件,而是把新版本的配置文件重命名
为file.rpmnew后保存

查询包相关信息:

rpm {-q|--query} [options] PACKAGE_NAME | PACKAGE_FILE

options:
rpm -qa:     查询系统已安装的所有包
rpm -q NAME: 查询某包是否安装
rpm -qf file: 查询某个文件是由哪个包安装生产的
rpm -qi NAEM: 查询某包的相关信息
rpm -ql NAME: 查询某包安装生成的文件列表
rpm -qc NAME:  查询某包安装后生成的所有配置文件
rpm -qd NAME:  查询某包安装后生成的帮助文件
rpm -q --changelog NAME: 查询包制作时的版本变更记录
rpm -q --provides NAME:  查询包提供的服务,接口
rpm -q --requires NAME:  查询包的依赖
rpm -q --scripts NAME:    查询包安装和卸载时所执行的脚本
    脚本有四类:    
            preinstall:    安装前执行的脚本
            postinstall:   安装后执行的脚本
            preuninstall:  卸载前执行的脚本
            postuninstall:  卸载后执行的脚本

以上都是已经安装包后的查询命令,但包还未安装时,查询命令需在上面命令的基础上加 -p,后面跟安装包
FILE
如:    未安装时查询包的安装后会生成哪些配置文件
    rpm -qpc PACKAGE_FILE


下面的是应用实例:
查询/etc/zshrc文件由哪个包安装生成的:
[root@centos6 Packages]#rpm -qf /etc/zshrc   
zsh-4.3.11-8.el6.centos.x86_64
[root@centos6 Packages]#


查询zsh包安装生成了哪些配置文件:
[root@centos6 Packages]#rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
[root@centos6 Packages]#


查询rpm包安装或卸载时要执行的脚本:
[root@centos6 Packages]#rpm -q --scripts rpm
posttrans scriptlet (using /bin/sh):
# XXX this is klunky and ugly, rpm itself should handle this
dbstat=/usr/lib/rpm/rpmdb_stat
if [ -x "$dbstat" ]; then
    if "$dbstat" -e -h /var/lib/rpm 2>&1 | grep -q "doesn't match environment version \| Invalid argument"; then
        rm -f /var/lib/rpm/__db.* 
    fi
fi
exit 0
[root@centos6 Packages]#


zsh未安装时,查询zsh包的相关信息:
[root@centos6 Packages]#rpm -qpi zsh-4.3.11-8.el6.centos.x86_64.rpm 
Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.11                            Vendor: CentOS
Release     : 8.el6.centos                  Build Date: Wed 20 Jun 2018 12:17:25 AM CST
Install Date: (not installed)               Build Host: x86-01.bsys.centos.org
Group       : System Environment/Shells     Source RPM: zsh-4.3.11-8.el6.centos.src.rpm
Size        : 5299361                          License: BSD
Signature   : RSA/SHA1, Wed 20 Jun 2018 07:43:15 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://zsh.sunsite.dk/
Summary     : A 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@centos6 Packages]#


安装后包校验:

rpm {-V|--verify} PACKAGE_NAME    检测包安装之后生成的文件是否发生过改变

当没有输出结果表示软件包为完整包,当有相应输出时表示对应的内容修改过

S: 文件大小被修改过
M: 文件的类型或属性、权限变动过
5: MD5值变动过
D:  设备主/次代码变动过
L:  路径变动过
U:  属主变动过
G: 属组变动过
T: mtime变动过

安装前包来源合法性和完整性检测:

rpm  --import RPM-GPG-KEY-FILE    先导入合法的KEY文件

rpm {-K|--checksig} PACKAGE_FILE   验证

用yum安装时,/etc/yum.repos.d/下仓库配置里可以设置gpgkey  gpgcheck来指明KEY文件路径,和
是否开启检测

rpm管理数据库:

[root@centos6 yum.repos.d]#rpm -qc rpm    //查询rpm安装后生成的配置文件
/var/lib/rpm/Basenames
/var/lib/rpm/Conflictname
/var/lib/rpm/Dirnames
/var/lib/rpm/Filedigests
/var/lib/rpm/Group
/var/lib/rpm/Installtid
/var/lib/rpm/Name
/var/lib/rpm/Obsoletename
/var/lib/rpm/Packages
/var/lib/rpm/Providename
/var/lib/rpm/Provideversion
/var/lib/rpm/Pubkeys
/var/lib/rpm/Requirename
/var/lib/rpm/Requireversion
/var/lib/rpm/Sha1header
/var/lib/rpm/Sigmd5
/var/lib/rpm/Triggername
/var/lib/rpm/__db.001
/var/lib/rpm/__db.002
/var/lib/rpm/__db.003
/var/lib/rpm/__db.004
/var/lib/rpm/__db.005
/var/lib/rpm/__db.006
/var/lib/rpm/__db.007
/var/lib/rpm/__db.008
/var/lib/rpm/__db.009
[root@centos6 yum.repos.d]#

如上这些配置文件就是rpm包管理数据库和配置文件,这些文件不能删除,否则rpm将识别不到已安装的
rpm包。

如果这些配置文件有损坏,可用如下命令重建数据库(配置文件被全部删除后 ,似乎是不能恢复的)
rpm  {--initdb|--rebuilddb} [-v] [--dbpath DIR]

--inittab: 初始化数据库
--rebuilddb: 重建数据库

默认数据库存放路径:/var/lib/rpm/

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值