设为首页 收藏本站
查看: 1100|回复: 0

[经验分享] CentOS7 RPM包管理功能总结及示例

[复制链接]
YunVN网友  发表于 2019-4-17 17:19:19 |阅读模式
  RPM是红帽软件包管理器,主要用来对RPM包进行安装、升级、卸载、查询、校验和数据库维护的管理操作。
  安装:
  语法:rpm {-i|--install} [install-options] PACKAGE_FILE ...
  -i:安装一个新包。
  PACKAGE_FILE:包文件。
  常用选项:rpm -ivh PACKAGE_FILE
  -v:显示详细信息,通常会显示常规进度消息。
  -vv:显示更多的调试信息。
  -h:安装包时显示安装进度,一般与-v一起使用。
  --test:不要安装包,只需检查并报告潜在的冲突和依赖。
  --nodeps:在安装或升级包之前不要进行依赖项检查。
  --replacepkgs:即使某些软件包已经安装在此系统上,也要安装这些软件包。
  --replacefiles:即使此包替换了其他已装包的文件,也安装此包。
  --noscripts:不执行同名的脚本。
  --nosignature:读取时不要验证包或头签名。
  --nodigest:读取时不要验证包或头摘要。
  示例:安装zsh,并显示详细信息和安装进度。
  [root@centos ~]# rpm -ivh /media/cdrom/Packages/zsh-5.0.2-25.el7.x86_64.rpm
  Preparing...                          ################################# [100%]
  Updating / installing...
  1:zsh-5.0.2-25.el7                 ################################# [100%]
  升级:
  语法:
  rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
  -U:升级或安装包较新版本的包。与-i相同,只是在安装新包后会删除该包的所有其他版本。
  rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
  -F:升级包,但只能升级安装了旧版本的包。
  常用选项:上述安装的常用选项都适用于升级选项。
  --oldpackage:允许使用旧包替换掉新包。即降级。
  --force:与使用--replacepkgs、--replacefiles和--oldpackage相同。即强制升级。
  示例:升级安装zsh,并显示详细信息和安装进度。
  [root@centos ~]# rpm -Uvh /media/cdrom/Packages/zsh-5.0.2-25.el7.x86_64.rpm
  Preparing...                          ################################# [100%]
  Updating / installing...
  1:zsh-5.0.2-25.el7                 ################################# [100%]
  注意:
  (1)不要对内核做升级操作。Linux支持多内核并存,因此,直接安装新版本内核。
  (2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供。
  卸载:
  语法:rpm {-e|--erase} [erase-options] PACKAGE_NAME ...
  -e:卸载包。
  常用选项:
  --allmatches:删除与包名称匹配的包的所有版本。如果包名称与多个包匹配,通常会发出错误。
  --nodeps:在卸载包之前不要检查依赖项。
  --noscripts:不要执行同名的脚本。
  --test:不要真的卸载任何东西,只需通过卸载测试。与-vv选项一起用于调试。
  示例:卸载zsh,并显示详细信息和卸载进度。
  [root@centos ~]# rpm -evh zsh
  Preparing...                          ################################# [100%]
  Cleaning up / removing...
  1:zsh-5.0.2-25.el7                 ################################# [100%]
  查询:
  语法:rpm {-q|--query} [select-options] [query-options]
  -q:查询包相关信息。
  [select-options]:选择选项。即要查询的对象。
  PACKAGE_NAME:查询名为PACKAGE_NAME的已安装包。
  -a:查询所有已安装的包。
  -f FILE:查询FILE由哪个包生成。
  -p PACKAGE_FILE:查询未安装的PACKAGE_FILE。
  --whatprovides CAPABILITY:查询提供CAPABILITY的所有包。
  --whatrequires CAPABILITY:查询所有需要CAPABILITY才能正常工作的包。
  [query-options]:查询选项。即要查询的内容。
  --changelog:显示包的更改信息。
  -i:显示包信息,包括名称、版本和说明。
  -l:列出包中的文件。
  -c:仅列出配置文件。
  -d:仅列出文档文件。
  --provides:列出此包提供的功能。
  -R:列出此包所依赖的功能。
  --scripts:列出作为安装和卸载过程的一部分使用的特定于包的脚本。
  用法:
  rpm -qi PACKAGE_NAME
  rpm -qf FILE
  rpm -qpl PACKAGE_FILE
  示例:查询zsh的配置文件。
  [root@centos ~]# rpm -qc zsh
  /etc/skel/.zshrc
  /etc/zlogin
  /etc/zlogout
  /etc/zprofile
  /etc/zshenv
  /etc/zshrc
  校验:
  语法:rpm {-V|--verify} [select-options] [verify-options]
  -V:校验。
  [select-options]:同查询选项。
  [verify-options]:校验选项。
  --nodeps:不要验证包的依赖性。
  --nodigest:不要验证包或头摘要。
  --nofiles:不要验证包文件的任何属性。
  --noscripts:不要执行%verifyscript脚本。
  --nosignature:不要验证包或头签名。
  输出格式是一个9字符的字符串,一个字符的属性标记,后跟文件名。9个字符中的每一个都表示将文件的属性与数据库中记录的这些属性的值进行比较的结果。单个“.”表示无法执行(例如,文件权限阻止读取)。否则,(助记符)字符表示相应的验证测试失败:
  S:文件大小不同。
  M:模式不同(包括权限和文件类型)。
  5:搞要(原名MD5和)不同。
  D:设备主/次号码不匹配。
  L:readlink(2)路径不匹配。
  U:用户所有权不同。
  G:组所有权不同。
  T:修改时间不同。
  P:功能不同。
  c:配置文件。
  d:文档文件。
  g:ghost文件。
  l:许可证文件。
  r:自述文件。
  示例:修改zsh配置文件/etc/skel/.zshrc,再校验。
  [root@centos ~]# echo "###" >> /etc/skel/.zshrc
  [root@centos ~]# rpm -V zsh
  S.5....T.  c /etc/skel/.zshrc
  包来源合法性验证和完整性验证:
  来源合法性验证:包制作者用自己的私钥将包通过计算得到的MD5值加密生成数字签名,包使用者用包制作者的公钥对包的数字签名解密得到包的MD5值。
  完整性验证:将包通过计算得到的MD5值和验证了来源合法性得到的MD5值进行对比。
  导入信任的包制作者的密钥:rpmkeys --import PUBKEY ...
  rpmkeys --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  验证:
  (1)安装此组织签名的程序时,会自动执行验证。
  (2)手动验证:rpmkeys {-K|--checksig} PACKAGE_FILE ...
  示列:导入CentOS7光盘中的密钥,对光盘中的zsh包进行验证。
  [root@centos ~]# rpmkeys --import /media/cdrom/RPM-GPG-KEY-CentOS-7
  [root@centos ~]# rpmkeys -K /media/cdrom/Packages/zsh-5.0.2-25.el7.x86_64.rpm
  /media/cdrom/Packages/zsh-5.0.2-25.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
  数据库重建:
  语法:rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
  --initdb:创建一个新数据库。当前无任何数据库时创建一个新的,有数据库时不执行任何操作。
  --rebuilddb:从已安装的包头重新生成数据库索引。
  --dbpatch DIRECTORY:使用DIRECTORY中的数据库,而不是默认路径/var/lib/rpm。
  --root DIRECTORY:对于所有操作,请使用DIRECTORY文件系统。请注意,这意味着DIRECTORY中的数据库将用于依赖项检查,并且在根目录更改为DIRECTORY后,将运行任何脚本。
  示例:创建/tmp/rpmdb目录,在此目录中生成rpm数据库。
  [root@centos ~]# mkdir /tmp/rpmdb
  [root@centos ~]# rpm --initdb --dbpath /tmp/rpmdb
  [root@centos ~]# ls /tmp/rpmdb
  Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
  Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-828393-1-1.html 上篇帖子: Linux的学习之路 下篇帖子: Centos7 Snapper快照备份
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表