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


51

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

如何列出所有主要Ubuntu档案文件中没有的已安装软件包,并查看它们来自哪个存储库?(如果我知道该问题的答案,则可以将该列表重命名为一个特定的PPA名称,以找出第一个问题的答案。)


由于(似乎)似乎没有(为此)现有的命令行工具,因此我将接受其中一个GUI答案。
Marius Gedminas 2010年

Answers:


24

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

替代文字


恐怕该选项仅在Ubuntu 10.10中可用,或者我遗漏了什么?我的软件中心不在该菜单下显示源。
lovelinux

2
在我的版本中,顶部有一个“已安装”下拉列表。当我选择该选项时,我可以选择各种来源(核心,用于购买,PPA ...)
Alexis Wilke

在Ubuntu 16.04中,此页面不再可用。但是,突触具有类似的功能-单击左下角的“来源”。
乔什(Josh)

26

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

如果您可以从那里获取位置信息,可以从下载相同名称的软件包 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,但可能会因版本而异...


是的,这基本上意味着从头开始编写工具。而且我认为使用Perl或Python解析/ var / lib / apt / lists会更快,更可靠。
Marius Gedminas 2010年

在2018年正常工作在这里:)谢谢!
N0rbert

我开发了在Ubuntu和Debian上测试过的类似解决方案
famzah

23

打开Synaptic软件包管理器,然后单击左侧边栏底部的“来源”按钮。它将列出您的来源。选择一个源以查看可用/已安装的软件包。


4

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

#!/bin/sh
# Give PPA name as an argument, e.g. 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}'

我应用了这个

顺便说一句,要删除使用中的PPA,请使用ppa-purge程序。我在这里创建了它的改进版本。


3

在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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.