查找从存储库安装的软件包

Enk*_*ami 20 command-line apt search

我正在尝试使用终端命令从存储库中查找已安装的软件包。

我在某处找到了一个帖子说我可以使用aptitude search "?origin (<repository>) ?installed",但我无法让它工作。我尝试搜索来自 ppa:ubuntu-wine/ppa 的软件包,但一无所获:

aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/) ?installed"
aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/) ?installed"
aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/ raring/main) ?installed"
Run Code Online (Sandbox Code Playgroud)

如果我能得到一些适用于 PPA 的东西,那就太好了。

Rad*_*anu 14

在括号中,您应该只使用存储库的名称,而不是 URI 或其他内容。例如在你的情况下:

aptitude search "?origin (ubuntu-wine) ?installed"
Run Code Online (Sandbox Code Playgroud)

运行apt-cache policy以查看存储库和名称(又名来源,o):

$ apt-cache policy | grep wine
 500 http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial/main i386 Packages
     release v=16.04,o=LP-PPA-ubuntu-wine,a=xenial,n=xenial,l=Wine Team PPA,c=main,b=i386
 500 http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial/main amd64 Packages
     release v=16.04,o=LP-PPA-ubuntu-wine,a=xenial,n=xenial,l=Wine Team PPA,c=main,b=amd64
Run Code Online (Sandbox Code Playgroud)

由于搜索字符串是匹配字符串中任何位置的正则表达式模式,因此您可以使用方便的子字符串,例如ubuntu-wine,甚至只是wine.

另请参阅:如何将所有存储库和 PPA 的列表从命令行获取到安装脚本中?


jar*_*rno 11

这是我编写的一个 shell 脚本,用于显示从不同来源安装的软件包,不包括 Ubuntu。它使用通用的dpkg -l输出格式。它比aptitude解决方案运行得更快。

#!/bin/sh

# Print packages installed from different origins.
# Exclude standard Ubuntu repositories.

grep -H '^Origin:' /var/lib/apt/lists/*Release | grep -v ' Ubuntu$' | sort -u \
| while read -r line; do
    origin=${line#* }    
    echo $origin:
    
    list=${line%%:*}
    sed -rn 's/^Package: (.*)$/\1/p' ${list%_*Release}*Packages | sort -u \
    | xargs -r dpkg -l 2>/dev/null | grep '^.i '
    echo
 done
Run Code Online (Sandbox Code Playgroud)

请注意,也可能存在没有可用来源的已安装软件包,请参阅此内容以找到它们。


小智 5

来源不是存储库的 URL。要查找存储库的起源,请查找/var/lib/apt/lists/以 Release 结尾的文件。

例如

grep "Origin" /var/lib/apt/lists/linux.dropbox.com_debian_dists_wheezy_Release
Run Code Online (Sandbox Code Playgroud)

将会呈现:

Origin: Dropbox.com
Run Code Online (Sandbox Code Playgroud)

因此aptitude search "?origin(dropbox.com) ?installed"将向我显示从 dropbox 存储库安装的软件包。