Linux rpm 包管理
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 包的常用命令,不过一般最常用的还是安装和卸载。
相关文章:
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/328/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。