rpm命令使用说明
1、命令概述
rpm命令是Red-Hat Package Manager(RPM软件包管理器)的缩写。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
概括的说,rpm命令包含了五种基本功能:安装、卸载、升级、查询和验证。
2、命令语法
rpm【选项】 【参数】
3、命令选项
-a:查询所有的软件包
-b或-t:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合”-l”参数使用
-d:只列出文本文件,本参数需配合”-l”参数使用
-e或--erase:卸载指定软件包
-f<文件>:查询文件或命令属于哪个软件包
-h或--hash:安装软件包时列出标记
-i:显示软件包的相关信息
-i<软件包>或--install<软件包>:安装指定的套件档;
--force:强制安装软件包
--nodeps:忽略依赖关系
--test:安装测试,并不实际安装
-l:显示软件包的文件列表
-p:查询指定的rpm软件包
-q:查询软件包
-R:显示软件包的依赖关系
-s:显示文件状态,本参数需配合”-l”参数使用
-U或--upgrade:升级指定软件包
-v:显示命令执行过程
-vv:详细显示指令执行过程
常用组合命令:
-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
rpm -q samba //查询程序是否安装
rpm -ivh /media/cdrom/RedHat/RPMS/samba-..-.E.i.rpm //按路径安装并显示进度
rpm -ivh --relocate /=/opt/gaim gaim-..-.fc.i.rpm //指定安装目录
rpm -ivh --test gaim-..-.fc.i.rpm //用来检查依赖关系;并不是真正的安装;
rpm -Uvh --oldpackage gaim-..-.fc.i.rpm //新版本降级为旧版本
rpm -qa | grep httpd #[搜索指定rpm包是否安装]--all搜索*httpd*
rpm -ql httpd #[搜索rpm包]--list所有文件安装目录
rpm -qpi Linux-.-.i.rpm #[查看rpm包]--query--package--install package信息
rpm -qpf Linux-.-.i.rpm #[查看rpm包]--file
rpm -qpR file.rpm #[查看包]依赖关系
rpmcpio file.rpm |cpio -div #[抽出文件]
rpm -ivh file.rpm #[安装新的rpm]--install--verbose--hash
rpm -ivh
rpm -Uvh file.rpm #[升级一个rpm]--upgrade
rpm -e file.rpm #[删除一个rpm包]--erase
4、命令示例
RPM有多种基本的模式:它们是安装、查询、验证、删除等。
安装模式:rpm –i
查询模式:rpm -q
验证模式:rpm –V或 -verify
删除模式:rpm –e
1.安装一个包
rpm -ivh
2.升级一个包
rpm -Uvh
3.移走一个包
rpm -e
4.安装参数
--force 强制安装
--nodeps 忽略依赖关系,强制安装
rpm -ivh *.rpm --nodeps --force
4.1 -ivh 安装软件包:
[root@lzg ~]# rpm -ivh package.rpm
其中package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。
安装过程中可能出现下面的警告或者提示:
... conflict with ...
可能是要安装的包里有一些文件可能会覆盖现有的文件,缺省时这样的情况下是无法正确安装的可以用rpm --force 强制安装即可
... is needed by ...
... is not installed ...
此包需要的一些依赖软件你没有安装可以用rpm --nodeps 来忽略依赖关系,也就是说rpm --force --nodeps可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能。
[root@lzg ~]# rpm --force -ivh package.rpm
[root@lzg ~]# rpm --force --nodeps -ivh package.rpm
4.2 安装.src.rpm软件包
以.src.rpm结尾的软件包,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
方法一:
1 rpm -i your-package.src.rpm 2 cd /usr/src/redhat/SPECS 3 rpmbuild -bp your-package.specs #一个和你的软件包同名的specs文件 4 cd /usr/src/redhat/BUILD/your-package/ #一个和你的软件包同名的目录 5 ./configure #这一步和编译普通的源码软件一样,可以加上参数 6 make 7 make install
方法二:
1 rpm -i you-package.src.rpm 2 cd /usr/src/redhat/SPECS 3 前两步和方法一相同 4 rpmbuild -bb your-package.specs #一个和你的软件包同名的specs文件 5 这时在/usr/src/redhat/RPM/i386/(根据具体包的不同,也可能是i686,noarch等等)在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。 6 执行rpm -i new-package.rpm即可安装完成。
4.3 -e 卸载软件包:
使用命令rpm -e包名,包名可以包含版本号等信息,但是不可以有后缀.rpm,比如卸载软件包proftpd-1.2.8-1,可以使用下列格式:
1 rpm -e proftpd-1.2.8-1 2 rpm -e proftpd-1.2.8 3 rpm -e proftpd- 4 rpm -e proftpd 5 不可以是下列格式: 6 rpm -e proftpd-1.2.8-1.i386.rpm 7 rpm -e proftpd-1.2.8-1.i386 8 rpm -e proftpd-1.2 9 rpm -e proftpd-1 10 有时会出现一些错误或者警告: 11 ... is needed by ... 12 这说明这个软件被其他软件需要,不能随便卸载,可以用rpm -e --nodeps强制卸载
4.4 列出系统中所有安装的rpm软件包:
1 [root@lzg ~]# rpm -qa
4.5 查询某个安装包是否安装:
1 [root@lzg ~]# rpm -qa | grep net-tools 2 net-tools-2.0-0.25.20131004git.el7.x86_64
4.6 获得某个安装包的全名(安装包名要全拼)或者是否安装:
1 [root@lzg ~]# rpm -q tree 2 tree-1.6.0-10.el7.x86_64 3 [root@lzg ~]# rpm -q tre 4 package tre is not installed
4.7 -ql 查看rpm软件包生成的所有文件:
1 [root@lzg ~]# rpm -ql tree
4.8 -qf 查询一个已经安装的文件属于那个安装包:
1 [root@lzg ~]# rpm -qf /var/cache/httpd 2 httpd-2.4.6-90.el7.centos.x86_64
这个可以配合which使用,which查看命令的绝对路径,根据路径查看命令所属软件包:
1 [root@lzg ~]# which ifconfig 2 /usr/sbin/ifconfig 3 [root@lzg ~]# rpm -qf /usr/sbin/ifconfig 4 net-tools-2.0-0.25.20131004git.el7.x86_64
4.9 -qc 查看一个已安装软件的配置文件:
1 [root@lzg ~]# rpm -qc httpd
4.10 -qd 查看一个已经安装软件的相关文档:
1 [root@lzg ~]# rpm -qd httpd
4.11 -qR 查看一下已安装软件所依赖的软件包及文件:
1 [root@lzg ~]# rpm -qR httpd
4.12 -qi 查看包详细信息:
1 [root@lzg ~]# rpm -qi httpd
4.13 --text 测试安装参数,用来检查依赖关系,并不是真正的安装:
1 [root@lzg ~]# rpm -ivh --test file.rpm
4.14 由新版本降级为旧版本,要加 --oldpackage 参数:
1 [root@lzg ~]# rpm -Uvh --oldpackage file.rpm
4.15 为软件包指定安装目录:要加 -relocate 参数;下面的举例是把file.rpm指定安装在 /opt/file 目录中:
1 [root@lzg ~]# rpm -ivh --relocate /=/opt/file file.rpm