如何列出我从特定存储库安装的所有软件包?

如何列出我从特定存储库安装的所有软件包?

如何列出Ubuntu主存档中不可用的所有已安装软件包,还可以查看它们来自哪些存储库? (如果我知道这个问题的答案,我可以在特定的PPA名称列表中查找我的第一个问题的答案。)

展开Ubuntu软件中心中的“已安装软件”项。 您将看到已启用的所有不同存储库的列表。 单击仓库将显示您从每个仓库安装的软件包。

替代文字

似乎没有安装包的来源记录。

如果您可以通过apt-cache policy获取从中下载相同名称的包的位置。 以下(相当难看)脚本为我做了诀窍:

 LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \ | fgrep ':install ok installed' \ | cut -d: -f1 \ | (while read pkg; do inst_version=$(apt-cache policy $pkg \ | fgrep Installed: \ | awk '{ print $2 }'); origin=$(apt-cache policy "$pkg" \ | fgrep " *** ${inst_version}" -C1 \ | tail -n 1 \ | cut -c12-); echo $pkg $origin; done) 

请注意,它非常脆弱,因为它会对apt-cache policy的输出做出假设,这可能会在不同版本之间发生变化……

打开Synaptic Package Manager并单击左侧栏底部的“Origin”按钮。 它会列出你的来源。 选择源以查看可用/已安装的包。

此脚本列出了PPA中已安装和可用的软件包:

 #!/bin/sh # Give PPA name as an argument, eg ppa:oibaf/graphics-drivers name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)" name2="$(echo "$1"|cut -d/ -f2)" awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \ /var/lib/apt/lists/*"$name1"*"$name2"*Packages | xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null | awk '/^[^ ]+ ok installed/{print $4}' 

我应用了这个 。

BTW至于从使用中去除PPA,使用ppa-purge程序; 我在这里创建了它的改进版本。

在Quantal(12.10)下,需要删除原点线中的空间。

 LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \ | fgrep ':install ok installed' \ | cut -d: -f1 \ | (while read pkg; do inst_version=$(apt-cache policy $pkg \ | fgrep Installed: \ | cut -d: -f2-); origin=$(apt-cache policy "$pkg" \ | fgrep " ***${inst_version}" -C1 \ | tail -n 1 \ | cut -c12-); echo $pkg $origin; done)