如何区分 dnf 的 repo 和内置包?

如何区分 dnf 的 repo 和内置包?

当我构建一个rpm与存储库中已存在的包同名的包并键入命令时

$ dnf info package

该命令仅显示有关构建包的信息。我希望能够运行上面的命令 和dnf builddep package,并能够选择从中获取信息的包。

有没有办法区分回购包和自建包而不给它们不同的名称?

附录: 构建的软件包有较新的版本

答案1

查看输出中的行Repo和内容。这些会告诉你:From repodnf info

  • Repo告诉您可用包所在的存储库。如果该包是已安装然后它会告诉你@System
  • From repo仅针对已安装的软件包出现。它提供了已安装包的来源存储库。它显示存储库名称(例如fedoraupdates)或@commandline手动安装的 RPM。

dnf builddep将安装存储库中指定包的最新版本的构建依赖项。它不会对手动安装的 RPM 执行任何操作。

答案2

如果您想使用dnf builddep安装具体的包,只是更具体一些。换句话说,您可以执行以下所有操作:

$ sudo dnf builddep somepackage-1.2.3
$ sudo dnf builddep somepackage-1.2.3-9.fc30
$ sudo dnf builddep /path/to/some/uninstalled/somepackage-1.2.4-1.fc30.$arch.rpm
$ sudo dnf builddep /path/to/some/unbuilt/somepackage-1.2.4-2.fc30.srpm
$ sudo dnf builddep /path/to/some/unbuilt/somepackage.spec

dnf info对于前两个,同上。 (有些令人惊讶的是,您无法dnf info在 RPM、SRPM 或规范的文件路径上运行。您rpm -q -i -p /path/to/uninstalled.{rpm,srpm}- 只需记住包含-p标志 - 但没有任何类似的东西dnf info。)

唯一不能完全明确软件包来源的情况是两个不同存储库中存在软件包,这些软件包实际上具有精确的相同的网络录像机。

例如,假设我dnf download --source为 Fedora 存储库中的某个软件包创建了 SRPM updates,使用 构建了本地 RPM rpmbuild -rb,然后将它们添加到我为自己的软件包维护的本地存储库中。默认情况下,这将somepackage-1.2.5-1.fc30.x86_64.rpm与存储库中的完全相同updates

由于这种歧义,我的$HOME/.rpmmacros包含以下内容:

%dist           .ferd%{fedora}

这确保了我在本地构建的版本显示为, 而不是,这样我就可以区分。somepackage-1.2.5-1.ferd30.x86_64.rpm.fc30

相关内容