Answers:
apt-cache policy <package name>
dpkg -s
但是:askubuntu.com/a/1108801/52975
我总是从命令行使用它:
dpkg -l | grep mysql
因此,上面要求dpkg列出所有已安装的软件包,然后我仅对名称中包含mysql的软件包进行grep。
dpkg -l "*mysql*"
也可以使用,并且不会在输出中隐藏说明行。
dpkg -l "*mysql*"
(或dpkg -l '*mysql*'
)还对输出进行特殊格式设置,以使其适合终端窗口的一行中的每个包(grep则不行)。并且此表格允许您选择通配符格式(前缀或后缀),以及是否完全使用通配符(与grep相比)。但是grep给人很好的着色..))
另一个变体,这次使用aptitude:
aptitude show <package>
制表符补全在这里也适用。
您可以使用dselect。它提供非su只读访问。
另外,dpkg -s <package name>
提供了许多与包装有关的详细信息。例如”
userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games
dpkg -s
。相反,dpkg-query -l
其效果与dpkg -l
dpkg --list
您可以dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$
在脚本中使用,因为它会返回退出代码1(如果<package>
未安装)和0(如果<package>
已安装)。
dpkg -s
返回0
,则不一定表示软件包已完全/正确安装。如果包处于或处于状态,dpkg -s
也将返回(而且我猜也处于,但我没有检查)。有关其他“不完整”状态,请参见[ (manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html的手册页)。0
half-configured
config-files
half-installed
dpkg
更简单的解决方案:
现在有一个apt list
列出已安装软件包的命令。您也可以使用
apt list <package>
请参阅man apt
以获取更多信息。
apt show
对于更多的细节
dpkg -s
程序化用法
我很喜欢,dpkg -s
因为1
如果没有安装任何软件包,它会以状态退出,因此很容易实现自动化:
pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
sudo apt-get install $pkgs
fi
也可以看看:
在Ubuntu 18.10上测试。
您需要检查的打印状态dpkg -l
,例如:
$ dpkg -l firefox-esr vim winff
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================================-=======================-=======================-=============================================================================
hi firefox-esr 52.9.0esr+build2-0ubunt amd64 Safe and easy web browser from Mozilla
ii vim 2:8.1.1198-0york0~14.04 amd64 Vi IMproved - enhanced vi editor
rc winff 1.5.3-3 all graphical video and audio batch converter using ffmpeg or avconv
此处vim
和firefox-esr
都已安装,因此您可以输入:
$ dpkg -l firefox-esr | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l vim | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l winff | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is NOT installed.