rpm命令手册
rpm:软件包的管理工具
功能选项
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
命令语法
rpm [选项] [参数]
选项含义
选项 | 含义 |
---|---|
-i | 安装软件包 |
-v | 输出详细信息 |
-h | 安装软件包时打哈希标记 (和 -v 一起使用效果更好) |
-c | 查询rpm包的配置文件 |
-e | 卸载软件包 |
-U | 升级软件包 |
-a | 查询所有的软件包 |
-f | 查询文件或命令属于哪个软件包 |
-l | 显示软件包的文件列表 |
-s | 显示文件状态,本参数需配合”-l”参数使用 |
-p | 查询指定的rpm软件包 |
-q | 查询软件包 |
-R | 显示软件包的依赖关系 |
--force | 忽略软件包和文件的冲突 |
--percent | 以百分比的形式输出安装进度 |
--nodeps | 不验证软件包的依赖关系 |
--excludedocs | 不安装软件包中的文档文件 |
--test | 只对安装进行测试,并不实际安装 |
参数含义
参数指软件包,即 指定要操纵的rpm软件包。
参考实例
实例1 安装rpm软件包
// (1)安装rpm 软件包:
rpm -ivh your-package.rpm
安装过程中可能出现下面的警告或者提示:
... conflict with ...
// (2)要安装的软件包有一些文件可能会覆盖现有文件,可使用 --force 强制安装
rpm --force -ivh your-package.rpm
若出现以下提示:
... is needed by ...
... is not installed ...
// (3)使用 --force --nodeps 忽略依赖关系和文件问题,什么包都能安装上(这种强制安装的软件包不能保证完全发挥功能)
rpm --force --nodeps -ivh your-package.rpm
实例2 安装 .src.rpm软件包
有些软件包是以.src.rpm 结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
方法一:
rpm -i your-package.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp your-package.specs #一个和你的软件包同名的specs文件
cd /usr/src/redhat/BUILD/your-package/ #一个和你的软件包同名的目录
./configure #这一步和编译普通的源码软件一样,可以加上参数
make
make install
方法二:
rpm -i you-package.src.rpm
cd /usr/src/redhat/SPECS
前两步和方法一相同
rpmbuild -bb your-package.specs #一个和你的软件包同名的specs文件
这时在 /usr/src/redhat/RPM/i386(根据具体包的不同,也可能是i686,noarch等等)在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。执行rpm -i new-package.rpm即可安装完成。
实例3 卸载rpm软件包
// (1)卸载rpm包
rpm -e you-package.rpm
有时会出现一些错误或者警告:
... is needed by ...
// (2)这说明这个软件被其他软件需要,不能随便卸载,可以用rpm -e --nodeps强制卸载
rpm -e --nodeps you-package
实例4 查看与rpm包相关的文件和其他信息
// (1)列出所有安装过的rpm包
[root@cnLinuxer ~]# rpm -qa
// (2)查找所有安装过的包中含字符串ftp的软件包
[root@cnLinuxer ~]# rpm -qa | grep ftp
ftp-0.17-67.el7.x86_64
// (3)获取某个软件包的文件全名
[root@cnLinuxer ~]# rpm -q ftp
ftp-0.17-67.el7.x86_64
// (4)确认rpm包中的文件安装到哪里去了
[root@cnLinuxer ~]# rpm -ql ftp
/usr/bin/ftp
/usr/bin/pftp
/usr/share/man/man1/ftp.1.gz
/usr/share/man/man1/pftp.1.gz
/usr/share/man/man5/netrc.5.gz
// (5)确认未安装的rpm包中包含哪些文件
[root@cnLinuxer ~]# rpm -qlp ***.rpm
// (6)获取已安装过的软件包的版本、用途等相关信息
[root@cnLinuxer ~]# rpm -qi ftp
Name : ftp
Version : 0.17
Release : 67.el7
Architecture: x86_64
Install Date: 2021年09月24日 星期五 23时58分48秒
Group : Applications/Internet
Size : 98723
License : BSD with advertising
Signature : RSA/SHA256, 2016年11月21日 星期一 01时45分48秒, Key ID 24c6a8a7f4a80eb5
Source RPM : ftp-0.17-67.el7.src.rpm
// (7)获取未安装过的软件包的版本、用途等相关信息
[root@cnLinuxer ~]# rpm -qip ***.rpm
// (8)确认某个程序是由哪个软件包安装的,或者哪个软件包包含这个程序。
rpm -qf `which 程序名` #返回软件包的全名
rpm -qif `which 程序名` #返回软件包的有关信息
rpm -qlf `which 程序名` #返回软件包的文件列表
// (9)查询ftp软件包的依赖关系
[root@cnLinuxer ~]# rpm -qR ftp
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
...
// (10)查询crontabs软件包的配置文件
[root@cnLinuxer ~]# rpm -qc crontabs
/etc/crontab
有收获,点个在看
评论