pol*_*mon 10 fedora package-management repository dnf
当我想列出已安装的软件包时,我通常采用以下两种方式之一。
老式的方法是使用rpm -qa | grep <whatever I look for>
,仅此而已。
但最近我想要更全面地展示我的包,因此,我使用dnf list --installed <whatever I look for>
.
但是,在查看结果时,有几件事我不明白。
考虑这个例子:
# dnf list --installed zsh
Last metadata expiration check: 0:13:25 ago on Mon Jul 11 05:48:04 2016.
Installed Packages
zsh.x86_64 5.2-5.fc24 @@commandline
Run Code Online (Sandbox Code Playgroud)
(实际打印的空间更宽)
所以结果条目是:«package» «version» «repo»。
在我的例子中是:
到目前为止,结果表是可以理解的,但我对 repo 名称前面的两个“@@”的含义感到困惑。
此外,“命令行”表明该软件包是从命令行安装的(下载 RPM,然后dnf install whatever.rpm
在命令行中安装,等等)。但是我很确定我已经zsh
通过dnf install zsh
.
但这还不是全部。
我在我的系统上从 repo 安装了几个包@System
,@fedora
(但是也fedora
没有@
)和诸如@@commandline
.
那么在回购名称前面的那个@
或@@
确切的意思是什么?
为什么我已经安装了这么多突出的软件包,@@commandline
尽管我非常确定我已经从 repos 安装了它们?
就让我在这里抛砖引玉吧。
dnf list all | less
显示所有软件包(包括已安装和可用的软件包)。输出有两个部分:“已安装的包”和“可用的包”。所有“已安装的软件包”前面都有@符号,而“可用的软件包”则没有。所以我相信@
迹象表明软件包已安装。如果安装了一个软件包但其原始存储库被删除,我想会@@
给出标志。
dnf 源代码托管在https://github.com/rpm-software-management/dnf。下载src代码后,grep commandline -ri .
在目录中执行a,它不会返回任何内容。然而,它的 github 页面确实提到了这一点,
它使用 RPM、libsolv 和 hawkey 库进行包管理。
因此,我查看了 hawkey,它托管在同一项目下,网址为https://github.com/rpm-software-management/hawkey。通过查看其代码grep -ri commandline .
,它确实显示了一些结果。
./src/types.h:#define HY_CMDLINE_REPO_NAME "@commandline"
./hawkey.spec:- fix: commandline RPMs do not provide their files (RhBug:1112810) (Ales Kozumplik)
Run Code Online (Sandbox Code Playgroud)
所以commandline
来自hawkey
包。至于为什么@comandline
在命令中显示的问题dnf list
,我的疯狂猜测是dnf
代码无法正确使用hawkey
。
归档时间: |
|
查看次数: |
3233 次 |
最近记录: |