查找从存储库安装了哪些软件包

查找从存储库安装了哪些软件包

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

我在某处找到一篇帖子说我可以使用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"

如果我能得到一些可以与 PPA 兼容的东西那就太好了。

答案1

这是我编写的 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

某些软件包可能来自多个存储库。运行apt policy [pkgname]以检查当前软件包实际上是从哪个存储库安装的。

请注意,可能还安装了没有可用来源的软件包,请参阅找到它们。

答案2

在括号中,您应仅使用存储库的名称,而不是 URI 或其他内容。例如,在您的案例中:

aptitude search "?origin (ubuntu-wine) ?installed"

运行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

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

也可以看看:如何从命令行获取所有存储库和 PPA 的列表并放入安装脚本?

答案3

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

例如

grep "Origin" /var/lib/apt/lists/linux.dropbox.com_debian_dists_wheezy_Release

将会呈现:

Origin: Dropbox.com

因此aptitude search "?origin(dropbox.com) ?installed"将显示来自 dropbox 存储库的已安装包。

答案4

然后你就可以使用 Y-PPA 管理器了。打开你的终端并输入:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

然后打开你的 Unity dash 并使用 Y -PPA 搜索,然后打开图标。

在此处输入图片描述

单击如图所示的管理 PPA,然后选择一个 PPA,它将为您提供该 PPA 及其软件包的详细信息。

相关内容