linux极简小知识:9、yum install和localinstall、rpm -i的区别是什么?带你厘清yum install和localinstall

3,173 阅读3分钟

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

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