
文 | 无足鸟 (转载请注明出处)
关注公众号:无足鸟ICT
微信号:wuzuniao_com
“目录:RHCA+ -> 6 软件仓库 -> 22 rpm命令(安装、升级、卸载和查询)”
rpm命令(安装、升级、卸载和查询)
RPM包默认采用系统的安装路径,可使用命令查询路径;也可手动指定,但不推荐,手动指定后安装文件都会在指定目录,查询路径命令也要手动配置后才能查询到手动指定的;语法格式为:rpm [参数] 包全名/包名
源码包安装默认使用手动指定安装路径的方式(通常是/usr/local/)
安装路径不同,同一程序的源码包和RPM包可以安装到一台服务器上,实际情况下只会装一个;同时安装两个相同程序时,同一时间只能开启一个,因为它们占用同一个端口
安装和卸载都需要考虑依赖性;安装软件前,必须先安装软件的依赖包;卸载软件时,必须先卸载软件,才能卸载依赖包
此网站查询rpm包,找依赖包等:http://www.rpmfind.net/
RPM数据库:/var/lib/rpm
路径 | 作用 |
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
用途 | 参数 | 作用 |
安装 | -i | 静默安装(install) |
-v | 查看详细信息(verbose) | |
-vv | 更详细的信息 | |
-h | 打印#,查看安装进度(hash),每个#表示2%进度 | |
--nodeps | 不检测依赖性安装;安装时没有依赖会报错,此参数可跳过,但跳过后安装软件没依赖也用不了,不建议 | |
-replacefiles | 覆盖安装;如果软件包的某个文件已存在,直接覆盖安装 | |
-replacepkgs | 覆盖软件包安装;如果软件包已安装,直接重复安装 | |
-force | 强制安装;-replacefiles和-replacepkgs的结合,重新覆盖安装 | |
-test | 测试安装;不实际安装,只检测依赖性 | |
-prefix | 指定安装路径; | |
--import | 导入公钥数字证书 | |
升级 | -U(大写) | 没安装过则直接安装,安装过则升级至最新版本;会保留低版本的配置文件 |
-F(大写) | 没安装过则不安装,必须先安装较低版本才能升级 | |
卸载 | -e | 卸载软件包,erase的首字母 |
--nodeps | 不检测依赖性直接卸载;不推荐用,可能使其他软件异常 | |
查询 | -q | 查询软件包是否安装;query的首字母 |
-a | 查询系统中所有软件包 | |
-i | 查看软件包的详细信息;information的首字母 | |
-l | 查看软件包所有文件的安装目录 | |
-c | 查看软件包的配置文件 | |
-d | 查看软件包的帮助文件 | |
-p | 查询未安装的软件包信息;package的首字母 | |
-f | 查询系统文件属于哪个软件包;file的首字母 | |
-R(大写) | 查询软件包的依赖性;requires的首字母 | |
--scripts | 查询指定包中包含的脚本 | |
--last | 按最后安装时间排序 | |
校验 | -V | 校验指定软件包 |
其他 | --rebuilddb | 修复rpm数据库;数据库默认在/var/lib/rpm/目录下 |
--initdb | 初始化数据库,没有数据库时才使用 | |
--checksig | 校验rpm包的完整性 |
一、安装
[root@wuzuniao ~]# rpm -ivh /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm#安装rpm包,依赖包没提前安装的情况下会直接提示报错;同时安装多个包时,以空格间隔包名即可
warning: /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:【错误的依赖关系】
/etc/mime.types is needed by httpd-2.4.6-17.el7.x86_64
httpd-tools = 2.4.6-17.el7【需要提前安装的包名】 is needed by httpd-2.4.6-17.el7.x86_64
libapr-1.so.0()(64bit)【需要提前安装的包名】 is needed by httpd-2.4.6-17.el7.x86_64
libaprutil-1.so.0()(64bit)【需要提前安装的包名】 is needed by httpd-2.4.6-17.el7.x86_64
[root@wuzuniao ~]#
二、升级
[root@wuzuniao ~]# rpm -Uvh /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm#若没安装则直接安装并升级到最新版本
[root@wuzuniao ~]# rpm -Fvh /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm #若没安装则不安装;若已安装则升级为最新版本
三、卸载
软件包被依赖时不允许卸载,若强制卸载会导致其他软件不可用
[root@wuzuniao ~]# rpm -e httpd #卸载程序,当时报错是提示没安装
error: package httpd is not installed
[root@wuzuniao ~]#
四、查询
1、查询某个软件包是否安装
[root@wuzuniao ~]# rpm -q perl #已安装软件只需用包名,使用包全名反而无法识别
perl-5.16.3-283.el7.x86_64
[root@wuzuniao ~]#
2、查询系统中已安装的所有软件包
[root@wuzuniao ~]# rpm -qa #查询所有已安装的软件包
libXxf86misc-1.0.3-7.1.el7.x86_64
perl-HTTP-Tiny-0.033-3.el7.noarch
baobab-3.8.2-4.el7.x86_64
[root@wuzuniao ~]# rpm -qa | grep rpm #可以使用管道符过滤筛选,找到包含包名的所有软件包
rpm-build-libs-4.11.1-16.el7.x86_64
rpm-4.11.1-16.el7.x86_64
python-deltarpm-3.6-3.el7.x86_64
deltarpm-3.6-3.el7.x86_64
rpm-python-4.11.1-16.el7.x86_64
rpm-libs-4.11.1-16.el7.x86_64
[root@wuzuniao ~]#
3、查询软件包的详细信息
[root@wuzuniao ~]# rpm -qi perl#查询软件包的详细信息
Name : perl #包名
Epoch : 4
Version : 5.16.3 #版本
Release : 283.el7 #发行版本
Architecture: x86_64
Install Date: Sat 01 Jan 2022 10:19:10 PM CST #安装时间
Group : Development/Languages #组
Size : 23548593 #软件包大小
License : (GPL+ or Artistic) and (GPLv2+ or Artistic) and Copyright Only and MIT and Public Domain and UCD #许可协议
Signature : RSA/SHA256, Thu 03 Apr 2014 01:33:27 AM CST, Key ID 199e2f91fd431d51 #数字签名
Source RPM : perl-5.16.3-283.el7.src.rpm #源RPM包文件名
Build Date : Mon 27 Jan 2014 04:10:57 AM CST #建立时间
Build Host : x86-021.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager : Red Hat, Inc. http://bugzilla.redhat.com/bugzilla
Vendor : Red Hat, Inc. #厂商
URL : http://www.perl.org/ #厂商网址
Summary : Practical Extraction and Report Language #软件包说明
Description : #描述
Perl is a high-level programming language with roots in C, sed, awk and shell
scripting. Perl is good at handling processes and files, and is especially
good at handling text. Perl's hallmarks are practicality and efficiency.
While it is used to do a lot of different things, Perl's most common
applications are system administration utilities and web programming. A large
proportion of the CGI scripts on the web are written in Perl. You need the
perl package installed on your system so that your system can handle Perl
scripts.
Install this package if you want to program in Perl or enable your system to
handle Perl scripts.
[root@wuzuniao ~]# rpm -qip /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm #查询未安装软件包的详细信息;使用绝对路径+包全名方式才能找到包
warning: /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Name : httpd
Version : 2.4.6
Release : 17.el7
Architecture: x86_64
Install Date: (not installed)
Group : System Environment/Daemons
Size : 3863865
License : ASL 2.0
Signature : RSA/SHA256, Wed 02 Apr 2014 01:54:28 AM CST, Key ID 199e2f91fd431d51
Source RPM : httpd-2.4.6-17.el7.src.rpm
Build Date : Thu 20 Mar 2014 07:17:12 PM CST
Build Host : x86-024.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager : Red Hat, Inc. http://bugzilla.redhat.com/bugzilla
Vendor : Red Hat, Inc.
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@wuzuniao ~]#
4、查询软件包所有文件路径
[root@wuzuniao ~]# rpm -ql perl #查询软件包所有文件及各自安装路径
/usr/bin/a2p
/usr/bin/c2ph
/usr/bin/find2perl
/usr/bin/h2ph
[root@wuzuniao ~]# rpm -qlp /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm#查询未安装软件包所有文件以及默认安装路径;使用绝对路径+包全名方式才能找到包
warning: /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
[root@wuzuniao ~]#
5、查询系统文件属于哪个RPM包
rpm方式安装的才能找到,手动创建的文件或目录不行
[root@wuzuniao ~]# rpm -qf /etc/chrony.conf#查找文件或目录是哪个软件包安装的
chrony-1.29.1-1.el7.x86_64
[root@wuzuniao ~]#
6、查询软件包的依赖关系
[root@wuzuniao ~]# rpm -qR perl #查询已安装软件包依赖的其他包
/usr/bin/perl
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
[root@wuzuniao ~]# rpm -qRp /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm#查找未安装软件包的依赖性;使用绝对路径+包全名方式才能找到包
warning: /media/cdrom/Packages/httpd-2.4.6-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
/etc/mime.types
system-logos >= 7.92.1-1
httpd-tools = 2.4.6-17.el7
[root@wuzuniao ~]#
7、查询软件包占用的磁盘空间
[root@wuzuniao /]# rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n #查看已安装的rpm包所占用磁盘空间
29684tlibXxf86miscn 97207tperl-HTTP-Tinyn 1398956tbaobabn 2288470tlibwvstreamsn 5046316txkeyboard-confign 1110971tsoxn
[root@wuzuniao /]#
— END —
夜雨聆风