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

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

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

apt-cache policy  

我总是从命令行使用它:

 dpkg -l | grep mysql 

所以上面要求dpkg列出所有已安装的软件包,然后我只为那些在名称中有mysql的软件进行grep。

还有一个变体,这次使用aptitude:

 aptitude show  

标签完成也适用于此处。

您可以使用dselect。 它提供非su只读访问。

此外,dpkg -s提供了许多与包相关的详细信息。 例如”

 userme:~$ dpkg-query -s sl Package: sl Status: unknown ok not-installed Priority: optional Section: games 

您可以使用dpkg-query -s 2>/dev/null | grep -q ^"Status: install ok installed"$ dpkg-query -s 2>/dev/null | grep -q ^"Status: install ok installed"$ in scripts,因为如果没有安装 ,它返回退出代码1,如果安装了 ,则返回0。

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

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

使其可执行并开始:

 test.sh openssh-server 

或者在脚本中执行任何操作