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

Pet*_*mit 58 package-management

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

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

Oli*_*Oli 58

apt-cache policy <package name>
Run Code Online (Sandbox Code Playgroud)

  • 重要的是要知道它支持包名称中的制表符完成。因此,即使您不知道确切的包名称,它也非常有用。 (8认同)

Ric*_*ick 19

我总是从命令行使用它:

dpkg -l | grep mysql
Run Code Online (Sandbox Code Playgroud)

所以上面要求 dpkg 列出所有已安装的软件包,然后我只搜索名称中包含 mysql 的软件包。

  • `dpkg -l "*mysql*"` 也可以工作并且不会隐藏输出中的解释行。 (3认同)

小智 7

另一个变种,这次使用 aptitude:

aptitude show <package>
Run Code Online (Sandbox Code Playgroud)

标签完成在这里也有效。


小智 6

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

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

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games
Run Code Online (Sandbox Code Playgroud)


jar*_*rno 5

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

  • **注意**:如果 `dpkg -s` 返回 `0`,并不一定意味着该软件包已**完全/正确**安装。如果包处于“半配置”或“配置文件”状态(我猜也处于“半安装”状态,但我没有检查),“dpkg -s”也会返回“0”。请参阅[`dpkg`的手册页(http://manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html)了解更多“不完整”状态。 (5认同)
  • 我编辑了答案。现在它依赖于 dpkg-query 的输出。我不知道这个解决方案的便携性如何;例如,文本可以在某些系统中以另一种语言显示吗? (2认同)