当我构建一个rpm
与存储库中已存在的包同名的包并键入命令时
$ dnf info package
该命令仅显示有关构建包的信息。我希望能够运行上面的命令 和dnf builddep package
,并能够选择从中获取信息的包。
有没有办法区分回购包和自建包而不给它们不同的名称?
附录: 构建的软件包有较新的版本
答案1
查看输出中的行Repo
和内容。这些会告诉你:From repo
dnf info
Repo
告诉您可用包所在的存储库。如果该包是已安装然后它会告诉你@System
。From repo
仅针对已安装的软件包出现。它提供了已安装包的来源存储库。它显示存储库名称(例如fedora
或updates
)或@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