如何从我下载的一堆 RPM 中安装具有正确依赖项的软件包?

如何从我下载的一堆 RPM 中安装具有正确依赖项的软件包?

我的情况类似如何仅使用本地依赖 RPM 文件安装本地 RPM?或者安装一个充满 RPM 的目录,以便在依赖的 rpm 之前安装提供依赖项的 rpm?,但我使用的是 Fedora 而不是 CentOS,并且使用的是 DNF 而不是 Yum。

我有一堆.rpm文件下载到一个目录中。我想安装其中之一(比方说foo-1.0-1.rpm)并拥有其依赖项。我只想安装所需的内容,而不是已下载的所有其他文件,例如foo-debuginfo-1.0-1.rpmfoo-extraplugin-that-no-one-uses-1.0-1.rpm.如果我这样做dnf install *,我就会得到所有额外的垃圾。如果我这样做dnf install foo-1.0-1.rpm,我会收到有关缺少barbaz的依赖项的错误foo-essential

我应该怎么办?

答案1

Yum 的答案建议创建一个本地存储库并将存储库配置文件添加到/etc/yum.repos.d.你可以这样做,但有了DNF,你就不必这样做了。您可以只指向没有配置文件的本地存储库。不过,您确实需要在目录中创建存储库。

所以:

  1. 更改为有问题的目录。cd ~/Downloads/RPMs, 例如。
  2. createrepo_c .在该目录中运行。 (或者createrepo_c ~/Downloads/RPMs从任何地方。)
  3. 跑步dnf --repofrompath local,. install foo

笔记:

createrepo_c是 的直接且更快的替代品createrepo

所提供的存储库的语法是 reponame 逗号路径。所以--repofrompath "My Repository",/home/mattdm/Downloads/RPMs如果你愿意的话你可以做。您还可以提供一个 URL——可以是一个file:///URL,也可以是一个远程 URL。

请记住仅将要安装的包指定为包名称,例如foo,而不是文件名,例如foo-1.0-1.rpm.

最后,如果您有其他配置的存储库也提供foo并且这些存储库被拉入,那么,这将在将来成为一个问题,但现在,您可以用来--disablerepo摆脱有问题的其他存储库。

相关内容