在使用该rpm
命令时,我注意到,如果我安装some-package-1.0
并执行了另一个命令,那么当我执行以下操作rpm -ivh some-package-1.1
时,将列出两个软件包:rpm -qa | grep some-package
some-package-1.0
some-package-1.1
然而,如果我通过升级而不是安装 1.1,rpm -Uvh some-package-1.1
我会得到单个包 (1.1) 的所需结果rpm -qa | grep some-package
。
现在,同样的行为也适用于yum install
andyum update
吗?
我问是因为使用rpm -U
(升级)命令,软件包不必存在即可升级/安装,但yum update
(如果我没有记错的话)软件包必须已经存在。
我特别想知道指定包及其版本的结果,例如some-package-1.0
.总而言之,我想知道的是我是否有两个特定版本,例如some-package-1.0
和some-package-1.1
:
yum install
1.0 已经安装后,是否会在 1.1 上执行,列出 2 个软件包?- 运行
yum update some-package-1.1
成功会取代some-package-1.0
吗?
答案1
YUM 和 RPM 之间的主要区别在于,YUMyum
知道如何解决依赖关系,并且可以在工作时获取这些附加包。虽然rpm
可以提醒您注意这些依赖项,但它无法获取其他包。
至于安装与升级。这两个工具都可以执行安装,RPM 甚至允许您同时安装多个版本,但 YUM 会告诉您该软件包已经安装。所以没有 YUM 不会允许你安装多个版本。
至于yum update
,这将以两种方式之一做出反应。如果你告诉它你想要更新一个包,它会尝试这样做,下载所有必要的依赖项并安装它们。如果您在没有任何包名称的情况下运行它,yum update
将尝试更新每一个系统上安装的软件包。
如果您使用yum upgrade
它,它将执行与 相同的操作yum update
,但它将尝试删除任何已标记为“过时”的包。
例子
这是一个与您自己的场景没有什么不同的场景。有新版本vim-X11
可用。
$ yum check-update vim-X11 | expand
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
vim-X11.x86_64 2:7.4.417-1.fc19 updates
我目前处于这个版本:
$ rpm -q vim-X11 | expand
vim-X11-7.4.179-1.fc19.x86_64
当我们尝试安装它时:
$ sudo yum install vim-X11
...
=================================================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================================================
Updating:
vim-X11 x86_64 2:7.4.417-1.fc19 updates 1.2 M
Updating for dependencies:
vim-common x86_64 2:7.4.417-1.fc19 updates 5.9 M
vim-enhanced x86_64 2:7.4.417-1.fc19 updates 1.0 M
....
Running transaction
Updating : 2:vim-common-7.4.417-1.fc19.x86_64 1/6
Updating : 2:vim-enhanced-7.4.417-1.fc19.x86_64 2/6
Updating : 2:vim-X11-7.4.417-1.fc19.x86_64 3/6
Cleanup : 2:vim-X11-7.4.179-1.fc19.x86_64 4/6
Cleanup : 2:vim-enhanced-7.4.179-1.fc19.x86_64 5/6
Cleanup : 2:vim-common-7.4.179-1.fc19.x86_64 6/6
Verifying : 2:vim-enhanced-7.4.417-1.fc19.x86_64 1/6
Verifying : 2:vim-X11-7.4.417-1.fc19.x86_64 2/6
Verifying : 2:vim-common-7.4.417-1.fc19.x86_64 3/6
Verifying : 2:vim-enhanced-7.4.179-1.fc19.x86_64 4/6
Verifying : 2:vim-X11-7.4.179-1.fc19.x86_64 5/6
Verifying : 2:vim-common-7.4.179-1.fc19.x86_64 6/6
所以总结一下
yum install
1.0 已经安装后,是否会在 1.1 上执行,列出 2 个软件包?
不会。如果软件包已经安装,即使您告诉它进行安装,YUM 仍然会执行更新。
- 运行
yum update some-package-1.1
成功会替换 some-package-1.0 吗?
是的。