分享交流
合作共赢!

Linux深入学习【十四】——程序包rpm管理

一、查看rpm包相关安装、卸载脚本

1.查看rpm安装卸载脚本命令:

# rpm -q –scripts package

[root@6 /]#rpm -q --scripts mysql
postinstall scriptlet (using /bin/sh):
/sbin/install-info /usr/share/info/mysql.info.gz /usr/share/info/dir
/sbin/ldconfig
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
    /sbin/install-info --delete /usr/share/info/mysql.info.gz /usr/share/info/dir || :
fi
postuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ] ; then
    /sbin/ldconfig
fi

2.脚本段分类:

脚本中会有一些标识声明的脚本段

  • preinstall scriptlet (using /bin/sh)::安装前执行脚本
  • postinstall scriptlet (using /bin/sh)::安装后执行脚本
  • preuninstall scriptlet (using /bin/sh)::卸载前执行脚本
  • postuninstall scriptlet (using /bin/sh)::卸载后执行脚本

如果安装过程中,不想执行其中一个脚本,可以指定:

  • -nopre:不执行安装前脚本
  • –nopost:不执行安装后脚本
  • –nopreun :不执行卸载前脚本
  • –nopostun:不执行卸载后脚本
  • 全部不执行,使用:–noscripts 即相当于前面四个的总合

二、RPM包安装、更新、删除等常用操作命令

1.常用命令:

  • rpm -ivh package.rpm 安装一个rpm包
  • rpm -ivh –nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
  • rpm -U package.rpm 更新一个rpm包但不改变其配置文件
  • rpm -F package.rpm 更新一个确定已经安装的rpm包
  • rpm -e package_name.rpm 删除一个rpm包
  • rpm -qa 显示系统中所有已经安装的rpm包
  • rpm -qa | grep httpd 显示所有名称中包含 “httpd” 字样的rpm包
  • rpm -qi package_name 获取一个已安装包的特殊信息
  • rpm -qg “System Environment/Daemons” 显示一个组件的rpm包
  • rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
  • rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
  • rpm -q package_name –whatrequires 显示与一个rpm包存在依赖关系的列表
  • rpm -q package_name –whatprovides 显示一个rpm包所占的体积
  • rpm -q package_name –scripts 显示在安装/删除期间所执行的脚本l
  • rpm -q package_name –changelog 显示一个rpm包的修改历史
  • rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供
  • rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
  • rpm –import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
  • rpm –checksig package.rpm 确认一个rpm包的完整性
  • rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
  • rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
  • rpm -Va 检查系统中所有已安装的rpm包- 小心使用
  • rpm -Vp package.rpm 确认一个rpm包还未安装
  • rpm2cpio package.rpm | cpio –extract –make-directories *bin* 从一个rpm包运行可执行文件
  • rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包
  • rpmbuild –rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

小结

安装 -ivh , –nodeps(忽略依赖关系警告),–replacepkgs(重新安装)

卸载:-e,–nodeps

升级:-Uvh(升级或安装),-Fvh(仅升级安装),–nodeps, –oldpackage(降级)

查询

您暂时无权查看此隐藏内容!

校验:-V

验证程序包合法性,先导入GPG密钥: –import,-K(校验),–nodigest(校验时不检查完整性),–nosignature(不检查来源合法性)

数据库重建:–initdb, –rebuliddb

2.rpm优点:

  • RPM内含已编译过的程序与设置文件等数据,可以让用户免除重新编译的困扰。
  • RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装。
  • RPM文件本身提供软件版本信息、依赖属性软件名称、软件用途说明、软件所含文件信息,便于了解软件。
  • RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询与验证。

3.RPM默认安装路径:

/etc 一些设置文件放置的目录如/etc/crontab
/usr/bin 一些可执行文件
/usr/lib 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与帮助文档
/usr/share/man 一些man page文件

三、RPM包的强制安装和强制卸载

在做RPM软件适配的时候,经常会出现需要自己安装额外的安装包,包名中的版本号不一致也会出现提示,要安装统一版本号的软件包,并且还会出现对更新软件包的依赖,

1.在已经存在软件包的情况下,按需升级软件包,可以使用升级安装:

rpm -Uvh *.rpm

2.如果升级出错,可以执行强制安装实现对软件包的版本更新:

rpm -ivh --replacefiles --force --nodeps *.rpm

3.如果想要强制卸载某软件包,可以使用如下命令:

rpm -e *.rpm --nodeps

注意:在有很多依赖时,不推荐强制卸载,如果非要试一试,要做好系统备份啊~~

4.查看软件包安装脚本的命令:

rpm --script -qp *.rpm

参考琼杰笔记文档:

Ubuntu程序包管理工具之dpkg

Linux深入学习之程序包管理【二】

Linux深入学习之二进制程序包编辑安装【三】

赞(0) 打赏
未经允许不得转载:琼杰笔记 » Linux深入学习【十四】——程序包rpm管理

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏