小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
RPM 包的安装
安装命令
rpm的安装命令:
rpm -ivh 包全名
命令中的各选项参数的含义:
-i:安装(--install);-v:显示更详细的信息(--verbose);-h:打印 #,显示安装进度(--hash);
要安装一个包,只要执行 rpm -i xxx 或 rpm --install xxx 即可,-vh 用于更友好的显示详细安装进度。
-h, --hashPrint 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 # 重建数据库