RPM包管理详解
2015-04-12 16:43
197 查看
RPM
Red Hat开发的一种程序包管理器Red Hat Package Manager的缩写,因其简便易用,现已成为公认的行业标准,演变为RPM Package Manager的递归缩写;有特定的格式【1】;能够实现对兼容格式的程序包进行管理【2】:安装、卸载、升级、查询、校验等。
【1】RPM包的命名格式
appname-VERSION-RELEASE.ARCH.rpm
示例:bash-4.3.2-2.centos6.x86_64.rpm
VERSION:
major: 主版本号,上例中的4.3.2中的4
minor: 次版本号,上例中的4.3.2中的3
release: 发行号,上例中的4.3.2中的2
RELEASE: 包自身的修订号;有时候还会包含适用于的OS信息;上例中的2.centos6(第2次发行,适用于centos6)
ARCH: 适用的平台,上例中的x86_64
常见平台:
x86: i386, i486, i586, i686
x86_64:x86_64, amd64
powerpc:ppc
noarch:跟平台无关
程序包的获取途径
1、系统的发行光盘镜像或官方站点(或站点镜像服务器)
挂载光盘:
注意:光盘下的程序包存储于 Packages 目录下
官方站点,镜像:
mirrors.sohu.com
mirrors.163.com
mirrors.aliyun.com
2、程序包的官方站点
3、第三方组织:epel
示例:教室:http://172.16.0.1/fedora-epel/6/
4、搜索引擎
示例:http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
建议:安装之前要验证程序包的合法性(包括来源合法性及程序包的完整性),验证方法后文会提及。
【2】RPM程序包管理
安装
rpm {-i|--install} [install-options] PACKAGE_FILE1...
-v:显示安装过程的详细信息;
-vv,-vvvh:通过增加v的次数来加深显示的详细程度;
-h:hash,以#来显示安装进度(1个#表示2%的进度);
安装时的常用组合:-ivh
--test:测试安装,不执行真正的安装过程,仅报告依赖关系及冲突信息等;
注意:要安装的程序包前一定要跟上绝对路径或相对路径
--nodeps:忽略依赖关系;
副作用:能成功安装,但未必能成功运行;
程序包之间存在依赖关系(如下图所示)
由众多目的单一的小程序组成,结果程序之间存在相关性;
--replacepkgs:覆盖安装,重新安装并覆盖原有的文件;
--force:强制安装;
--relocate:重新指定程序包的安装路径(前提是程序包支持指定路径);
--oldpackage:降级到老版本;
升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
-U:升级或安装 ,即要升级的老版本若不存就直接安装新版本程序包
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-F:升级,即要升级的老版本若不存在就不会升级
可用选项同安装选项
注意:一定不要对内核执行升级操作;Linux允许多内核共存,所以可以直接安装多个不同版本的内核;
注意:如果程序包的配置文件安装后曾被修改,升级时,新版本的配置文件不会覆盖老版本的配置文件,而是把新版本的配置文件重命名(加后缀.rpmnew)后保存;
卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
简单用法:rpm -e PACKAGE_NAME...
--nodeps:忽略依赖关系;
--test:测试卸载;dry-run模式;
--allmatches: 如果一个程序包同时安装多个版本,则此选项一次全部卸载之;
注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存;
查询
查询某包是否已经安装,查看安装的所有包,以及查看某包的详细信息
-rpm {-q|--query} [select-options] [query-options]
[select-options]:
1、查询某包或某些包是否安装:
rpm -q PACKAGE_NAME
2、查询已安装的所有包:
rpm -qa
3、查询某文件是由哪个包安装生成:
rpm -qf /PATH/TO/SOMEFILE
4、查询尚未安装的包文件的相关信息:
下边命令选项中间加p
例如:rpm -qpi PACKAGE_FILE1...
[query-options]:
1、查询某包的简要说明信息:
rpm -qi PACKAGE_NAME(安装包名)
2、查询某安装包安装生成的文件列表:
rpm -ql PACKAGE_NAME
3、查询某包安装后生成的所有配置文件:
rpm -qc PACKAGE_NAME
4、查询某包安装完成后生成的所有帮助文件:
rpm -qd PACKAGE_NAME
5、查看某包制作时随版本变化的changelog信息:
rpm -q --changelog PACKAGE_NAME
6、查询某包提供的功用capabilities:
rpm -q --provides PACKAGE_NAME
7、查询某包依赖的功用capabilities:
rpm -q --requires PACKAGE_NAME
8、查询某包安装、卸载时执行的脚本:
rpm -q --scripts PACKAGE_NAME
脚本有四类:
preinstall: 安装过程开始之前执行的脚本;
postinstall: 安装过程完成之后执行的脚本;
preuninstall: 卸载开始之前执行的脚本 ;
postuninstall: 卸载过程完成之后执行的脚本;
注意:安装和升级时需跟带完整路径的安装包名,卸载和查询时只需跟安装包名即可
校验
查询包安装之后生成的文件是否发生过改变
rpm {-V|--verify} [select-options] [verify-options]
简单用法: rpm -V PACKAGE_NAME
程序包的合法性验证
来源合法:
由我们信任的制作者提供;
依赖于:制作者的数字签名;签名是作者使用自己的私钥加密程序包的特征码生成的;
内容合法:
包未被二次修改,完整性验证成功;
依赖于:制作者提供的程序特征码;
验证方式:安装者用同样的特征码提取方法提取程序包的特征码,并与原作者提供的相比较;
验证光盘中程序包的来源及完整性:
导入:rpm --import /path/to/RPM-GPG-KEY-FILE
验证:rpm {-K|--checksig} PACKAGE_FILE
--nosignature: 不检查来源合法性
--nodigest: 不检查完整性
rpm管理器数据库
/var/lib/rpm
重建数据库:
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]
默认重建在 /var/lib/rpm,只有需重新指定重建目录时才需跟此选项
--initdb:初始化数据库,即数据库完全不存在时,可新建之;
--rebuliddb:无论当前数据库存在与否,都会直接重建之;
Red Hat开发的一种程序包管理器Red Hat Package Manager的缩写,因其简便易用,现已成为公认的行业标准,演变为RPM Package Manager的递归缩写;有特定的格式【1】;能够实现对兼容格式的程序包进行管理【2】:安装、卸载、升级、查询、校验等。
【1】RPM包的命名格式
appname-VERSION-RELEASE.ARCH.rpm
示例:bash-4.3.2-2.centos6.x86_64.rpm
VERSION:
major: 主版本号,上例中的4.3.2中的4
minor: 次版本号,上例中的4.3.2中的3
release: 发行号,上例中的4.3.2中的2
RELEASE: 包自身的修订号;有时候还会包含适用于的OS信息;上例中的2.centos6(第2次发行,适用于centos6)
ARCH: 适用的平台,上例中的x86_64
常见平台:
x86: i386, i486, i586, i686
x86_64:x86_64, amd64
powerpc:ppc
noarch:跟平台无关
程序包的获取途径
1、系统的发行光盘镜像或官方站点(或站点镜像服务器)
挂载光盘:
注意:光盘下的程序包存储于 Packages 目录下
官方站点,镜像:
mirrors.sohu.com
mirrors.163.com
mirrors.aliyun.com
2、程序包的官方站点
3、第三方组织:epel
示例:教室:http://172.16.0.1/fedora-epel/6/
4、搜索引擎
示例:http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
建议:安装之前要验证程序包的合法性(包括来源合法性及程序包的完整性),验证方法后文会提及。
【2】RPM程序包管理
安装
rpm {-i|--install} [install-options] PACKAGE_FILE1...
-v:显示安装过程的详细信息;
-vv,-vvvh:通过增加v的次数来加深显示的详细程度;
-h:hash,以#来显示安装进度(1个#表示2%的进度);
安装时的常用组合:-ivh
--test:测试安装,不执行真正的安装过程,仅报告依赖关系及冲突信息等;
注意:要安装的程序包前一定要跟上绝对路径或相对路径
--nodeps:忽略依赖关系;
副作用:能成功安装,但未必能成功运行;
程序包之间存在依赖关系(如下图所示)
由众多目的单一的小程序组成,结果程序之间存在相关性;
--replacepkgs:覆盖安装,重新安装并覆盖原有的文件;
--force:强制安装;
--relocate:重新指定程序包的安装路径(前提是程序包支持指定路径);
--oldpackage:降级到老版本;
升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
-U:升级或安装 ,即要升级的老版本若不存就直接安装新版本程序包
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-F:升级,即要升级的老版本若不存在就不会升级
可用选项同安装选项
注意:一定不要对内核执行升级操作;Linux允许多内核共存,所以可以直接安装多个不同版本的内核;
注意:如果程序包的配置文件安装后曾被修改,升级时,新版本的配置文件不会覆盖老版本的配置文件,而是把新版本的配置文件重命名(加后缀.rpmnew)后保存;
卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
简单用法:rpm -e PACKAGE_NAME...
--nodeps:忽略依赖关系;
--test:测试卸载;dry-run模式;
--allmatches: 如果一个程序包同时安装多个版本,则此选项一次全部卸载之;
注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存;
查询
查询某包是否已经安装,查看安装的所有包,以及查看某包的详细信息
-rpm {-q|--query} [select-options] [query-options]
[select-options]:
1、查询某包或某些包是否安装:
rpm -q PACKAGE_NAME
2、查询已安装的所有包:
rpm -qa
3、查询某文件是由哪个包安装生成:
rpm -qf /PATH/TO/SOMEFILE
4、查询尚未安装的包文件的相关信息:
下边命令选项中间加p
例如:rpm -qpi PACKAGE_FILE1...
[query-options]:
1、查询某包的简要说明信息:
rpm -qi PACKAGE_NAME(安装包名)
2、查询某安装包安装生成的文件列表:
rpm -ql PACKAGE_NAME
3、查询某包安装后生成的所有配置文件:
rpm -qc PACKAGE_NAME
4、查询某包安装完成后生成的所有帮助文件:
rpm -qd PACKAGE_NAME
5、查看某包制作时随版本变化的changelog信息:
rpm -q --changelog PACKAGE_NAME
6、查询某包提供的功用capabilities:
rpm -q --provides PACKAGE_NAME
7、查询某包依赖的功用capabilities:
rpm -q --requires PACKAGE_NAME
8、查询某包安装、卸载时执行的脚本:
rpm -q --scripts PACKAGE_NAME
脚本有四类:
preinstall: 安装过程开始之前执行的脚本;
postinstall: 安装过程完成之后执行的脚本;
preuninstall: 卸载开始之前执行的脚本 ;
postuninstall: 卸载过程完成之后执行的脚本;
注意:安装和升级时需跟带完整路径的安装包名,卸载和查询时只需跟安装包名即可
校验
查询包安装之后生成的文件是否发生过改变
rpm {-V|--verify} [select-options] [verify-options]
简单用法: rpm -V PACKAGE_NAME
程序包的合法性验证
来源合法:
由我们信任的制作者提供;
依赖于:制作者的数字签名;签名是作者使用自己的私钥加密程序包的特征码生成的;
内容合法:
包未被二次修改,完整性验证成功;
依赖于:制作者提供的程序特征码;
验证方式:安装者用同样的特征码提取方法提取程序包的特征码,并与原作者提供的相比较;
验证光盘中程序包的来源及完整性:
导入:rpm --import /path/to/RPM-GPG-KEY-FILE
验证:rpm {-K|--checksig} PACKAGE_FILE
--nosignature: 不检查来源合法性
--nodigest: 不检查完整性
rpm管理器数据库
/var/lib/rpm
重建数据库:
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]
默认重建在 /var/lib/rpm,只有需重新指定重建目录时才需跟此选项
--initdb:初始化数据库,即数据库完全不存在时,可新建之;
--rebuliddb:无论当前数据库存在与否,都会直接重建之;
相关文章推荐
- rpm包管理详解(1)
- RPM包管理工具详解
- rpm包管理详解(4)
- rpm包管理详解(2)
- rpm包管理详解
- Linux逻辑盘卷管理LVM详解
- Apache+SVN+Trac搭建项目管理服务器的安装与配置详解!
- debian软件包管理详解[转]
- SQL Server数据库安全管理机制详解
- SAP MM物料管理系统功能详解
- Linux中用户管理详解(上)-Linux学习日记
- 详解ASP.NET状态管理方式优缺点
- 详解ASP.NET状态管理方式优缺点
- SQLServer数据库安全管理机制详解
- SNMP管理框架详解
- asp内置对象 ObjectContext 事务管理 详解
- 卡卡笔记之Linux网络管理----命令详解
- Webmin系统管理工具安装详解
- asp内置对象 ObjectContext 事务管理 详解
- SQLServer数据库安全管理机制详解