如何检查软件包是否已安装(没有超级用户权限)?


56

在我们的大学中,我们几乎可以安装所需的所有ubuntu软件包,但我们自己不是超级用户(我们需要请求安装软件包)。

对于某些库,并非总是很容易知道该软件包是否已安装。有简单的方法/命令来检查吗?

Answers:



18

我总是从命令行使用它:

dpkg -l | grep mysql

因此,上面要求dpkg列出所有已安装的软件包,然后我仅对名称中包含mysql的软件包进行grep。


3
dpkg -l "*mysql*"也可以使用,并且不会在输出中隐藏说明行。
菲利普·温德勒

dpkg -l "*mysql*"(或dpkg -l '*mysql*')还对输出进行特殊格式设置,以使其适合终端窗口的一行中的每个包(grep则不行)。并且此表格允许您选择通配符格式(前缀或后缀),以及是否完全使用通配符(与grep相比)。但是grep给人很好的着色..))
vstepaniuk '18


6

您可以使用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 -ldpkg --list
belacqua 2011年

4

您可以dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ 在脚本中使用,因为它会返回退出代码1(如果<package>未安装)和0(如果<package>已安装)。


4
请注意:如果dpkg -s返回0,则不一定表示软件包已完全/正确安装。如果包处于或处于状态,dpkg -s也将返回(而且我猜也处于,但我没有检查)。有关其他“不完整”状态,请参见[ (manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html的手册页)。0half-configuredconfig-fileshalf-installeddpkg
Ignitor 2014年

1
@Ignitor,好点。我的回答是错误的。该包装甚至可以取出,但不能清除。因此,我认为您必须检查输出以检查软件包是否已安装。
jarno 2014年

2
我编辑了答案。现在,它依赖于dpkg-query的输出。我不知道这种解决方案的便携性。例如,可以在某些系统中以其他语言显示文本吗?
jarno 2014年

2

更简单的解决方案:

现在有一个apt list列出已安装软件包的命令。您也可以使用

apt list <package>

请参阅man apt以获取更多信息。


1
apt show对于更多的细节
wjandrea

0

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上测试。


0

在shell脚本中使用特定值作为var的示例(例如test.sh

#!/bin/sh
PACKAGE="${1}"
INSTALLED=$(dpkg -l | grep ${PACKAGE} >/dev/null && echo "yes" || echo "no")

echo "${PACKAGE} is installed ... ${INSTALLED}"

使它可执行,然后开始:

test.sh openssh-server

或在脚本中做任何您想做的事


0

您需要检查的打印状态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

此处vimfirefox-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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.