谢烟客---------Linux之程序包管理rpm使用

在CentOS系统上用rpm管理程序包,实现安装、卸载、查询、校验、升级、数据库维护

-ivh --replacepkgs

-e

-U 安装或升级 -F 仅安装

rpm -V file.rpm 校验程序包安装后是否发生改变

rpm --import GPG_FILE 将要安装某仓库的程序包,为了实现校验,必须事先导入GPG公钥

S:Size,5:MD5,T:Timestamp,U:user,G:Group

/var/lib/rpm rpm程序的状态信息

如果元数据损坏:

--rebuildb 直接重建元数据

--initdb  数据库不存在时,重建元数据。存在时,不重建元数据

注意:

1、对内核不能升级,对4.0版本之前的内核升级操作后需要重启,新的内核升级后可能重启不了。对内核执行安装即可。

2、对于原有程序包配置发生改变,新安装的程序包的配置名为rpmnew。如果没有变化,配置文件不会安装。

3、多个rpm命令不能同时使用,避免包的完整性

事务类操作:

1、原子性

2、隔离性

3、持久性

补充:

vim :wq 退出,会引起修改时间戳的变化(即使没有做任何操作)


安装、卸载、查询、校验、升级、数据库维护

rpm [OPTIONS....] PACKAGE_FILE ...

-v/-vv  ## 显示安装的详细信息

-h     ## 以hash格式显示安装的百分比

-i     ## 安装程序包

-U/-F   ## 安装或升级  或 仅安装程序包

-e     ## 卸载程序包

-V     ## 校验程序包

--import GPG_FILE  ## 安装前,导入对应的公钥

--initdb  ## 初始化数据库:存在数据库时不进行操作

--rebuildb ## 直接重建数据库

使用示例:

1、-v
[[email protected] ~]# rpm -iv zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
软件包准备中...
zsh-4.3.11-4.el6.centos.2.i686
[[email protected] ~]# 

2、-vv
[[email protected] ~]# rpm -ivv --replacepkgs zsh-4.3.11-4.el6.centos.2.i686.rpm 
软件包准备中...
D: computing file dispositions
D: 0x0000fd01     4096      5545114      2446367 /
D: ========== +++ zsh-5.0.2-25.el7_3.1 x86_64-linux 0x2
D: Expected size:      2494392 = lead(96)+sigs(1284)+pad(4)+data(2493008)
D:   Actual size:      2494392
D: zsh-5.0.2-25.el7_3.1.x86_64: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: OK
D:   install: zsh-5.0.2-25.el7_3.1 has 988 files
zsh-5.0.2-25.el7_3.1.x86_64
D: ========== Directories not explicitly included in package:
D:          0 /bin/
D:          1 /etc/skel/
D:          2 /etc/
D:          3 /etc/
D:          4 /usr/lib64/
D:          9 /usr/share/doc/
D:         11 /usr/share/info/
D:         12 /usr/share/man/man1/
D:         13 /usr/share/
D: ==========
......

3、-h
[[email protected] ~]# rpm -ivh --replacepkgs zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

4、升级或安装
[[email protected] ~]# rpm -Uvh zsh-5.0.2-25.el7_3.1.x86_64.rpm 
准备中...                          ################################# [100%]
	file /etc/zshrc from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/info/zsh.info-1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/info/zsh.info-2.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/info/zsh.info-3.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/info/zsh.info-4.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/info/zsh.info-5.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/info/zsh.info.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zsh.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshall.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshbuiltins.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshcalsys.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshcompctl.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshcompsys.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshcompwid.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshcontrib.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshexpn.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshmisc.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshmodules.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshoptions.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshparam.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshroadmap.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshtcpsys.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshzftpsys.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
	file /usr/share/man/man1/zshzle.1.gz from install of zsh-5.0.2-25.el7_3.1.x86_64 conflicts with file from package zsh-4.3.11-4.el6.centos.2.i686
[[email protected] ~]# 

5、仅升级
[[email protected] ~]# rpm -e zsh
[[email protected] ~]# rpm -Fvh zsh-5.0.2-25.el7_3.1.x86_64.rpm  ##没有zsh包,不能安装
[[email protected] ~]# 
[[email protected] ~]# rpm -Uvh zsh-5.0.2-25.el7_3.1.x86_64.rpm ## 没有可安装
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7_3.1             ################################# [100%]
[[email protected] ~]# 

6、卸载
##修改配置文件
[[email protected] ~]# echo "###" > /etc/zshrc
[[email protected] ~]# rpm -e zsh
警告:/etc/zshrc 已另存为 /etc/zshrc.rpmsave
##不修改配置
[[email protected] ~]# rpm -e zsh
[[email protected] ~]# 

7、校验程序包

##访问配置文件,不修改
[[email protected] ~]# vim /etc/zshrc 
[[email protected] ~]# rpm -V zsh
.......T.  c /etc/zshrc 
##修改配置文件
[[email protected] ~]# echo "###" > /etc/zshrc
##访问doc文件,不修改
[[email protected] ~]# vim /usr/share/doc/zsh-5.0.2/README 
[[email protected] ~]# rpm -V zsh
S.5....T.  c /etc/zshrc
.......T.  d /usr/share/doc/zsh-5.0.2/README
 
8、导入GPG再安装
##没有公钥
[[email protected] ~]# rpm -ivh zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

##导入公钥
[[email protected] ~]# rpm --import RPM-GPG-KEY-CentOS-6 
[[email protected] ~]# rpm -ivh zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]
   
9、初始化
##损坏数据库
[[email protected] ~]# rm -rf /var/lib/rpm
[[email protected] ~]# rpm -e zsh
错误:未安装软件包 zsh 
[[email protected] ~]# rpm -qa
[[email protected] ~]# 
##重建
[[email protected] ~]# rpm --initdb
[[email protected] ~]# ls /var/lib/rpm
Basenames  Conflictname  __db.001  __db.002  __db.003  Dirnames  Group  Installtid  Name  Obsoletename  Packages  Providename  Requirename  Sha1header  Sigmd5  Triggername
[[email protected] ~]# rpm -e zsh
错误:未安装软件包 zsh 
[[email protected] ~]# rpm -qa
[[email protected] ~]# 

##重建
[[email protected] ~]# rpm --rebuilddb
重新配置yum源
 1145  yum-config-manager --disable extras
 1147  yum-config-manager --disable updates
yum安装程序包

安装程序包

rpm -ivh [OOPTIONS...] PACKAGE_FILE ...

-test  ## dryrun模式,测试安装

-nodeps ## 忽略包的依赖性,进行安装

-nodigest ## 不检查包的完整性,进行安装

-nosignature ## 不检查包的来源合法性,进行安装

--force     ## 强制安装

--replacepkgs ## 重新安装

--ignoreos   ## 安装不同平台的程序包,忽略平台

--notriggers   ## 不执行触发器

--noscripts  ## 安装时,不执行安装脚本

--nopre     ## 安装时,不执行安装前脚本

--nopost    ## 安装后脚本

--nopreun

--nopostun

使用示例

1、测试安装

[[email protected] ~]# rpm -q zsh
zsh-5.0.2-25.el7.x86_64
[[email protected] ~]# rpm -e zsh
警告:/etc/zshrc 已另存为 /etc/zshrc.rpmsave
[[email protected] ~]# rm /etc/zshrc.rpmsave 
rm:是否删除普通文件 "/etc/zshrc.rpmsave"?y

[[email protected] ~]# rpm -ivh --test zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
错误:依赖检测失败:
	libc.so.6 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.0) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.1) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.1.3) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.11) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.2) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.3) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.3.4) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.4) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libc.so.6(GLIBC_2.7) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libdl.so.2 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libdl.so.2(GLIBC_2.0) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libdl.so.2(GLIBC_2.1) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libm.so.6 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libm.so.6(GLIBC_2.0) 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libncursesw.so.5 被 zsh-4.3.11-4.el6.centos.2.i686 需要
	libtinfo.so.5 被 zsh-4.3.11-4.el6.centos.2.i686 需要
[[email protected] ~]# rpm -ivh --test zsh-5.0.2-25.el7_3.1.x86_64.rpm 
准备中...                          ################################# [100%]
[[email protected] ~]# rpm -q zsh
未安装软件包 zsh 

**通过test选项知道安装此程序包是否有依赖关系,且不会安装

2、忽略依赖关系

1)、安装
[[email protected] ~]# rpm -ivh --nodeps zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]
[[email protected] ~]# 
2、卸载
[[email protected] ~]# rpm -e zsh
[[email protected] ~]#

3、不检查包的完整性

[[email protected] ~]# rpm -ivh --nodeps --nodigest zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

4、不检查包的来源合法性

[[email protected] ~]# rpm -ivh --nodeps --nodigest --nosignature zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

5、强制安装

[[email protected] ~]# rpm -ivh --nodeps --nodigest --nosignature zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
	软件包 zsh-4.3.11-4.el6.centos.2.i686 已经安装

在已经安装的情况下在次安装
[[email protected] ~]# rpm -ivh --force --nodeps --nodigest --nosignature zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

6、重新安装

[[email protected] ~]# rpm -ivh --nodeps --nodigest --nosignature zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
	软件包 zsh-4.3.11-4.el6.centos.2.i686 已经安装

在已经安装的情况下重新安装
[[email protected] ~]# rpm -ivh --replacepkgs --nodeps --nodigest --nosignature zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

7、安装不同平台的程序包

 X86安装x64平台的程序包

8、不执行触发器

[[email protected] ~]# rpm -ivh --replacepkgs --notriggers --nodeps --nodigest --nosignature zsh-4.3.11-4.el6.centos.2.i686.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-4.3.11-4.el6.centos.2        ################################# [100%]

9、不执行脚本

1、查看脚本
[[email protected] ~]# rpm -qp --scripts zsh-5.0.2-25.el7_3.1.x86_64.rpm 
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then  ## 安装后,判断/etc/shells是否不存在或不是普通文件
    echo "/bin/zsh" > /etc/shells ##执行状态为0时,追加
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells ## 表明存在且为普通文件,就查看文件中是否有/bin/zsh否则追加内容
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

postuninstall scriptlet (using /bin/sh): 
if [ "$1" = 0 ] ; then
    if [ -f /etc/shells ] ; then
        TmpFile=`/bin/mktemp /tmp/.zshrpmXXXXXX`    ##将临时文件保存于/tmp下
        grep -v ‘^/bin/zsh$‘ /etc/shells > $TmpFile ##将非匹配到的行保存至临时目录
        cp -f $TmpFile /etc/shells  ## 非交互式复制非匹配的行至/etc/shells文件中
        rm -f $TmpFile              ## 非交互式删除生成的文件
    fi
fi

2、不执行脚本
[[email protected] ~]# rpm -e --nopostun zsh
由以上脚本可知,传递的$1不为0
不会将/etc/shells目录中的/bin/zsh删除
[[email protected] ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

/bin/zsh

升级程序包

rpm -Uvh  [OPTIONS...] PACKAGE_FILE

rpm -Fvh [OPTIONS...] PACKAGE_FILE

--oldpackage ##  用旧版程序包替换新版本的程序包

--force    ##  强行升级

查询程序包(默认对已经安装的程序包进行操作)

rpm -q [select_option]

select_option:查询结果为程序包

-a  ## 查询所有已安装的程序包

-f filepath ## 查询文件由哪个程序包生成

-g groupname  ## 查询指定包组内相关的程序包

--whatprovide CAPABILITY ##  CAPABILITY(文件或功能)由哪个程序包所提供

--whatrequire CAPABILITY ## CAPABILITY被哪个程序包所依赖

   rpm -q [query_option] PACKAGE_FILE

query_option:查询程序包中的文件内容或列表

查询包中文件列表:(默认对已安装的程序包的查询可缩写:zsh-5.0.2-25.el7_3.1.x86_64.rpm  zsh)

-p  ## 查询未安装的程序包

-l  ## 列出程序包内的文件列表

-c  ## 包内的配置文件列表

-d  ## doc列表

查询包中文件内容:

--changelog   ## 列出程序包的changelog,而非程序的changelog

-i, information ## 查询包的Information

-L       ## 包的Lisence

-scripts    ## 包的脚本段

--triggers   ## 包的触发器

         -provides   ## 包提供的CAPABILITY

-R   ## 包所依赖的CAPABITY

--conflicts  程序包冲突

使用示例

1、查询所有已经安装的程序包: rpm -qa
2、查询文件由哪个程序包所提供: rpm -qf /bin/ls
3、查询组内相关的程序包:  rpm -q -g "System Environment/Shells"
4、程序包与哪些程序包冲突 : 
5、CAPABILITY(文件或功能)由哪个程序包所提供: rpm -q --whatprovides /bin/ls
6、CAPABILITY(文件或功能)被哪个程序包所依赖: rpm -q --whatrequires /bin/ls
1、查询已经安装的程序包: rpm -q zsh
2、查询程序包的文件列表: rpm -ql zsh
未安装: rpm -qpl zsh-5.0.2-25.el7_3.1.x86_64.rpm
3、包中配置文件列表: rpm -qc zsh
未安装: rpm -qcp zsh-5.0.2-25.el7_3.1.x86_64.rpm
4、文档列表: rpm -qd zsh
未安装: rpm -qpd zsh-5.0.2-25.el7_3.1.x86_64.rpm
8、查询程序包中changelog内容: rpm -q --changelog zsh
未安装: rpm -qp --changelog zsh-4.3.11-4.el6.centos.2.i686.rpm
9、查询信息: rpm -qi zsh
未安装: rpm -qp -i zsh-4.3.11-4.el6.centos.2.i686.rpm 
10、查询lisense: rpm -qL zsh
未安装;rpm -qp -L zsh-4.3.11-4.el6.centos.2.i686.rpm 
11、查询脚本: rpm -q --scripts zsh
查询未安装:  rpm -qp --scripts zsh-4.3.11-4.el6.centos.2.i686.rpm 
12、查询trigger: rpm -q --triggers zsh
未安装: rpm -qp --triggers zsh-4.3.11-4.el6.centos.2.i686.rpm 

13、查询包提供的功能和文件: rpm -q --provides zsh
未安装:rpm -qp --provides zsh-4.3.11-4.el6.centos.2.i686.rpm 

14、查询包所依赖的功能和文件: rpm -q -R zsh
未安装: rpm -qp -R zsh-4.3.11-4.el6.centos.2.i686.rpm
[[email protected] ~]# rpm -qp -i zsh-4.3.11-4.el6.centos.2.i686.rpm 
警告:zsh-4.3.11-4.el6.centos.2.i686.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID c105b9de: NOKEY
Name        : zsh
Version     : 4.3.11
Release     : 4.el6.centos.2 (程序包的release号码.操作系统平台.)
Architecture: i686  (CPU平台)
Install Date: (not installed) 
Group       : System Environment/Shells
Size        : 5055025
License     : BSD
Signature   : RSA/SHA1, 2016年03月23日 星期三 03时39分31秒, Key ID 0946fca2c105b9de
Source RPM  : zsh-4.3.11-4.el6.centos.2.src.rpm   ## 源码文件名
Build Date  : 2016年03月23日 星期三 02时54分00秒  ## rpm包创建时间
Build Host  : c6b8.bsys.dev.centos.org            ## 地点
Relocations : (not relocatable)                   ## 是否能自定义安装的位置
Packager    : CentOS BuildSystem <   ## 制作者 
Vendor      : CentOS                          ## 发行商
URL         :           ##  (程序包的官方站点    
    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.

** 创建rpm时,以上信息,自己定义

卸载程序包

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

1)如果配置改变,卸载时,配置文件保存为.rpmsave。覆盖安装时,配置文件名为rpmnew

2)配置文件不变,安装时,不会安装配置文件

1、卸载时保留修改过的配置文件,名字为: rpmsave
[[email protected] ~]# rpm -ivh zsh-5.0.2-25.el7_3.1.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7_3.1             ################################# [100%]
[[email protected] ~]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
[[email protected] ~]# echo "#" >> /etc/zshenv 
[[email protected] ~]# rpm -e zsh
警告:/etc/zshenv 已另存为 /etc/zshenv.rpmsave

2、安装时
[[email protected] ~]# rpm -ivh zsh-5.0.2-25.el7_3.1.x86_64.rpm 
准备中...                          ################################# [100%]
	软件包 zsh-5.0.2-25.el7_3.1.x86_64 已经安装
[[email protected] ~]# rpm -ivh --repalcepkgs  zsh-5.0.2-25.el7_3.1.x86_64.rpm 
rpm: --repalcepkgs: 未知的选项
[[email protected] ~]# rpm -ivh --replacepkgs  zsh-5.0.2-25.el7_3.1.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7_3.1             ################################# [100%]
[[email protected] ~]# ls /etc/zsh*
/etc/zshenv  /etc/zshenv.rpmsave  /etc/zshrc  /etc/zshrc.rpmnew

校验程序包

rpm -V [selection-option] [verify-options] [PACKAGE_FILE...]

不校验的选项启用

--nodeps

--nodigest

--nofiles

--noscripts

--nosignature

--nolinkto

--nofiledigest (formerly --nomd5)

--nosize

--nouser

--nogroup

--nomtime

--nomode

--nordev

校验的内容

S:大小改变

5:md5

T: modify timestamp

D:device,主次设备号不匹配

L:link路径

U:user

G:group

使用示例

1、安装,验证文件,
[[email protected] ~]# rpm -ivh zsh-5.0.2-25.el7_3.1.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7_3.1             ################################# [100%]

2、安装后验证
[[email protected] ~]# rpm -V zsh

3、改变访问时间戳
[[email protected] ~]# touch -a /etc/zshrc 
[[email protected] ~]# rpm -V zsh

4、改变修改时间戳
[[email protected] ~]# touch -m /etc/zshrc 
[[email protected] ~]# rpm -V zsh
.......T.  c /etc/zshrc

## cat 不会引起任何时间戳的变化
## vim 会引起所有时间戳的变化
[[email protected] ~]# stat /etc/zshrc  ## 初始时间戳
  文件:"/etc/zshrc"
  大小:1135      	块:8          IO 块:4096   普通文件
设备:fd01h/64769d	Inode:541815      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2017-08-15 14:39:37.409558642 +0800
最近更改:2017-08-15 14:39:35.729558698 +0800
最近改动:2017-08-15 14:39:35.729558698 +0800
创建时间:-

[[email protected] ~]# vim /etc/zshrc  ## :wq
[[email protected] ~]# stat /etc/zshrc
  文件:"/etc/zshrc"
  大小:1135      	块:8          IO 块:4096   普通文件
设备:fd01h/64769d	Inode:541818      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2017-08-15 14:42:46.131552417 +0800
最近更改:2017-08-15 14:42:46.131552417 +0800
最近改动:2017-08-15 14:42:46.135552416 +0800
创建时间:-

[[email protected] ~]# vim /etc/zshrc  ## :q
[[email protected] ~]# stat /etc/zshrc
  文件:"/etc/zshrc"
  大小:1135      	块:8          IO 块:4096   普通文件
设备:fd01h/64769d	Inode:541818      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2017-08-15 14:43:03.997551827 +0800  ##访问时间戳都变化了
最近更改:2017-08-15 14:42:46.131552417 +0800
最近改动:2017-08-15 14:42:46.135552416 +0800  ##为什么改变时间戳不变呢
创建时间:-

再试一次
[[email protected] ~]# rpm -V zsh
S.5....T.  c /etc/zprofile
[[email protected] ~]# rpm -V --nosize zsh ##不校验大小
..5....T.  c /etc/zprofile

[[email protected] ~]# rpm -V --nofiledigest zsh   ## 不校验MD5值
S......T.  c /etc/zprofile

[[email protected] ~]# rpm -V --nomtime zsh  ## 不校验修改时间戳
S.5......  c /etc/zprofile

在程序包安装前对包的来源合法性及完整性验正

完整性验正: md5,sha1,sha128,sha256,sha384,sh512

来源合法性: RSA

对来源合法性和完整性验正: GPG

加密类型:

对称加密:加解密同一密钥

非对称加密 加解密不同密钥,pk(public key) sk(secre key)

1、用一个密钥加密,只能用与之匹配的另一个密钥解密

2、私钥不能公开,公钥公开

对将要安装的程序包的校验

1、程序包提供的公钥导入至系统: rpm -import RPM-GPG-KEY-CentOS-7

2、程序包安装时,不再出现错误信息

数据库维护

位置;/var/lib 程序的状态信息

当数据库损坏时,重建数据库

--rebuildb 直接重建

--initdb  存在数据库不会重建,不存在时,重建

时间: 2024-10-12 18:24:57

谢烟客---------Linux之程序包管理rpm使用的相关文章

linux的程序包管理-rpm

我们知道,程序就是指令加上数据的集合或者称为算法加上数据结构的集合.应用程序以源代码和二进制的形式存在:源代码是包含了整个应用程序的编程语言的所有代码的文本文件:二进制则是将源代码经过一系列的转换操作之后得到的可以直接执行的文件.    使用源代码安装应用程序的步骤为:预处理(预处理器) --> 编译(编译器) --> 字节码 --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件.当我们使用源代码安装应用程序时,不同操作系统的相同操作安装出来的

谢烟客---------Linux之程序包管理基础知识

内核不提供特定的功能:功能由程序提供 程序的格式,ABI Windows:EXE Linux:ELF 程序编译的过程: 源程序 --> 编译 --> 汇编代码 --> 汇编 --> 二进制程序 --> 链接 编译的分类: 静态编译: 将程序运行时依赖的库编译进程序 动态编译:编译后需要链接库,在程序运行时,依据链接找到共享的库 程序跨平台运行 1.库虚拟化,虚拟出对应平台的库和ABI;程序运行在库之上 1).Linux上运行WINE程序,即可虚拟出Linux程序运行所依赖的库

谢烟客---------Linux之程序包管理yum使用和编译安装

yum命令及仓库创建与配置 YUM 原理 安装.卸载.查询.升级.检查,本地缓存.重装.降级.历史.获取帮助 仓库 变量.事务.URL.开销.镜像.元数据存储方式及组成 createrepo作用.命令.lftp命令 编译安装  目的 原理 开发工具及开发环境 编译后的处理 获取程序包源代码的途径 YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户命

linux之程序包管理器(rpm)

linux下的程序包可支持多种工具编写的,如C.C++.PERL等. 但是这种高级语言编写出来的代码是我们人能看懂的,但是计算机是看不懂的,那么计算机怎么执行,怎么了解人要它做什么呢? 这就需要我们做一些转换了,把人能读懂的语言让机器也能识别,这个过程就是由编译器完成的,通常是吧代码语言转换成二进制语言. 过程:预处理.编译.汇编.链接 一个程序的运行大部分时间是离不开库的. 什么是库呢?库也是一种程序,只不过与其他程序不同,库没有执行入口,不能独立运行,只能被其他独立运行的程序调用的时候才能执

Linux程序包管理rpm与yum

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.  

详解程序包管理RPM

一.定义      RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了. 二.RPM包管理的用途 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件:2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包:3.可以在查询系统中的

程序包管理rpm、quota、磁盘配额

下面介绍的是磁盘配额.quota及相关命令.rpm程序包管理器.rpm命令行工具的功能等. 一.磁盘配额 1.磁盘配额功能:磁盘配额可以用来构建文件服务器. 文件服务器功能:用来共享存储空间,让用户能够随时存储数据. 常见的文件服务器有FTP.SMB.网盘.网盘(极速上传) 磁盘配额主要是针对这类文件服务器进行用户的磁盘空间使用限制而提出的. 2.磁盘配额的设定对象 (1).能够实施读写操作的块设备: (2).要有正确的文件系统. 3.磁盘配额主要限制哪些人的访问行为 (1).用户 磁盘配额为指

程序包管理rpm、yum与简单编译安装程序

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档. ?

学习笔记之Linux程序包管理rpm、yum、编译

无论是Windows系统还是Linux系统,我们用户想要在操作系统上获得更多的乐趣还是更多的功能的话,就需要在一个干净的系统上安装各式各样的软件程序,Linux上的是ELF格式的,目前比较常见的程序包管理器如: Redhat软件包管理器---rpm Debian软件包管理器---dpkg 一.1.RPM 安装:rpm {-i|--install} [install-options] PACKAGE_FILE... -v: verbose,详细信息 -vv: 更详细的输出 -h: hashmark