RPM包管理员是在Linux下广泛使用的软件包管理器。RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身的软件包管理器。最早由Red Hat研制,现在也由开源社区开发。RPM通常随附于Linux发行版,但也有单独将RPM作为应用软件发行的发行版。

目前常见的使用 RPM 包的 Linux 版本有 Redhat、CentOSFedora 。如果说 Yum 是应用商店的话,那RPM就是安装包,Yum 安装软件需要有网络或光盘,而 RPM 只要有安装包和依赖的程序就能安装,无需网络。不过因为 Linux 的软件之间的依赖性较强,所以在安装 RPM 包的时候除了要准备要安装的 RPM 包外还需要准备一堆依赖的安装包。这里的依赖就类似于 Windows 上的各种运行库,例如 C# 开发的软件就依赖 .net framework,java 开发的软件例如 Minecraft 就依赖 java 运行环境。

安装

我这里使用的 Linux 版本是 CentOS7,因为演示使用的是云服务器,所以就直接在网上下载 RPM 包了。这里用来演示安装的 RPM 包是 P7z,这是一个用来压缩或解压 7z 文件的软件,首先下载 RPM 包:

wget https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/p7zip-16.02-10.el7.x86_64.rpm
wget https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/p7zip-plugins-16.02-10.el7.x86_64.rpm

p7z 需要下载两个文件,下载的两个 RPM 包的文件名分别是:

  • p7zip-16.02-10.el7.x86_64.rpm
  • p7zip-plugins-16.02-10.el7.x86_64.rpm

安装 RPM 包的命令是:

rpm -ivh 包文件名

其中 rpm 后面的 -ivh 是参数,下面是参数说明:

参数说明
-i安装,安装RPM必须的
-v显示详细信息
-h显示安装进度

这里就安装之前下载的两个RPM包,因为我所在的位置和存放 RPM 包的位置是同一个目录,所以安装的时候 RPM 包的文件名可以不用写完整路径,下面先安装 p7zip-16.02-10.el7.x86_64.rpm,下面是安装演示:

rpm -ivh p7zip-16.02-10.el7.x86_64.rpm

完整过程:

[root@host downloads]# rpm -ivh p7zip-16.02-10.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:p7zip-16.02-10.el7               ################################# [100%]

安装第一个的时候没遇到依赖问题,下面安装第二个,也就是 p7zip-plugins-16.02-10.el7.x86_64.rpm,下面演示:

rpm -ivh p7zip-plugins-16.02-10.el7.x86_64.rpm

完整过程:

[root@host downloads]# rpm -ivh p7zip-plugins-16.02-10.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:p7zip-plugins-16.02-10.el7       ################################# [100%]

这次竟然没遇到依赖的问题?也可能是因为我的服务器安装了很多运行库的原因吧!一般情况下如果没有安装所需依赖的软件的话,安装的时候会提示,解决方法就是根据提示的软件名称到 Google 上搜索RPM包下载安装,或者到 https://rpm.pbone.net 搜索下载安装,安装的时候先安装依赖程序,在安装主 RPM 包。

更新

更新的命令为:

rpm -Uvh 包文件名

参数说明:

参数说明
-U更新,更新必须的,注意!是大写U

-v-h 和安装时的参数是一样的,不过这里的更新需要有更高版本的 RPM 包才行,例如我之前安装的软件版本是 1.0,我需要有比 1.0 高的版本的RPM包才能更新,

卸载

卸载的命令为:

rpm -e 包名

参数说明:

参数说明
-e卸载,卸载必须的

注意!卸载的时候包名不需要输入完整的文件名,比如我要卸载 p7zip,只需要输入 rpm -e p7zip,而不是输入 rpm -e p7zip-16.02-10.el7.x86_64.rpm。如果安装的 RPM 包还依赖其他程序的话,先卸载主程序、在卸载依赖的程序。还有 卸载的时候不需要切换到 RPM 安装包所在的目录,也不需要输入任何路径,甚至安装完成后都可以删除 RPM 安装包。

查询

查询某个软件是否安装:

rpm -q 包名

查询 p7zip:

rpm -q p7zip

查询结果:

[root@host ~]# rpm -q p7zip
p7zip-16.02-10.el7.x86_64

如果查询的软件未安装:

[root@host ~]# rpm -q eclipse
package eclipse is not installed

查询的时候只需要输入包名,不需要输入版本和后缀名。

显示所有已安装的包:

rpm -qa

简单演示:

[root@host ~]# rpm -qa
libXfixes-5.0.3-1.el7.x86_64
openssh-server-6.6.1p1-31.el7.x86_64
filesystem-3.2-21.el7.x86_64
libdrm-devel-2.4.91-3.el7.x86_64
audit-2.6.5-3.el7.x86_64
bind-license-9.9.4-37.el7.noarch
libXxf86vm-1.1.4-1.el7.x86_64
chrony-2.1.1-3.el7.centos.x86_64
libXrender-0.9.10-1.el7.x86_64

查询已安装软件的详细信息:

rpm -qi 包名

下面查询p7zip:

[root@host ~]# rpm -qi p7zip
Name        : p7zip
Version     : 16.02
Release     : 10.el7
Architecture: x86_64
Install Date: Wed 09 Jan 2019 11:52:19 PM CST
Group       : Unspecified
Size        : 1771534
License     : LGPLv2 and (LGPLv2+ or CPL)
Signature   : RSA/SHA256, Tue 06 Feb 2018 08:32:42 PM CST, Key ID 6a2faea2352c64e5
Source RPM  : p7zip-16.02-10.el7.src.rpm
Build Date  : Tue 06 Feb 2018 08:24:51 PM CST
Build Host  : buildhw-09.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://p7zip.sourceforge.net/
Summary     : Very high compression ratio file archiver
Description :
p7zip is a port of 7za.exe for Unix. 7-Zip is a file archiver with a very high
compression ratio. The original version can be found at http://www.7-zip.org/.

查询的时候只需要输入包名,不需要输入完整的版本和后缀。

查询未安装RPM包的详细信息:

rpm -qip 包文件名

因为是查询未安装的 RPM 包的信息,所以需要输入安装包的完整文件名,下面查询 p7zip 的安装包:

[root@host downloads]# rpm -qip p7zip-16.02-10.el7.x86_64.rpm
Name        : p7zip
Version     : 16.02
Release     : 10.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Unspecified
Size        : 1771534
License     : LGPLv2 and (LGPLv2+ or CPL)
Signature   : RSA/SHA256, Tue 06 Feb 2018 08:32:42 PM CST, Key ID 6a2faea2352c64e5
Source RPM  : p7zip-16.02-10.el7.src.rpm
Build Date  : Tue 06 Feb 2018 08:24:51 PM CST
Build Host  : buildhw-09.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://p7zip.sourceforge.net/
Summary     : Very high compression ratio file archiver
Description :
p7zip is a port of 7za.exe for Unix. 7-Zip is a file archiver with a very high
compression ratio. The original version can be found at http://www.7-zip.org/.

查询已安装 RPM 包的安装位置:

rpm -ql 包名

只需要输入包名,不需要输入版本和后缀,下面查询 p7zip 的安装位置:

[root@host downloads]# rpm -ql p7zip
/usr/bin/7za
/usr/libexec/p7zip
/usr/libexec/p7zip/7zCon.sfx
/usr/libexec/p7zip/7za
/usr/share/doc/p7zip
/usr/share/doc/p7zip/7zC.txt
/usr/share/doc/p7zip/7zFormat.txt
/usr/share/doc/p7zip/ChangeLog
/usr/share/doc/p7zip/Methods.txt
/usr/share/doc/p7zip/README
/usr/share/doc/p7zip/lzma.txt
/usr/share/doc/p7zip/readme.txt
/usr/share/doc/p7zip/src-history.txt
/usr/share/licenses/p7zip-16.02
/usr/share/licenses/p7zip-16.02/License.txt
/usr/share/licenses/p7zip-16.02/copying.txt
/usr/share/man/man1/7za.1.gz

查询未安装 RPM 包的默认安装位置:

rpm -qlp 包文件名

下面查询 p7zip 安装包的默认安装位置:

[root@host downloads]# rpm -qlp p7zip-16.02-10.el7.x86_64.rpm
/usr/bin/7za
/usr/libexec/p7zip
/usr/libexec/p7zip/7zCon.sfx
/usr/libexec/p7zip/7za
/usr/share/doc/p7zip
/usr/share/doc/p7zip/7zC.txt
/usr/share/doc/p7zip/7zFormat.txt
/usr/share/doc/p7zip/ChangeLog
/usr/share/doc/p7zip/Methods.txt
/usr/share/doc/p7zip/README
/usr/share/doc/p7zip/lzma.txt
/usr/share/doc/p7zip/readme.txt
/usr/share/doc/p7zip/src-history.txt
/usr/share/licenses/p7zip-16.02
/usr/share/licenses/p7zip-16.02/License.txt
/usr/share/licenses/p7zip-16.02/copying.txt
/usr/share/man/man1/7za.1.gz

查询已安装的软件包依赖的软件:

rpm -qR 包名

下面查询 p7zip 依赖的软件:

[root@host downloads]# rpm -qR p7zip
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libm.so.6()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

可以看到 p7zip 依赖的软件还是很多的。

查询未安装的 RPM 安装包依赖的软件:

rpm -qRp 包文件名

下面查询 p7zip 安装包依赖的软件:

[root@host downloads]# rpm -qRp p7zip-16.02-10.el7.x86_64.rpm
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libm.so.6()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

不过在需要安装 RPM 包的时候可以直接安装,如果遇到需要安装依赖软件的话,会有提示。

下面简单整理一下查询的参数:

参数说明
-q查询必须的
-a显示所有已安装软件
-i查询RPM包的详细信息
-p查询未安装的RPM包,需配合其他参数使用
-l查询RPM包的安装位置
-R查询RPM包依赖的软件

以上就是管理 RPM 包的常用命令,不过一般最常用的还是安装和卸载。

相关文章: