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
下一篇 2015-09-26

相关推荐

  • 日志分析工具Awstats实战之Nginx篇-分析结果静态化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1316979 前言: Awstats 是在 SourceForge 上发展很快的一个基原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处…

    Linux干货 2016-08-15
  • 运维监控大数据的提取与分析

    本文内容整理来自【敏捷运维大讲堂】蒋君伟老师的线上直播分享。分别从以下3个维度来分享:1、云时代监控分析的窘境;2、使用标签标记监控数据的维度;3、监控数据应用场景。 云时代监控分析的窘境 在虚拟化与容器技术广泛应用的情况下,运维对象大规模地增长,监控平台每天存储的指标都以亿计,所以监控数据如今已经成了大数据。传统的监控工具在这种场景下,对于数据的提取分析,…

    系统运维 2017-01-09
  • gzip压缩算法

    gzip,zlib,以及图形格式png,使用的是同一个压缩算法deflate。我们通过对gzip源码的分析来对deflate压缩算法做一个详细的说明: 第一,gzip压缩算法基本原理的说明。 第二,gzip压缩算法实现方法的说明。 第三,gzip实现源码级的说明。 1. Gzip压缩算法的原理      &n…

    Linux干货 2015-07-30
  • 认识shell

    一、认识shell 什么是shell?shell为单词外壳的意思。那么这是谁的外壳?我们知道一个系统中实际工作的是那些硬件,cpu、内存、磁盘等。我们如何调用这些硬件为我们工作?实际上,硬件是由内核kernel控制的。我们可以通过kernel控制硬件,但我们不能直接和内核kernel交流。我们需要一个外壳,这个外壳就是shell来沟通kernel。何为she…

    Linux干货 2015-09-22
  • 企业实时同步方案—-Sersync介绍

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1433109 Sersync 项目利用 Inotify 和 Rsync 技术实现对服务器数据实时同步的解决方案,其中 Inotify 用于监控 Sersync…

    Linux干货 2016-08-15
  • 深入理解php底层:php生命周期

    1、PHP的运行模式:     PHP两种运行模式是WEB模式、CLI模式。无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行。 1、当我们在终端敲入php这个命令的时候,它使用的是CLI。 它就像一个web服务器一样来支持php完成这个请求,请求完成后再重新把控制权交给终端。 2、当使用Apache或者别web服务器…

    系统运维 2015-05-28