Loading... <p><span style="font-size: 14px"><strong>一、概述</strong><br /></span></p> <p><span style="font-size: 14px">RPM 是RPM Package Manager(RPM软件包管理器)的缩写。由redhat公司的Redhat package manager改名而来,成了RedHat的工业标准</span></p> <p><span style="font-size: 14px"><strong>二、rpm的命名格式:</strong></span></p> <p><span style="font-size: 14px">rpm包的命名格式:<strong>name-version-relase.arch.rpm</strong></span></p> <p><span style="text-decoration: none;font-size: 14px">version: major.minor.release,同源代码</span></p> <p><span style="text-decoration: none;font-size: 14px">release: rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS</span></p> <p>如:</p> <p><span style="font-size: 14px">arch: 适用于的硬件平台,<br /></span></p> <p><span style="font-size: 14px">x86: i386, i486, i586, i686等;</span></p> <p><span style="font-size: 14px">x86_64: x86_64</span></p> <p><span style="font-size: 14px">powerpc: ppc</span></p> <p><span style="font-size: 14px">noarch: 依赖于虚拟机</span></p> <p><span style="font-size: 14px"><strong>rubygems-1.3.7</strong>-5.el6.noarch.rpm</span></p> <p><span style="font-size: 14px">以下是子包<br /></span></p> <p><span style="font-size: 14px">rubygems-devel-1.3.7-5.el6.noarch.rpm</span></p> <p><span style="font-size: 14px">三、获取rpm包的途径:</span></p> <p><span style="font-size: 14px">1、发行的光盘或站点服务器</span></p> <p><span style="font-size: 14px">镜像:</span></p> <p><span style="font-size: 14px">http://mirrors.163.com</span></p> <p><span style="font-size: 14px">http://mirrors.sohu.com</span></p> <p><span style="font-size: 14px">2、项目的官网</span></p> <p><span style="font-size: 14px">源代码<br /></span></p> <p><span style="font-size: 14px">rpm包</span></p> <p><span style="font-size: 14px">3、第三方机构或个人的制作并公开发布的rpm包</span></p> <p><span style="font-size: 14px">http://rpmfind.net </span></p> <p><span style="font-size: 14px">http://rpm.pbone.net </span></p> <p><span style="font-size: 14px">4、可靠途径:EPEL</span></p> <p><span style="font-size: 14px">fedora 维护的:Fedora-EPEL</span></p> <p><span style="font-size: 14px">四、合法性验证</span></p> <p><span style="font-size: 14px"> 包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特征码,附加原始数据后面。</span></p> <p><span style="font-size: 14px">验证过程:</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">前提:必须有可靠机制获取到包制作者的公钥;<br /></span></p> <p><span style="font-size: 14px">1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;</span></p> <p><span style="font-size: 14px">2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;</span></p> <p>五、包管理器的使用</p> <p>1、安装及重新安装</p> <p>rpm [option] package_file</p> <pre class="brush:html;toolbar:false">-i:install -v|vv|vvv : 详细信息|更详细|再详细 -h;hash,用#来表示进度,每个5% --test: 仅作测试,没有真正执行安装 --nodeps: 忽略依赖关系 --replacepkgs:重新安装 (如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留)</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180606-60.png" title="1444056308572071.png" alt="blob.png" />2、卸载</p> <p>rpm [option] package_name</p> <pre class="brush:html;toolbar:false">-e: erase --nodeps: 忽略依赖关系</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180606-35.png" title="1444058748454407.png" alt="blob.png" /></p> <p>3、升级程序包</p> <p>rpm [option] package_file</p> <pre class="brush:html;toolbar:false">-U:升级或安装 :有老版本,替换,没有就安装。 -F:纯升级:一定要有有老版本,才会安装新版本 --force: 强制升级</pre> <p>注意:不应该对内核执行升级操作,而是安装。系统允许多内核并存;</p> <p>升级完后新内核不支持。可能启动不了。</p> <p>安装后新内核不能用,还可以启用老版本。</p> <p>4、查询操作</p> <pre class="brush:html;toolbar:false">rpm -q package_name : 查询包是否安装 rpm -qa : 查询所有已经安装的包 rpm -qi package_name: 查询包的描述信息 rpm -ql package_name: 查询包生成了哪些文件 rpm -qc package_name: 查询包安装生成了哪些配置文件 rpm -qd package_name: 查询包安装生成了哪些帮助文档 rpm -q --scripts package_name: 查询包的相关脚本(安装及卸载前后四类脚本) rpm -qf some_file: 查询文件是由哪个包安装生成</pre> <p>对尚未安装的包执行查询</p> <pre class="brush:html;toolbar:false">rpm -qpi :将会生成的描述信息 rpm -qpl :将会生成的文件 rpm -qpc :将会生成的配置文件 rpm -qpd :将会生成的帮助文档</pre> <p>5、rpm包来源合法性及完整性校验:</p> <p><span style="font-family:Microsoft YaHei UI, Microsoft YaHei, Georgia, Helvetica, Arial, sans-serif, 宋体, PMingLiU, serif"><span style="font-size: 14px;line-height: 21px">系统上需要有包制作者的公钥:比如导入光盘上的公钥</span></span></p> <pre class="brush:html;toolbar:false">rpm --import package_file 导入公钥 rpm -qa gpg-pubkey* 查看导入的公钥 rpm -qi gpg-pubkey-NAME 查看公钥的详细信息</pre> <p><span style="font-family:Microsoft YaHei UI, Microsoft YaHei, Georgia, Helvetica, Arial, sans-serif, 宋体, PMingLiU, serif"><span style="font-size: 14px;line-height: 21px"><img src="//cto.wang/usr/uploads/2016/07/20160703180606-39.png" title="1444061033928740.png" alt="blob.png" /></span></span></p> <p>检查包的完整性:安装过程中自动执行</p> <pre class="brush:html;toolbar:false">rpm -K package_file 只检查不安装 rpm --checksig package_file 只检查不安装 rpm -K --nodigest 不检查包完整性 rpm -K --nosignature 不检查来源合法性</pre> <p>6、数据库重建</p> <p>数据库目录: /var/lib/rpm</p> <pre class="brush:html;toolbar:false">rpm --initdb:初始化 如果事先没有库,会新建一个;如果有,则不新建 rpm --rebuilddb:重建 直接重建,覆盖原有的数据库</pre> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信