linux极简小知识:16、使用rpm命令安装、卸载和升级软件

656 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

RPM 包的安装

安装命令

rpm的安装命令:

rpm -ivh 包全名

命令中的各选项参数的含义:

  • -i:安装(--install);
  • -v:显示更详细的信息(--verbose);
  • -h:打印 #,显示安装进度(--hash);

要安装一个包,只要执行 rpm -i xxxrpm --install xxx 即可,-vh 用于更友好的显示详细安装进度。

-h, --hash Print 50 hash marks as the package archive is unpacked. Use with -v|--verbose for a nicer display.

在解压包存档时打印 50 个哈希标记。与 -v|--verbose 一起使用以获得更好的显示效果。

比如:

rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm

表示安装当前目录下的 httpd-2.4.6-95.el7.centos.x86_64.rpm 软件包;也可以指定绝对路径。

安装多个包

安装多个包仅需将 包全名 用空格分开即可。

如:

rpm -ivh a.rpm b.rpm c.rpm

或

rpm -i a.rpm b.rpm c.rpm

rpm命令其他选项

  • --nodeps:不检测依赖性安装。注:不检测依赖性安装的软件基本上是不能使用的,不建议这样做。
  • --replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报"某个文件已经存在"的错误,从而导致软件无法安装。使用这个选项可以忽略这个报错而覆盖安装。
  • --replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
  • -force:强制安装。不管是否已经安装,都重新安装。也就是 --replacefiles--replacepkgs 的综合。
  • --test:测试安装。不会实际安装,只是检测一下依赖性。
  • --prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。

--prefix NEWPATH start with the installation prefix in the package relocation

  • --nomd5:不检查RPM文件所含的MD5信息。
  • --noscripts:不想让该套件自行启用或者自行执行某些系统命令。RPM的优点除了可以将文件放到确定的位置之外,还可以自动执行一些前置工作的命令,例如数据库的初始化。如果不想要让RPM帮您自动执行这一类型的命令,就加上它

直接安装网络上的软件

rpm的安装源还可以是网络地址,如下,安装在线地址的MySQL:

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/mysql-community-server-8.0.26-1.el7.x86_64.rpm

RPM包的升级

rpm的安装命令:

rpm -Uvh 包全名

-U(大写)/--upgrade :如果该软件没安装则直接安装;若安装则升级至最新版本。

rpm -Fvh 包全名

-F(大写)/--freshen :如果该软件没有安装,则不会安装,必须安装有较低版本才能升级。

RPM包的卸载

RPM 软件包的卸载要考虑包之间的依赖性。

rpm的卸载命令为:

rpm -e 包名

-e/--erase 表示清除、移除、卸载软件。

软件的卸载要依据其依赖性,从上而下的下载,否则可能会报错。

如下示例中的依赖性错误:

[root@localhost ~]# rpm -e httpd
error: Failed dependencies:
httpd-mmn = 20051115 is needed by (installed) mod_wsgi-3.2-1.el6.i686
httpd-mmn = 20051115 is needed by (installed) php-5.3.3-3.el6_2.8.i686
httpd-mmn = 20051115 is needed by (installed) mod_ssl-1:2.2.15-15.el6.
centos.1.i686
httpd-mmn = 20051115 is needed by (installed) mod_perl-2.0.4-10.el6.i686
httpd = 2.2.15-15.el6.centos.1 is needed by (installed) httpd-manual-2.2.
15-15.el6.centos.1 .noarch
httpd is needed by (installed) webalizer-2.21_02-3.3.el6.i686
httpd is needed by (installed) mod_ssl-1:2.2.15-15.el6.centos.1.i686
httpd=0:2.2.15-15.el6.centos.1 is needed by(installed)mod_ssl-1:2.2.15-15.el6.centos.1.i686

卸载时,同样可以指定 --nodeps 选项,即不检查依赖直接卸载(忽略依赖关系)。通常不推荐。

虽然不推荐,不过这也是许多地方常见的写法 rpm -e xxx --nodeps

RPM重建数据库

由于多次安装和卸载不同的软件,可能会导致rpm数据库的混乱和无效数据。可以考虑使用下面的命令,重建rpm的数据库。

rpm --rebuilddb   # 重建数据库

参考

主要参考自Linux RPM包安装、卸载和升级(rpm命令)详解RPM简介与基本使用