Linux源程序包管理器之RPM

一、 RPM功能描述

打包

安装

卸载

升级

校验

数据库管理

二、 RPM包命名格式

1.       命名格式举例

name-version-relase.arch.rpm

例如:bash-4.2.3-3.centos5.x86_64.rpm

2.       分段描述

包名

版本号

RPM发行号

系统信息

平台信息

后缀

bash

4.2.3(同打包的源代码一致)

3(rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订)

    Centos5(此包适用的OS)         

X86_64( 适用于的硬件平台)

举例:                                 x86:   i386, i486, i586, i686等;

                                     x86_64:   x86_64

                                     powerpc:   ppc

                                     noarch:   依赖于虚拟机

.rpm

三、 RPM分包机制

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

4、可靠的途径:EPEL

            Fedora-EPEL

四、 rpm包的合法性验证

linux源程序包制作者制作完成之后会附加数字签名于包上,保证了包的来源合法性和完整性。

加密过程

          包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。

验证过程

前提:必须有可靠机制获取到包制作者的公钥;

         1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;

         2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;

五、 RPM包管理器使用

1.       安装程序包

命令

选项参数

文件名

Rpm

-ivh:常用组合

/path/to/package_file

Rpm

-vvv:安装时显示更详细信息

/path/to/package_file

Rpm

–test:测试是否可正常安装

/path/to/package_file

Rpm

–nodeps:忽略依赖关系安装,安装后可能无法正常运行

/path/to/package_file

Rpm

–replacepkgs:重新安装(如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

/path/to/package_file

 

2.       卸载程序包

命令

选项参数

文件名

Rpm

-e:卸载程序包

package­_name

Rpm

–nodeps:忽略依赖关系将依赖于此包的所有包一并卸载,但依赖于此包的程序包可能会运行不正常。

package­_name

Rpm

–replacepkgs:重新安装(如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

package­_name

注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如:warning: /etc/zprofile saved as /etc/zprofile.rpmsave

3.       升级程序包

命令

选项参数

文件名

Rpm

-Uvh:升级或安装

/path/to/package_file

Rpm

-Fvh:纯升级(若升级的程序包与其他程序包存在依赖关系,升级后其他程序包会运行异常,存在版本冲突问题;)  

/path/to/package_file

Rpm

–force:强制升级

/path/to/package_file

注意:不应该对内核执行升级操作,而是安装。系统允许多内核并存。

4.       查询操作

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:查询某包安装会生成哪些帮助文件

六、 几种常见使用场景

 1.       Rpm包安装后生成的文件属性是否发生改变,是否被恶意更改?

标准语句:rpm -V package_name

举例:以zsh程序包为例

1)修改其配置文件,新增“#NEWLINE”行;

Linux源程序包管理器之RPM

2rpm –V zsh 检测;

Linux源程序包管理器之RPM

3S代表文件大小,新增5字节且修改时间有改变;

注意:某属性无变化,显示为 .

各字符代表的意义:

                          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

 

 2.       包来源合法性及完整性检验

此处以检测光盘程序包检测为例;

1)导入前,安装程序包时提示无密钥

Linux源程序包管理器之RPM

2)导入包的制作者的公钥

         rpm –import /media/CentOS/RPM-GPG-KEY-CentOS-6

3) 显示所有已经导入的gpg格式的公钥

Linux源程序包管理器之RPM                              

4)显示密钥的详细信息

Linux源程序包管理器之RPM

Linux源程序包管理器之RPM

5)再次安装zsh程序包,无提示信息(检查包:安装过程中会自动执行)

Linux源程序包管理器之RPM

6)手动检查操作,两种办法如图(来源合法性和完整性)

Linux源程序包管理器之RPM

Linux源程序包管理器之RPM

7)手动检查操作(来源合法性)

Linux源程序包管理器之RPM

8)手动检查操作(包完整性)

Linux源程序包管理器之RPM

9)其他命令

清除已导入的密钥:rpm -e gpg-pubkey-NAME

 3.       Rpm程序管理器数据库重建

rpm数据库目录:/var/lib/rpm

rpm数据库重建操作:

         rpm –initdb 初始化(如果事先没有库,会新建一个;如果有,则不新建;)

         rpm –rebuilddb: 重建(直接重建,覆盖原有的数据库)

原创文章,作者:晚明伤哥,如若转载,请注明出处:http://www.178linux.com/8425

(0)
上一篇 2015-09-24 17:05
下一篇 2015-09-26 15:29

相关推荐

  • 当Web访问性能出现问题,如何深探?

    对运维或开发工程师来说,遇到访问性能问题时,最先需要定位的是问题出现在哪个环节,是网络的问题,服务端的问题,还是客户端的问题? 往往技术人员喜欢把精力放在保障后端服务的可用性方面,而对前端界面是否能正常装载,是否能完整渲染不是太关心。但从业务的角度来说,界面承载的才是最终的业务,业务是通过人机交互来实现的。 日常我们遇到哪些场景需要定位访问性能瓶颈? ·不同…

    系统运维 2017-01-09
  • 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进通信代码。或者,你只想简单的重新构造通信代码来避免类和类…

    Linux干货 2015-07-24
  • Linux的自动化安装实现

    在介绍自动化安装系统之前让我们来回顾一下系统的启动流程,系统的启动大概分为一下几个步骤:加电自检 boot sequence(mbr)— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是这么几个过程了,接下来来介绍系统的安装,安装系统虽然看起来简单,普…

    系统运维 2016-09-19
  • tcpdump输出详解

    在这里不得不再吐槽下国内整个IT粗糙浮躁,度娘下来的中文文档几尽抄袭~google下来的文档英文文档质量远高于国内中文文档.用ie或没有安装插件的浏览器访问,不然可能会有其它访问请求数据干扰分析 IP数据包结构 TCP数据包结构 // tcpdump需root权限 # tcpdump -x -i eth1 i…

    Linux干货 2015-04-15
  • MySQL-MMM安装指南(Multi-Master Replication Manager for MySQL)

    最基本的MMM安装必须至少需要2个数据库服务器和一个监控服务器下面要配置的MySQL Cluster环境包含四台数据库服务器和一台监控服务器,如下: function ip hostname server id monitoring host 192.168.0.10 mon – master 1 192.168.0.11 db1 1 maste…

    Linux干货 2015-05-01
  • 使用mysql-mmm实现高可用mysql读写分离

    MMM介绍:  MMM全称为Multi-Master Replication Manager for MySQL,即为主主复制管理器;根据MMM官网介绍,其工作原理类似于lvs,都是利用vip地址;但lvs只有一个组件便可以正常工作,而MMM则使用三个组件,分别是mysql-mmm、mysql-mmm-agent、mysql-mmm-monitor…

    Linux干货 2015-08-04