首页 > 代码库 > RPM包详解
RPM包详解
RPM(Redhat Package Manager)的缩写,本意为:Red Hat 软件包管理,目前已经成为Linux工业标准。现在OpenLinux/SUSE/等分发版本的linux都有采用。
RPM包里面都包含什么?
里面包含可执行的二进制程序,这个程序和windows的软件包中的.exe文件类似是可执行的;
RPM包中还包括程序运行时所需要的文件,这也是和windows的软件包类似;
包管理器的功能:
打包、安装、卸载、升级、校验、数据库管理等
rpm包的前端工具:
dpkg --> apt-get (ubuntu)
rpm -->yum(增强型前端工具),yum(Yellow Dog)
RPM包管理的用途:
1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
3、可以在查询系统中的软件包是否安装以及其版本;
4、作为开发者可以把自己的程序打包为RPM包发布;
5、软件包签名GPG和MD5的导入,验证和签名发布;
6、依赖性检查,查看是否有软件包由于不兼容而扰乱了系统;
RPM包的使用权限:
RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以进行操作;如果普通用户拥有安装目录的权限,也可以进行安装等操作;
RPM包的命名格式:
name-version-relase.arch.rpm
name:软件包名称
verion:带有主,次和修订的软件包版本
release:rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包的不同制作的修订;同时,release还包含此包适用的OS
arch:适用于的硬件平台
x86:i386,i486,i586,i686等;
x86_64:x86_64
powerpc:ppc
noarch:依赖于虚拟机
例如:bash-4.2.3-3.centos5.x86_64.rpm
RPM分包机制:
核心包:包含程序最常用的功能
httpd-2.2.15-39.el6.centos.x86_64.rpm
开发包:包含开发所需要的库模块
httpd-devel-2.2.15-39.el6.centos.x86_64.rpm
帮助文档:
httpd-manual-2.2.15-39.el6.centos.noarch.rpm
工具包:
httpd-tools-2.2.15-39.el6.centos.x86_64.rpm
RPM命令参数:
-e 卸载rpm包
-q 查询已安装的软件信息
-i 安装rpm包
-u 升级rpm包
-c 显示所有配置文件
-d 显示所有文档文件
-h 显示安装进度
-l 列出软件包中的文件
-a 显示出文件状态
-p 查询/校验一个软件包文件
-v 显示详细的处理信息
--replacepkgs 重新安装rpm包
--justdb 升级数据库,不修改文件系统
--percent 在软件包安装时输出百分比
--version 显示版本信息
--dump 显示基本文件信息
--nomd5 不验证文件的md5支持
--nofiles 不验证软件包中的文件
--whatrequire 查询/验证需要的一个依赖性的软件包
--whatprovides 查询/验证提供一个依赖性的软件包
--test 仅做测试,不真正意义上的安装
RPM安装程序包:
rpm -i zsh-4.3.10-7.el6.x86_64.rpm
常用组合选项:-ivh
# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm Preparing... ########################################### [100%] 1:zsh ########################################### [100%]
如果依赖于其它包:
1、解决依赖关系
2、忽略依赖关系
能安装上,但有可能无法运行;
--nodeps
卸载程序包:
# rpm -e zsh #只需哟包名,不需要版本号
如果被其它包所依赖:
1、将依赖于此包的所有包一并卸载
2、忽略依赖关系
能卸载,但依赖于此包程序包可能会运行不正常;
--nodeps
如果包的配置文件安装后曾经被改动过,卸载的时候,此文件将不会卸载,而是被重命名并保留,例如
warning: /etc/zprofile saved as /etc/zprofile.rpmsave
升级程序包:
新版本替换老版本
rpm [option] /path/to/package_file
1、升级或安装
-Uvh
2、纯升级
-Fvh
3、--force:强制升级
注意:不应该对内核执行升级操作,而是安装系统允许多内核并存
查询操作:
1、查询某包是否安装
rpm -q
# rpm -q zsh zsh-4.3.10-7.el6.x86_64
2、查询所有已经安装的包
rpm -qa
# rpm -qa mozilla-filesystem-1.9-5.1.el6.x86_64 openssh-server-5.3p1-104.el6_6.1.x86_64 basesystem-10.0-4.el6.noarch glib-networking-2.28.6.1-2.2.el6.x86_64 createrepo-0.9.9-18.el6.noarch ............
3、查询包的描述信息
rpm -qi package_name
# rpm -qi zsh Name : zsh Relocations: (not relocatable) Version : 4.3.10 Vendor: CentOS Release : 7.el6 Build Date: Mon Nov 25 01:40:59 2013 Install Date: Mon Jan 19 22:32:22 2015 Build Host: c6b9.bsys.dev.centos.org Group : System Environment/Shells Source RPM: zsh-4.3.10-7.el6.src.rpm Size : 5009102 License: BSD Signature : RSA/SHA1, Mon Nov 25 03:33:46 2013, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://zsh.sunsite.dk/ Summary : A powerful interactive shell Description : The zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more.
4、查询某包安装生成了哪些文件
rpm -ql package_name
# rpm -ql zsh /bin/zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile ...........
(1)查询某包安装生成了哪些配置文件
rpm -qc package_name
# rpm -qc zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc
(2)查询某包安装生成了哪些帮助文件
rpm -qd package_name
# rpm -qd zsh /usr/share/doc/zsh-4.3.10/BUGS /usr/share/doc/zsh-4.3.10/CONTRIBUTORS /usr/share/doc/zsh-4.3.10/FAQ /usr/share/doc/zsh-4.3.10/FEATURES /usr/share/doc/zsh-4.3.10/LICENCE /usr/share/doc/zsh-4.3.10/MACHINES ...........
(3)查询程序包的相关脚本
rpm -q --scripts package_name
# rpm -q --scripts zsh postinstall scriptlet (using /bin/sh): if [ ! -f /etc/shells ] ; then echo "/bin/zsh" > /etc/shells else grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells fi ...........
5、查询某文件时由哪个包安装生成的
rpm -qf /path/to/some_file
校验:
用于检查包安装生成的文件属性是否发生变化
rpm -V package_name
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
某属性无变化,显示为(空)
RPM包来源合法性及完整性检验:
前提:在当前系统上导入包的制作者的公钥
导入:
rpm --import /path/to/key_file
# rpm -qa gpg-pubkey*
显示所有已经导入的gpg格式的公钥
# rpm -qi gpg-pubkey-NAME
显示密钥的详细信息
检查包:安装过程中会自动执行
手动检查:
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
不检查包完整性:
rpm -K --nodigest
不检查来源合法性:
rpm -K --nosignature
数据库重建:
数据库目录:/var/lib/rpm
重建:
rpm --initdb:初始化
如果事先没有库,会新建一个;如果有,则不新建;
rpm --rebuilddb: 重建
直接重建,覆盖原有的数据库
注:本文为作业整理
本文出自 “阿俊博客” 博客,请务必保留此出处http://ssc4469.blog.51cto.com/6315913/1605703
RPM包详解