如何检查 Fedora 中是否安装了某个软件包?
假设我已经安装了curl ca-certificates gnupg2 lldb python3-minimal gcc libc6-dev
,我想检查if
其中是否有任何未安装。
到目前为止我唯一能想到的就是调用dnf list installed
并手动比较输出。
答案1
rpm -q curl
如果安装了指定的包curl
,将返回空状态(成功),如果没有,则返回失败代码;例如
rpm -q curl > /dev/null || printf "curl not installed\n"
rpm -q gnupg2 > /dev/null && printf "gnupg2 installed\n"
if rpm -q gcc > /dev/null ; then
;
else
printf "Missing GCC; will not be able to compile naught from nothing!\n"
fi
效果很好。
一种更通用的方法是询问dnf repoquery --installed
;例如dnf repoquery --installed --whatprovides python3
可以用来检测哪个包包含 python3.但是,您需要通过类似if [ -z "$(dnf repoquery --installed --whatprovides python3)" ]
.优点在于能够询问是否有某个软件包安装了/usr/bin/foo
( dnf repoquery --installed -f /usr/bin/foo
) 或某些库的 pkg-config ( dnf repoquery --installed --whatprovides "pkgconfig(libcurl)"
),而不必知道这些东西位于哪个软件包中。