在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 [root@izpo45bh60h6bsz ~]# 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 [root@izpo45bh60h6bsz ~]# 2、-vv [root@izpo45bh60h6bsz ~]# 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 [root@izpo45bh60h6bsz ~]# 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、升级或安装 [root@izpo45bh60h6bsz ~]# 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 [root@izpo45bh60h6bsz ~]# 5、仅升级 [root@izpo45bh60h6bsz ~]# rpm -e zsh [root@izpo45bh60h6bsz ~]# rpm -Fvh zsh-5.0.2-25.el7_3.1.x86_64.rpm ##没有zsh包,不能安装 [root@izpo45bh60h6bsz ~]# [root@izpo45bh60h6bsz ~]# rpm -Uvh zsh-5.0.2-25.el7_3.1.x86_64.rpm ## 没有可安装 准备中... ################################# [100%] 正在升级/安装... 1:zsh-5.0.2-25.el7_3.1 ################################# [100%] [root@izpo45bh60h6bsz ~]# 6、卸载 ##修改配置文件 [root@izpo45bh60h6bsz ~]# echo "###" > /etc/zshrc [root@izpo45bh60h6bsz ~]# rpm -e zsh 警告:/etc/zshrc 已另存为 /etc/zshrc.rpmsave ##不修改配置 [root@izpo45bh60h6bsz ~]# rpm -e zsh [root@izpo45bh60h6bsz ~]# 7、校验程序包 ##访问配置文件,不修改 [root@izpo45bh60h6bsz ~]# vim /etc/zshrc [root@izpo45bh60h6bsz ~]# rpm -V zsh .......T. c /etc/zshrc ##修改配置文件 [root@izpo45bh60h6bsz ~]# echo "###" > /etc/zshrc ##访问doc文件,不修改 [root@izpo45bh60h6bsz ~]# vim /usr/share/doc/zsh-5.0.2/README [root@izpo45bh60h6bsz ~]# rpm -V zsh S.5....T. c /etc/zshrc .......T. d /usr/share/doc/zsh-5.0.2/README 8、导入GPG再安装 ##没有公钥 [root@izpo45bh60h6bsz ~]# 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%] ##导入公钥 [root@izpo45bh60h6bsz ~]# rpm --import RPM-GPG-KEY-CentOS-6 [root@izpo45bh60h6bsz ~]# rpm -ivh zsh-4.3.11-4.el6.centos.2.i686.rpm 准备中... ################################# [100%] 正在升级/安装... 1:zsh-4.3.11-4.el6.centos.2 ################################# [100%] 9、初始化 ##损坏数据库 [root@izpo45bh60h6bsz ~]# rm -rf /var/lib/rpm [root@izpo45bh60h6bsz ~]# rpm -e zsh 错误:未安装软件包 zsh [root@izpo45bh60h6bsz ~]# rpm -qa [root@izpo45bh60h6bsz ~]# ##重建 [root@izpo45bh60h6bsz ~]# rpm --initdb [root@izpo45bh60h6bsz ~]# ls /var/lib/rpm Basenames Conflictname __db.001 __db.002 __db.003 Dirnames Group Installtid Name Obsoletename Packages Providename Requirename Sha1header Sigmd5 Triggername [root@izpo45bh60h6bsz ~]# rpm -e zsh 错误:未安装软件包 zsh [root@izpo45bh60h6bsz ~]# rpm -qa [root@izpo45bh60h6bsz ~]# ##重建 [root@izpo45bh60h6bsz ~]# 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、测试安装
[root@izpo45bh60h6bsz ~]# rpm -q zsh zsh-5.0.2-25.el7.x86_64 [root@izpo45bh60h6bsz ~]# rpm -e zsh 警告:/etc/zshrc 已另存为 /etc/zshrc.rpmsave [root@izpo45bh60h6bsz ~]# rm /etc/zshrc.rpmsave rm:是否删除普通文件 "/etc/zshrc.rpmsave"?y [root@izpo45bh60h6bsz ~]# 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 需要 [root@izpo45bh60h6bsz ~]# rpm -ivh --test zsh-5.0.2-25.el7_3.1.x86_64.rpm 准备中... ################################# [100%] [root@izpo45bh60h6bsz ~]# rpm -q zsh 未安装软件包 zsh **通过test选项知道安装此程序包是否有依赖关系,且不会安装
2、忽略依赖关系
1)、安装 [root@izpo45bh60h6bsz ~]# 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%] [root@izpo45bh60h6bsz ~]# 2、卸载 [root@izpo45bh60h6bsz ~]# rpm -e zsh [root@izpo45bh60h6bsz ~]#
3、不检查包的完整性
[root@izpo45bh60h6bsz ~]# 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、不检查包的来源合法性
[root@izpo45bh60h6bsz ~]# 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、强制安装
[root@izpo45bh60h6bsz ~]# 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 已经安装 在已经安装的情况下在次安装 [root@izpo45bh60h6bsz ~]# 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、重新安装
[root@izpo45bh60h6bsz ~]# 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 已经安装 在已经安装的情况下重新安装 [root@izpo45bh60h6bsz ~]# 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、不执行触发器
[root@izpo45bh60h6bsz ~]# 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、查看脚本 [root@izpo45bh60h6bsz ~]# 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、不执行脚本 [root@izpo45bh60h6bsz ~]# rpm -e --nopostun zsh 由以上脚本可知,传递的$1不为0 不会将/etc/shells目录中的/bin/zsh删除 [root@izpo45bh60h6bsz ~]# 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
[root@izpo45bh60h6bsz ~]# 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 [root@izpo45bh60h6bsz ~]# rpm -ivh zsh-5.0.2-25.el7_3.1.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:zsh-5.0.2-25.el7_3.1 ################################# [100%] [root@izpo45bh60h6bsz ~]# rpm -qc zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc [root@izpo45bh60h6bsz ~]# echo "#" >> /etc/zshenv [root@izpo45bh60h6bsz ~]# rpm -e zsh 警告:/etc/zshenv 已另存为 /etc/zshenv.rpmsave 2、安装时 [root@izpo45bh60h6bsz ~]# rpm -ivh zsh-5.0.2-25.el7_3.1.x86_64.rpm 准备中... ################################# [100%] 软件包 zsh-5.0.2-25.el7_3.1.x86_64 已经安装 [root@izpo45bh60h6bsz ~]# rpm -ivh --repalcepkgs zsh-5.0.2-25.el7_3.1.x86_64.rpm rpm: --repalcepkgs: 未知的选项 [root@izpo45bh60h6bsz ~]# 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%] [root@izpo45bh60h6bsz ~]# 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、安装,验证文件, [root@izpo45bh60h6bsz ~]# 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、安装后验证 [root@izpo45bh60h6bsz ~]# rpm -V zsh 3、改变访问时间戳 [root@izpo45bh60h6bsz ~]# touch -a /etc/zshrc [root@izpo45bh60h6bsz ~]# rpm -V zsh 4、改变修改时间戳 [root@izpo45bh60h6bsz ~]# touch -m /etc/zshrc [root@izpo45bh60h6bsz ~]# rpm -V zsh .......T. c /etc/zshrc ## cat 不会引起任何时间戳的变化 ## vim 会引起所有时间戳的变化 [root@izpo45bh60h6bsz ~]# 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 创建时间:- [root@izpo45bh60h6bsz ~]# vim /etc/zshrc ## :wq [root@izpo45bh60h6bsz ~]# 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 创建时间:- [root@izpo45bh60h6bsz ~]# vim /etc/zshrc ## :q [root@izpo45bh60h6bsz ~]# 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 ##为什么改变时间戳不变呢 创建时间:- 再试一次
[root@izpo45bh60h6bsz ~]# rpm -V zsh S.5....T. c /etc/zprofile [root@izpo45bh60h6bsz ~]# rpm -V --nosize zsh ##不校验大小 ..5....T. c /etc/zprofile [root@izpo45bh60h6bsz ~]# rpm -V --nofiledigest zsh ## 不校验MD5值 S......T. c /etc/zprofile [root@izpo45bh60h6bsz ~]# 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 存在数据库不会重建,不存在时,重建