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

[经验分享] CentOS中rpm包管理详解

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-4-13 08:56:44 | 显示全部楼层 |阅读模式
环境说明:Win7+Vmware11+Centos6.6,使用CentOS6.6安装光盘
   RPM全名是“RedHat Package Manager”,RPM最大优点是将要安装的软件先编译过,并且打包成为RPM机制的安装包,通过包装好的软件里头默认的数据库记录这个软件要安装的时候必须具备的依赖属性软件,当安装在你的Linux主机是,RPM会先依照软件里头的数据查询Linux主机的依赖属性软件是否满足,若满足则予以安装,若不满足则不予以安装。

   在执行rpm包管理之前,我们首先将CentOS6.6光盘挂载到本机中:
    #mount /dev/cdrom /media/mnt
   其次,进入到rpm包目录中,在此目录中我们会看到很多rpm包。
    #cd /media/mnt/Packages
  下面我们就从rpm包的格式开始说起。下面就是一个典型的rpm包,从此包我们可查询到包的包名、版本号、发行号、适用平台等;
    rp-pppoe-3.1-5.x86_64.rpm
    rp-pppoe为包名;
    3.1为版本信息;
    5为发布次数;
    x86_64为适合的硬件平台;
    rpm为扩展名;
RPM默认的安装路径

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


  在对rpm包的管理过程中,我们主要从安装、升级、卸载、查询、校验等几个方面进行。
1、安装(install)
安装软件是root的工作,因此要获得root身份才能操作rpm命令,用rpm安装软件很简单。例如我们要安装xvattr-1.3-18.el6.x86_64.rpm 的文件,我们可以这样操作如下图。
wKiom1UooxKA9EXnAACW26FiMx4856.jpg
通过上图的操作我们可以知道安装rpm的简单用法,不过,我们无法显示安装的进度,因此我们通常会使用一些组合命令来执行安装。
    -i:install安装的意思
    -v:查看更详细的安装信息画面,每增加一个v,显示的安装信息会更加详细
    -h:以#号信息显示安装进度
例如如下图:
wKioL1UopkXANVLEAAEFS4siab8790.jpg
在安装rpm包时,我们还可以同时安装多个rpm包,例如如下图:
wKiom1Uopf2jH6x6AAFQbzXwZ9s318.jpg
在安装rpm之前,我们可以使用--test测试该软件是否可以安装到用户的Linux环境当中,可找出是否有属性的依赖的问题。第一张图是可以正常安装软件,第二张图不能正常安装软件。
wKioL1UoqsXSovTjAAC1xM-z3nY202.jpg
wKiom1UorOuQwaBlAAEx2DrNeXM765.jpg
如果我们在安装的过程中发现问题,或者已经知道会发生的问题,而还是要安装软件时,可以使用如下参数"强制"安装。

--nodeps:软件存在属性依赖问题而无法安装时使用,但会造成软件无法正常运行
--replacefiles:如果某软件已安装或版本信息不符合是,可以使用这个参数直接覆盖文件,但覆盖的文          件是无法恢复的
--replacepkgs:重新安装并覆盖原有的文件

--force:强制安装
--oldpackage:高级版本的包无法使用,因此降级用的
--relocate:修改安装路径
在安装过程中,建议使用-ivh参数进行安装就行,如果安装过程中发现问题,一个一个去将问题找出来,不要使用"暴力安装方法",即--force去强制安装。
2、升级(upgrade/freshen)
RPM安装升级也比较简单,就是用-Uvh或-Fvh升级即可,不过-U和-F的意义不太一样。
-Uvh:后面接的软件即使没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧的版本,则系统自动更新至新版,如下图,已经安装了旧版本,执行-Uvh,则系统自动更新。
wKioL1Uos4nj9vwcAAJuV5ScWBI685.jpg
-Fvh:如果后面接的软件并未安装到你的Linux系统上,则该软件不会被安装;即只有已安装到Linux系统内的软件会被升级,如下图,没有安装旧版本,则系统不会自动升级。


wKioL1UotEqgTBrQAACC7fGB_Mg514.jpg
在使用升级时,也可以使用test、force等特殊参数。
3、查询(query)
RPM在查询的时候,其实查询的地方是/var/lib/rpm这个目录下的数据库文件。查询就是查看某包是否已经安装,以及检查安装的所有包,还可以查看某包的详细信息等。
(1)查询某包或某些包是否安装,例如
wKiom1UotVXjkeb1AACsHNmDUnc136.jpg
(2)查询已经安装的所有包,例如
wKiom1UotdnwFNOvAAHg4xLkoOU727.jpg
(3)查询某文件是由哪个包安装生成,例如

wKiom1UotrqCYMbIAABXAiA2FbM315.jpg
  (4)尚未安装的包文件的相关信息,
-p:注意-p选项可以同一下(5)-(12)的参数配合使用,但-p是用于查找某个RPM内部的信息,而非已安装的软件信息。例如-qil
wKioL1UovjKgzN6aAADn_K5cpIE571.jpg
  (5)查询某包的简要说明信息,例如
wKioL1UoudPQ_dHWAASoXySg4UA373.jpg    (6)查询某包安装生成的文件列表,例如
wKiom1UouQfigxdUAAI54d7NBC4786.jpg
   (7)查询某包安装完成后生成的所有配置文件,例如
wKiom1UouaGwoCfVAACOFFmPlK4069.jpg       
   (8)查询某包安装完成后生成的所有帮助文件
wKiom1UoufSTgHcLAAEy_nJH1x8237.jpg             
   (9)查看某包制作时随版本变化的changelog信息
wKiom1UounuxIacmAADotuutOSw476.jpg    
  (10)查询某包提供的capabilities;
wKioL1UovByCIEpxAACri4r3XI8150.jpg      
(11)查询某包所依赖的capabilities;
wKiom1Uou4zAt59pAAC3RhXjxKI481.jpg
(12)查询某包安装或卸载时执行脚本
rpm -q --scripts PACKAGE_NAME
脚本有四类:
preinstall:安装过程开始之前执行的脚本
postinstall:安装过程完成之后执行的脚本
preuninstall:卸载开始之前执行的脚本
postinstall:卸载过程完成之后执行的脚本
4、验证与数字证书(Verify/Signature)

  验证:查询包安装之后生成的文件是否发生了改变,我们使用-V选项,常用选项:
-Vf:列出某个文件是否被改动过
-Vp:后面加的是文件名称、列出该软件内可能被改动过的文件
-Va:列出目前系统上面所有被改动过的文件
例如
wKiom1Uov1yRouujAABQgJuwMN8084.jpg
  在上图中我们发现字母c前面有一串字符串,c前面的8个信息是:

S file Size differs:文件的容量大小是否被改变
M Mode differs :文件的类型或文件的属性是否被改变
5 digest (formerly MD5 sum) differs:MD5这一种指纹码的内容已经不同
D Device major/minor number mismatch:设备的主/次代码是否改变
L readLink(2) path mismatch:Link路径已被改变
U User ownership differs:文件所有者已被改变
G Group ownership differs:文件用户组已被改变
T mTime differs:文件的创建时间已被改变
c代表的是"Configfile"的意思,也就是文件类型,包括
c:设置文件
d:文档
g:"鬼"文件
l:授权文件
r:自述文件
数字证书:可以验证rpm包的来源合法性和数据完整性。在本文中使用的是Centos6.6的光盘,所以介绍一下验证光盘中程序包的来源及完整性。
#rpm --import RPM-GPG-KEY-CentOS-6
wKiom1Uow4_gDmMwAACytpRsrpI305.jpg
如果显示OK,则rpm包可以使用和安装。
数字证书其它常用选项:
    --nosignature:不检查来源合法性
    --nodigest:不检查完整性
5、卸载与重建数据库(erase/rebuilddb)
卸载:移除已经安装的包,例如

wKiom1UoxbqzL_HxAACspQ2tDIE036.jpg
卸载的常用选项
--nodeps:忽略依赖关系
--allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之
--test:测试卸载,dry-run模式;
注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存
重建数据库:由于RPM文件经常会安装、删除、升级等,某些操作或许可能会导致RPM数据库/var/lib/rpm/内的文件损坏,因此我们有时需要对数据库进行重建。
--initdb:初始化数据库,即数据库完全不存在时,可新建之
--rebuilddb:无论当前数据存在与否,都会直接重建此库(这个操作很危险)


运维网声明 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-56519-1-1.html 上篇帖子: Centos6.3安装GNOME 下篇帖子: CentOS中rpm包管理详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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