apt - 检查是否已安装类似的软件包

apt - 检查是否已安装类似的软件包

这个问题解释了如何查明给定的 Debian 软件包是否已安装,但在通过apt-get.

例如,如果我尝试apt-get install libncurses-dev, apt-get 会回复:

Note, selecting 'libncurses5-dev' instead of 'libncurses-dev'

然后它会安装该软件包(libncurses5-dev),这对我来说没问题。

但是如果我想编写一个脚本来检测该软件包是否已经安装怎么办?

dpkg -s libncurses-dev回复说该软件包未安装,这确实是正确的,因为它libncurses5-dev已安装。但我希望我的脚本能够检测到,在这种情况下,它不再需要安装libncurses-dev.

我找不到apt-get检查给定包是否存在的选项或其提供商之一已经安装,这样我的脚本在检查libncurses-dev以及libncurses5-dev.

答案1

如果您想编写一个脚本来检查软件包libncurses-dev或其别名是否已安装,请考虑以下程序流程:

  1. 在本例中,检查是否已dpkg使用确切名称安装了软件包。libncurses-dev
  2. 如果以上计算结果不为 true,则apt使用非别名名称搜索您要查找的包:

    $ apt-cache search libncurses-dev
    libncurses5-dev - developer's libraries for ncurses
    

apt-cache search如果包有“别名”,似乎会返回“别名”。

  1. 如果 #1 计算结果为 false 并且 #2 返回别名,只需获取包的别名并再次尝试 #1。

再次检查dpkg包的别名,在本例中为libncurses5-dev.如果dpkg没有通过别名找到该包(实际上是被取代的包),则不得安装它。

答案2

这看起来像是一份工作资质搜索

$ aptitude -F %p search '~Plibncurses-dev'
libncurses5-dev                                                                 
libncurses5-dev:i386
$ aptitude -F %p search '~Plibncurses-dev ~rnative'
libncurses5-dev                                                                 
$ aptitude -F %p search '~Plibncurses-dev ~rnative ~i'
libncurses5-dev

libncurses5-dev如果没有安装,最后一个将不会打印任何内容。

相关内容