如何在 Debian 中列出带有源 URI、发行版和部分的已安装软件包?

use*_*ser 5 debian apt software-installation

我在我的 Debian Wheezy apt 配置中启用了一组(源)URI、发行版和部分。现在我想要一个所有已安装包的列表,对于每个包,源 URI、“分发”和“部分”,每个相应包的当前安装版本已经安装在这些包中。

我基本上是在寻找类似于输出的东西,dpkg -l但它会显示源 URI、分布和部分,而不是描述。就像是:

||/ Name       Version           Arch  InstalledFrom
+++-==========-=================-=====-===================
ii  package1   1:4.14-1.1+deb7u1 amd64 ftp://ftp.se.debian.org/debian wheezy main
ii  package2   1.7-1             all   ftp://ftp.se.debian.org/debian wheezy/updates main
ii  package3   1.0.25+3~deb7u1   all   ftp://ftp.se.debian.org/debian wheezy non-free
ii  package4   0.9.8~3           amd64 local
ii  package5   7.2.107           i386  local
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这样的软件包列表?

格式良好将是一个奖励,但大多数情况下,我可以grep为有趣的行子字符串(甚至只是浏览)做任何事情。

use*_*ser 4

我发现自己将不同答案的片段放在一起,特别是Braiammuru 的答案。最后,我得到了这个 oneliner,这让我足够接近开始,我应该能够弄清楚其余的事情:

dpkg-query --showformat '${Package}\n' -W | \
while read package; do \
  apt-cache policy $package | grep -q wheezy/non-free && echo $package ; \
done
Run Code Online (Sandbox Code Playgroud)

上面列出了所有报告来自 wheezy/non-free 的包的名称apt-cache policy(不完全准确,但目前足够接近)。通过调整脚本对apt-cache policy输出的处理方式,虽然它不会采用良好的表格格式(至少是开箱即用的),但应该可以相当接近我所追求的结果。

感谢所有提供帮助的人!