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

相关推荐

  • rsync+inotify实现文件同步

    一、前言 什么是rsync,remote synchronize远程同步简写。Linux系统上由rsync这个软件包提供。rsync有几个特点,镜像保存整个文件目录树或文件系统;有较高的数据传输效率;可以借助ssh实现安全数据传输;支持匿名传输等。rsync同步只是针对变化的文件进行传输,意味着其会在源和目标之间比较文件的异同。相对与scp来说,第一次传输两…

    Linux干货 2015-10-31
  • 设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if… ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或swit…

    Linux干货 2015-07-27
  • linux中软链接和硬链接简单说明

    linux链接文件 在 Linux 上文件系统被分成两个部分:数据 (user data) 与元数据 (metadata)。数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如:文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含…

    Linux干货 2016-12-05
  • PHP中引用的详解(引用计数、写时拷贝)

    《PHP5中文手册》内容中"引用的解释"一文的摘要: 1. PHP中引用的特性 PHP中引用意味着用不同的名字访问同一个变量内容,引用不是C的指针(C语言中的指针里面存储的是变量的内容,在内存中存放的地址),是变量的另外一个别名或者映射。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Uni…

    Linux干货 2015-04-10
  • openssl基础应用

    参考http://www.178linux.com/2704 http://www.williamlong.info/archives/837.html 一、前言 什么是openssl?讲openssl之前我们先了解下什么是ssl?ssl是secure socket layer的简称,其使用对称加密解密,非对称加密解密(公钥加密解密),单向加密解密结合证书实…

    Linux干货 2015-09-27
  • Nginx+resin调优文档[原创]

    为什么不选择Apache/mod+resin?       前面一直使用该模式,mod_caucho暴露源码的bug一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G),无其它要求(当然也不能太破,呵呵)。操作系统强烈要求安装64位,32位操…

    Linux干货 2015-03-27