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

[经验分享] Linux——RPM包管理

[复制链接]

尚未签到

发表于 2018-5-22 11:56:25 | 显示全部楼层 |阅读模式
  啥是RPM?
  原来RPM就是redhat package manager的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,后来采取名称采取了递归缩写的方式,即:RPM Package Manager(RPM 软件包管理器)。现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。注:据说RPM文件在Linux系统中的安装最为简便
  

  RPM是用来干嘛的?

  软件包管理器嘛,听名字就知道是管理软件包的啊。也就是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。主要功能呢就是:打包、安装、卸载、升级、校验、数据库管理。
  

  RPM包的名字是啥样的?

  在用之前呢,要先明白RPM包的命名格式,不然废了半天劲下载下来的包,竟然发现不可用那就傻眼了。

  name-version-relase.arch.rpm
  name:就是包的名称

  version:major.minor.release 版本号
  relase:RPM包自身的发行号,与程序源码的发行号无关,仅用于标识RPM包不同制作
  的修订;同时,relase还包含此包适用的OS。例如:bash-4.2.3-3.centos5

  arch:标识RPM包适用的硬件平台

  x86: i386, i486, i586, i686等;
  x86_64: x86_64
  powerpc: ppc
  noarch: 依赖于虚拟机
  例如:bash-4.2.3-3.centos5.x86_64.rpm
  还有一点需要注意的是一个程序可能有很多的功能,比如常用的6个,特殊的2个,还包含二次开发的相关功能,我们需要的可能就是一些常用的功能,那些非常用的我们能不能不安装呢?其实RPM包还有一种分包机制;

  核心包(也就是主包):命名与源程序一样

  bash-4.2.3-3.centos7.x86_64.rpm
  子包:

  bash-a-4.2.3-3.centos7.x86_64.rpm
  bash-b-4.2.3-3.centos7.x86_64.rpm
  bash-devel-4.2.3-3.centos7.x86_64.rpm
  

  获取RPM包的途径

  1、发行的光盘或站点服务器
  镜像:
  http://mirrors.163.com
  http://mirrors.sohu.com
  2、项目的官网
  源代码
  rpm包
  3、很多第三方机构或个人制作并公开发布许多rpm包
  http://rpmfind.net
  http://rpm.pbone.net
  可靠的途径:EPEL
  Fedora-EPEL
  

  RPM包的合法性校验

  我们知道现在无聊的骇客越来越多,那怎么保证我们从网站下载到我们PC上的数据没有在路上遭遇埋伏呢?对头,就是对下载到的RPM包进行合法性校验。一般情况下包的作者制作完成之后都会附加数字签名于包上,用于确定包的来源合法性及完整性。

  包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。
  验正过程:
  前提:必须有可靠机制获取到包制作者的公钥;
  1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;
  2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;
  

  RPM包的安装

  好的,经过前面的努力,我们终于拿到了我们想要的RPM包,那么要怎么用呢?听俺慢慢道来~
  安装程序包:
  rpm [option] /path/to/package_file
  -i: install
  -v:显示安装信息
  -vv:更详细
  -vvv:更更详细
  -h: 显示安装进度
  

  组合选项:-ivh  安装时显示安装信息及进度条
  

  --test: 仅作测试,没有真正执行安装
  

  如果安装时提示依赖于其它包的解决方法:
  1、解决依赖关系
  2、忽略依赖关系
  使用 --nodeps 忽略依赖关系,但是安装上后可能无法运行。

  

  重新安装:
  --replacepkgs
  如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew
  卸载程序包:
  rpm [option] package_name
  -e: erase
  如果被其它包所依赖:
  1、将依赖于此包的所有包一并卸载
  2、忽略依赖关系
  使用 --nodeps 忽略依赖关系,但是所有依赖于此包的程序可能会无法正常运行。

  

  注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如:warning: /etc/zprofile saved as /etc/zprofile.rpmsave
  升级程序包:
  rpm [option] /path/to/package_file
  1、升级或安装
  -Uvh
  2、纯升级
  -Fvh
  

  升级版本后可能会引起版本冲突等;
  可使用 --force 强制升级
  注意:不应该对内核执行升级操作,而是安装,因为系统允许多内核并存。
  

  EPM包的查询操作
  1、查询某包是否安装
  rpm -q package_name...
  2、查询所有已经安装的包
  rpm -qa
  按条件过滤:rpm -qa | grep 'PATTERN'
  3、查询包的描述信息
  rpm -qi package_name
  4、查询某包安装生成了哪些文件
  rpm -ql package_name
  (1) 查询某包安装生成了哪些配置文件
  rpm -qc package_name
  (2) 查询某包安装生成了哪些帮助文件
  rpm -qd package_name
  (3) 查询程序包的相关脚本
  rpm -q --scripts package_name
  脚本有四类:
  preinstall:安装前脚本
  postinstall: 安装后脚本
  preuninstall: 卸载前脚本
  postuninstall: 年前后脚本
  5、查询某文件是由哪个包安装生成的
  rpm -qf /path/to/some_file
  6、对尚未安装的包执行查询
  rpm [option] /path/to/package_file
  -qpi
  -qpl
  -qpc
  -qpd
  校验:
  用于检查包安装生成的文件属性是否发生变化,通过此信息可查看已安装的程序有无被人修改过,防黑必备。
  rpm -V package_name
  S file Size differs
  M Mode differs (includes permissions and file type)
  5 digest (formerly MD5 sum) differs
  D Device major/minor number mismatch
  L readLink(2) path mismatch
  U User ownership differs
  G Group ownership differs
  T mTime differs
  P caPabilities differ
  某属性无变化,显示为.
  

  RPM来源合法性及完整性检验
  前提:在当前系统上导入包的制作者的公钥
  导入:
  rpm --import /path/to/key_file
  显示所有已经导入的gpg格式的公钥
  # rpm -qa gpg-pubkey*
  显示密钥的详细信息
  # rpm -qi gpg-pubkey-NAME
  安装过程中会自动执行可以检查,想手动检查当然也是可以的。
  手动检查:
  rpm -K /path/to/package_file
  rpm --checksig /path/to/package_file
  不检查包完整性:
  rpm -K --nodigest
  不检查来源合法性:
  rpm -K --nosignature
  

  数据库重建
  数据库目录:/var/lib/rpm
  重建:
  rpm --initdb:初始化
  如果事先没有库,会新建一个;如果有,则不新建;
  rpm --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-479083-1-1.html 上篇帖子: linux系统的目录 下篇帖子: linux系统优化项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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