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

相关推荐

  • 一起学WINS系列(二)安装、配置

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159128  此系列第二节:安装服务端、配置客户端。          完整的WINS系统…

    Linux干货 2015-03-25
  • Linux网络属性管理

    Linux网络属性管理 linux的网络配置方法有多种,而且随发行版及版本而略微不同。我目前的测试环境为CentOS6和CentOS7。 常用的网络配置命令或方法有:ifconfig,route,netstat,ip,ss,nmcli,配置文件。 首先:命令方法介绍 一、命令简介 ifconfig:是个比较传统的命令,可以配置网络接口的启用及关闭,IP地址等…

    系统运维 2016-05-29
  • Mysql 多表联合查询效率分析及优化

    1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如:  SELECT * FROM table1 CROSS JOIN table2  &nb…

    Linux干货 2015-04-13
  • 软链接与硬链接的分析

    Linux引用硬链接与软链接,是为了实现文件的共享,更有隐藏文件路径、增加权限安全及节省存储等的好处。很多新手不知道软链接与硬链接的区别,今天大家一起总结它们的区别吧^_^ 一,硬链接 硬链接的特性可以体现出什么是硬链接: 通过索引节点来进行链接,文件要有相同的inode及data block 不允许跨分区创建 只有在同一文件系统中的文件之间才可以,不能交叉…

    2017-07-22
  • Hadoop实战实例

     Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以不考虑内存泄露一样, MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器…

    Linux干货 2015-04-13
  • 编程命名中的7+1个提示

    前几天Neo写过《编程中的命名设计那点事》,这里也有另外一篇和程序命名的文章,可以从另一个角度看看。 1.- 变量应该是尽可能的望文知意。千万不要使用教材中的命名方式。 好的变量: daysDateRange, flightNumber, carColor. 坏的变量: days, dRange, temp, data, aux… 在我们…

    Linux干货 2015-04-03