rpm早期是由redhat公司开发用来管理软件安装的机制,它以数据库的方式来记录用户所需要安装
的软件。由于软件安装通常会存在依赖属性,比如:如果我们需要安装A软件,可能需要安装软件B或C
后才允许安装A,或者安装B有需要A,所以我们就需要将存在依赖关系的软件同时安装。而rpm解决了
这一问题,他将我们说需要的软件打包成*.rpm,同时它还具有在线升级功能。
rpm包的安装环境必须和打包环境一样,还必须满足软件的依赖性,还有很重要的一点:某一软件
的rpm包可能因为打包者不同,会忽略软件中我们可能需要用到的功能,所以很多时候就需要我们手动
去编译SRPM(软件源代码)。通常没用经过编译的SRPM文件的后缀名是.src.rpm,它与rpm包的不同点
就是不能直接安装,可以自己修改参数并编译。
1.rpm包的命名格式:
eg:zsh-4.3.10-7.el6.x86_64.rpm
zsh表示软件名 4.3.7 表示软件的版本信息 10表示修正的版本号
x86_64表示适用的硬件平台 .rpm文件扩展名
2.rpm的默认安装路径:/etc 设置文件存放目录
/usr/bin 可执行文件
/usr/lib 供程序使用的动态函数库
/usr/share/doc 软件的基本使用手册和帮助文档
/usr/share/man man page文件
3.rpm包的安装 rpm -ivh package_name...(可以同时安装多个rpm包)
**-i表示安装,可以单独使用; v表示详细的安装信息;h表示显示软件的安装进度**
还可以用连网安装 rpm -ivh http://website.name/path/pkgname.rpm
在安装的过程需要用到的执行参数有
--nodeps --replacefiles --replacepkgs --test --force --prefix --noscripts
--nodeps:若因依赖关系无法安装使用此参数可强制安装,但是可能会因依赖关系而导致
软件无法正常使用
--replacefiles:可以直接覆盖以存在系统上的文件或是忽视版本冲突,但是被覆盖的文件
会无法恢复
--replacepkgs:将安装了的软件重新安装
--force:--replacefiles + --replacepkgs
--test:测试软件是否可以I安装
--profix :将软件安装在自己指定的目录下 (eg:--profix/home/user1)
--noscripts:禁止软件在安装的过程中自动执行某些系统命令
4.RPM的升级与更新 rpm -Uvh|Fvh 软件名
-Uvh 若软件没有在系统上安装,则直接安装;若已安装且不是最新版则更新
-Fvh 若软件没有在系统上安装则不安装;若已安装但不是最新版则更新
5.RPM查询
参看某软件书否安装 rpm -q gcc
列出本机上安装的所有软件 rpm -qa 软件名
参看某软件的设备文件 rpm -qc gcc
列出软件的所有文件和目录 rpm -ql zlib
参看文件是由哪个程序产生的 rpm -qf /路径/完整的文件名
列出软件的详细信息 rpm -qi zlib
其他查看参数:-qr -qd
**-qp[icblr]:中括号的参数和上面的一样,但是仅用于找出RPM文件内的信息**
RPM的验证:
rpm -V zlib: 查看zlib的文件是否被改过
rpm -Va 软件名 : 列出系统上所有被改过的文件
rpm -Vf /路径: 查看文件是否被改动过(改动后会有信息显示)
rpm -Vp 某个rpm文件的文件名:列出软件能被噶懂富哦的文件
6.RPM合法性检验:将制作者的公钥导入到系统
导入公钥:rpm --import /path/to/key_file
显示所有已经导入的gpg格式的公钥:# rpm -qa gpg-pubkey*
显示密钥的详细信息:# rpm -qi gpg-pubkey-NAME
检查包:安装过程中会自动执行
手动检查:
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
不检查包完整性 rpm -K --nodigest
不检查来源合法性:rpm -K --nosignature
7. 重建数据库与RPM的卸载
卸载 rpm -e 软件名
**我们也可以添加上面提到过的--nodeps来强制删除
数据库的所在的路径:/etc.lib/rpm
重建数据库:
如果没有则新建,否则不建:rpm --initdb
直接覆盖原有数据库,没有则新建:rpm --rebuilddb