RPM 包管理员是在 Linux 下广泛使用的软件包管理器。RPM 此名词可能是指 .rpm 的文件格式的软件包,也可能是指其本身的软件包管理器。最早由 Red Hat 研制,现在也由开源社区开发。RPM 通常随附于 Linux 发行版,但也有单独将 RPM 作为应用软件发行的发行版。
目前常见的使用 RPM 包的 Linux 版本有 Redhat、CentOS、Fedora 。如果说 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 包的常用命令,不过一般最常用的还是安装和卸载。