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
为有趣的行子字符串(甚至只是浏览)做任何事情。
我发现自己将不同答案的片段放在一起,特别是Braiam和muru 的答案。最后,我得到了这个 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
输出的处理方式,虽然它不会采用良好的表格格式(至少是开箱即用的),但应该可以相当接近我所追求的结果。
感谢所有提供帮助的人!