如何重新安装rpm软件包?

51

我已经安装了一个来自于.rpm文件的软件包,它被存储在/opt目录下。

在进行一些配置后,我发现需要重新安装该软件。因此,我删除了该目录,并尝试使用rpm -i XXX.rpm命令重新安装该文件。但是它告诉我package xxx已经安装

如何重新安装它?


4
从这个教训中学习:在未来卸载软件包时,请使用“rpm(8)”。熟悉“--force”选项... - sarnold
我学到了。哈哈:D..谢谢!顺便问一下,命令是什么?是rpm --force XXX.rpm吗?看起来好像不起作用。 - Newbie
1
@新手 你必须告诉程序你想要强制执行什么。--force会额外应用。 - glglgl
4个回答

81

尝试使用以下命令安装软件包:rpm -iv --replacepkgs <packagefile>

更多详细信息请参考相关书籍


这不会从旧包中卸载文件。如果文件不同,它们将悬挂在旧包中。 - undefined
@midenok 我不完全理解你的意思,但我怀疑你的情况与原帖提出的情况有所不同,那是十几年前的事了。最好的做法可能是提出一个新问题,详细说明你的情况,这样了解当前知识和理解的人才能给出最好的答案。谢谢。 - undefined

19

你也可以尝试点击以下链接:

rpm -ivh --force [yourpackage.rpm]

这种方法可以安全地用所需的新软件包覆盖旧的已安装软件包。 此外,如果您希望同时安装和升级,请使用以下选项:

rpm -Uvh [yourpackage.rpm]

这将使您能够同时安装包括任何升级。

另一个额外的提示:您可能会遇到错误情况,其中升级取决于另一个升级,而另一个升级又依赖于您要安装的那个升级,从而导致"依赖关系升级回路"。为了避免这种情况,请执行以下操作:

rpm -Uvh --nodeps [yourpackage.rpm].

rpm -ivh --force [yourpackage.rpm] 是重新安装 RPM 包的最佳解决方案。 - jose miguel rivera rodríguez
告诉那些因为已经安装了某个软件包而无法安装该软件包的 OP 使用 --force 而不是 --replacepkgs(如已接受的答案中所建议)是错误的,因为 --force (...) 将 --replacepkgs--replacefiles 添加到命令中。(http://ftp.rpm.org/max-rpm/s1-rpm-install-additional-options.html) 因此使用它可能会覆盖作为不相关软件包的一部分安装的文件。在这种情况下,使用 --replacepkgs 更安全,应该足够了。 - Piotr Dobrogost

9
从版本4.12.0开始,有一个--reinstall选项。
来自RPM 4.12.0 发布说明

新增了--reinstall模式,可以处理更改文件策略(RhBug:966715

man rpm中得知:

rpm {--reinstall} [install-options] PACKAGE_FILE ...

重新安装之前已安装的软件包。


1

你需要卸载软件的rpm包:

rpm -e XXX.rpm

然后安装它:

rpm -i XXX.rpm

下次当您不确定机器上是否已经安装了软件时,请始终使用以下检查方法:
rpm -qa |grep XXX 

其中XXX是软件名称或部分名称。这将显示机器上已经安装的版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接