小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
yum install、localinstall、rpm -i安装命令对比
-
yum install
命令执行安装,会使用远程软件包仓库中的地址。 -
yum install <package_name>
将从远程仓库下载安装软件包。因此,安装某个版本的软件包时,需要配置指定的yum仓库地址,否则可能查找不到对应的软件包。但是,可以指定一个软件包的url地址,安装该远程地址的软件包;并且也可以指定一个本地的rpm包全名,即安装本地包,此时安装基本和localinstall没有区别。 -
yum localinstall <package_name_locate>
用于安装本地的rpm包,并且会自动联网从远程仓库查找相关的依赖包,以完成安装,同时也可以指定一个远程包的url地址,执行安装。对于本地安装rpm包时,解决需要的安装依赖问题很有帮助。尤其是使用rpm -i
安装本地包,有可能缺少依赖导致安装失败,这时可以使用 yum localinstall 解决。yum localinstall
也可以指定一个远程的软件包的url地址,即执行安装网络地址上的软件包。 -
yum install
指定一个软件包名,会从当前目录查找包(如果是一个包全名的话)、然后从远程仓库查找该软件包并下载;yum localinstall
指定一个软件包名,会从当前目录查找安装包并在安装过程中,从远程仓库下载安装必须的依赖。 -
install 和 localinstall 后面都可以指定一个url地址的软件包,yum会安装该地址指定的软件。
-
rpm -i <package_name_locate>
安装本地的rpm包,通常使用rpm -ivh xxx
显示安装过程。如果包存在必须安装的依赖,则无法解决,将会安装失败。rpm命令不会涉及远程仓库。但是,rpm后面的软件包,也可以是一个url软件地址。
使用 yum localinstall
安装本地包并自动联网查找安装相关依赖,其实也有个限制,就是已有的yum仓库能找到依赖包,如果没有,也无法完成安装。
yum install、localinstall的相同和差别
yum install 和 yum localinstall 相同的地方有如下三点:
- yum install、yum localinstall都可以安装本地rpm包;
- 也都可以指定一个远程url的rpm包;
- 两者都会从远程仓库安装相关依赖;
yum install 和 yum localinstall 不同的地方有:
- yum localinstall 后跟的包名必须是 .rpm 结尾,即必须是一个指定的rpm全包名。即 yum localinstall 不能指定一个具体位置不存在软件包,因为它不会从远程仓库查找包名。
- yum install 可以跟不是 .rpm 结尾的包,即可以跟非全包名的软件包,这时将会从远程仓库中查找该软件包,并下载安装。
- 在指定具体全包名的软件包时,信息提示install会显示Error,而localinstall则不会。
测试示例
- localinstall后的包名不指定rpm时,会提示不是以 .rpm 结尾:
# yum localinstall mysql-community-server
Loaded plugins: fastestmirror, langpacks
Skipping: mysql-community-server, filename does not end in .rpm.
Nothing to do
# yum install mysql-community-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package mysql-community-server-8.0.26-1.el7.x86_64 already installed and latest version
Nothing to do
- install 和 localinstall 安装指定的具体本地包:
# yum localinstall mysql-community-server-8.0.26-1.el7.x86_64.rpm
Loaded plugins: fastestmirror, langpacks
Examining mysql-community-server-8.0.26-1.el7.x86_64.rpm: mysql-community-server-8.0.26-1.el7.x86_64
mysql-community-server-8.0.26-1.el7.x86_64.rpm: does not update installed package.
Nothing to do
# yum install mysql-community-server-8.0.26-1.el7.x86_64.rpm
Loaded plugins: fastestmirror, langpacks
Examining mysql-community-server-8.0.26-1.el7.x86_64.rpm: mysql-community-server-8.0.26-1.el7.x86_64
mysql-community-server-8.0.26-1.el7.x86_64.rpm: does not update installed package.
Error: Nothing to do
可以看到在没有更新时,install提示不需要任何操作时,会有Error的错误。
- 安装一个url指定的具体rpm包
# yum localinstall https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
Loaded plugins: fastestmirror, langpacks
mysql80-community-release-el7-3.noarch.rpm | 25 kB 00:00
Examining /var/tmp/yum-root-Rs4zcs/mysql80-community-release-el7-3.noarch.rpm: mysql80-community-release-el7-3.noarch
/var/tmp/yum-root-Rs4zcs/mysql80-community-release-el7-3.noarch.rpm: does not update installed package.
Nothing to do
# yum install https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
Loaded plugins: fastestmirror, langpacks
mysql80-community-release-el7-3.noarch.rpm | 25 kB 00:00
Examining /var/tmp/yum-root-Rs4zcs/mysql80-community-release-el7-3.noarch.rpm: mysql80-community-release-el7-3.noarch
/var/tmp/yum-root-Rs4zcs/mysql80-community-release-el7-3.noarch.rpm: does not update installed package.
Error: Nothing to do