描述:RPM 全名是『 RedHat Package Manager 』
优点:
1. 由于已经编译完成并且打包完毕,所以安装上很方便( 不需要再重新编译 );
2. 由于套件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与卸载;
缺点:
1. 安装的环境必须与打包时的环境需求一致或相当;
2. 需要满足套件的相依属性需求;
3. 卸载时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!
SRPM 是 Source RPM,与 RPM 档案相比, SRPM 多了一个重新编译的动作,我们就可以透过修改 SRPM 内的参数设定,重新编译产生能适合我们 Linux 环境的 RPM 档案。
rpm 就会将套件的信息写入:/var/lib/rpm 这个目录中,所以, 往后您在进行查询的时候或者是预计要升级的时候,相关的信息就会由 /var/lib/rpm 这个目录的内容数据来提供。
注意:使用RPM时可能会遇到软件包依赖性的问题,第一种解决方式是安装好所有的依赖包,第二种方式是使用urpmi/apt/yum来自动安装依赖包。
RPM 安装包
[root@linux ~]# rpm -ivh rp-pppoe-3.1-5.i386.rpm
[root@linux ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm
[root@linux ~]# rpm -ivh http://website.name/path/pkgname.rpm
[root@linux ~]# rpm -ivh --relocate /=/opt/rp rp-pppoe-3.1-5.i386.rpm
为安装包指定安装目录 使用--relocate
可使用的参数包括--nodeps, --nomd5, --noscripts, --replacefiles, --replacepkgs(已安装的软件再安装一次), --force, --test(检测依赖关系)
RPM 升级包
[root@linux ~]# rpm -Uvh rp-pppoe-3.1-5.i386.rpm
后面接的套件即使没有安装过,则系统将予以直接安装; 若后面接的套件有安装过旧版,则系统自动更新至新版;
[root@linux ~]# rpm -Uvh --oldpackage rp-pppoe-3.0-5.i386.rpm
降级要加--oldpackage
[root@linux ~]# rpm -Fvh rp-pppoe-3.1-5.i386.rpm
如果后面接的套件并未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您 Linux 系统内的套件会被『升级』!
RPM 查询包
[root@linux ~]# rpm -qa
[root@linux ~]# rpm -q[licdR] 已安装的套件名称
[root@linux ~]# rpm -qf 存在于系统上面的某个档案
[root@linux ~]# rpm -qp[licdR] 未安装的某个文件名称
参数:
查询主要分为两部分,一个是查已安装,另一个则是查某个 rpm 档案内容。
查询已安装套件的信息:
-q :仅查询,后面接的套件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有套件名称;
-qi :列出该套件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该套件所有的档案与目录所在完整文件名 (list);
-qc :列出该套件的所有配置文件 (找出在 /etc/ 底下的文件名)
-qd :列出该套件的所有说明档 (找出与 man 有关的档案而已)
-qR :列出与该套件有关的相依套件所含的档案 (Required 的意思)
-qf :由后面接的文件名称,找出该档案属于哪一个已安装的套件;
查询某个 RPM 档案内含有的信息
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出某个 RPM 档案内的信息,而非已安装的套件信息!
RPM 验证包
[root@linux ~]# rpm -Va
[root@linux ~]# rpm -V 已安装的套件名称
[root@linux ~]# rpm -Vp 某个 RPM 档案的档名
[root@linux ~]# rpm -Vf 在系统上面的某个文件
RPM 卸载包
[root@linux ~]# rpm -e 套件名称
如果有依赖关系,您也可以用--nodeps 忽略依赖的检查来删除。
重建数据库
[root@linux ~]# rpm --rebuilddb
REBUILD 安装包
--rebuild
这个参数会将后面的 SRPM 进行『编译』与『打包』的动作,最后会产生 RPM 的档案,但是产生的 RPM 档案并没有安装到系统上。
--recompile
这个动作会直接的『编译』『打包』并且『安装』啰!请注意, rebuild 仅『编译并打包』而已,而 recompile 不但进行编译跟打包,还同时进行『安装』了!