在未运行的系统上仅重新安装文件丢失或损坏的软件包?

在未运行的系统上仅重新安装文件丢失或损坏的软件包?

第一。提前致谢。

这有点像#216697:重新安装文件丢失/损坏的软件包只不过那个人的情况,恢复后,系统还是可以用的。我的没有。无法启动 X,没有网络,systemd 没有满足其所有要求,因此服务无法启动,等等。用技术术语来说,系统已被破坏。 (Fedora 26 i686)

DNF 有一个 --installroot 命令,如果我启动到 LiveUSB 操作系统,我可以挂载我的根文件系统分区并执行以下操作dnf --installroot=/run/media/liveuser/sda6/ repolist它确实列出了我所有配置的存储库。我进一步尝试dnf --installroot=/run/media/liveuser/sda6/ 列表 --all数百个包名称滚动过去。我假设 DNF db 或 rpmdb 或其他(我真的不知道,抱歉)看起来完好无损。

虽然 DNF 允许我使用非运行系统,但我不知道如何在非运行系统上使用 RPM -V。它似乎只处理实时操作系统。我想我可以 chroot 欺骗它,但不想冒险弄乱任何东西,所以我疯狂地询问和谷歌搜索,试图找到一个解决方案来验证安装并只强制重新安装损坏的软件包,但我却空了。

作为最后的手段,我将使用dnf --installroot={path} 重新安装 *但这会浪费大量的时间和大量的数据来下载。至少它可以在无人看管的情况下发生。或者,我可以继续使用 liveOS,再等一两周,当 Fedora 27 发布时,在我禁用的系统上安装它,但这似乎与强制重新安装每个软件包一样是一种逃避。我真的很想学习如何做到这一点。

RPM 忍者:救命!

答案1

看起来您只是在寻找rpm --root选项,这大致类似于dnf --installroot.这在 RPM 手册页中有记录:

   --root DIRECTORY
          Use the file system tree rooted at DIRECTORY for all operations.
          Note that this means the database within DIRECTORY will be  used
          for  dependency  checks  and  any  scriptlet(s)  (e.g.  %post if
          installing, or %prep if building, a package) will be run after a
          chroot(2) to DIRECTORY.

要验证安装到安装在 的文件系统上的所有软件包/run/media/liveuser/sda6/,请运行如下命令:

  rpm --root /run/media/liveuser/sda6/ -Va

相关内容