#1 楼
简单: grep -h -P -o "^Package: \K.*" /var/lib/apt/lists/ppa.launchpad.net_*_Packages | sort -u
或更灵活:
grep-dctrl -sPackage . /var/lib/apt/lists/ppa.launchpad.net_*_Packages
对于更高级的查询,请按照以下说明使用
apt-cache policy
和aptitude
:aptitude search '~O LP-PPA-gstreamer-developers'
#2 楼
grep Package /var/lib/apt/lists/(repo name)_Packages
评论
ls / var / lib / apt / lists / * _ binary-amd64_Packages | sed -E's /.*\/([^ \ / _] *)。* / \ 1 /'|排序-u
– Mathieu CAROFF
20-4-12的3:09
cat /var/lib/apt/lists/AAA.BBB.com_*_Packages | grep'^ Package:'|切-c 10- |排序-u | nl
– Mathieu CAROFF
20-4-12的3:13
#3 楼
我不知道这是否是您要寻找的东西:https://superuser.com/questions/132346/find-packages-installed-from-a-certain-repository-with -aptitude
就像说的那样,Synaptic软件包管理器允许您按“来源”进行搜索。这不是程序性的,但它可以为您提供所需的内容。
#4 楼
旧线程,但认为可能会有所帮助。使用awk,sort和uniq仅抓取软件包,并丢弃软件包回购校验和。grep ^Package /var/lib/apt/lists/<repo you are interested in>* | awk '{print }' | sort | uniq
评论
awk'/ ^ Package:/ {print $ 2}'/ var / lib / apt / lists / PACKAGE_REPO |排序-u应该做同样的事情
–六
20-09-20在15:43
#5 楼
只是出于娱乐目的,或者如果您不信任缓存,则可以从源中查询源的声明包。存储库是很多网站,可以是HTTP或FTP。您的系统具有源URL,您可以查询特定的体系结构和二进制/源参数。然后,您可以查询特定体系结构的软件包列表。例如,在Pop!_OS上,我使用了出色的jRiver媒体播放器MediaCenter。要查询他们已配置的稳定存储库,请首先找到URL:
$ cat /etc/apt/sources.list.d/mediacenter26.list
#MC
deb [arch=i386,amd64,armhf] http://dist.jriver.com/stable/mediacenter/ jessie main
,然后获取感兴趣的体系结构的列表位置。请注意,URL是按照模式
<archive_url>/dists/<distro>/Release
形成的:$ curl -s http://dist.jriver.com/stable/mediacenter/dists/jessie/Release |
> grep "amd64/Packages$" |
> cut -d" " -f 4 |
> sort -u
main/binary-amd64/Packages
最后,将体系结构的列表路径附加到分发中,并从签名列表中提取包名称: br />
$ curl -s http://dist.jriver.com/stable/mediacenter/dists/jessie/main/binary-amd64/Packages |
> grep "^Package: " |
> cut -d" " -f2 |
> sort -u
mediacenter21
mediacenter22
mediacenter23
mediacenter24
mediacenter25
自然地,调整或移除
grep
| cut
| sort
过滤器可满足您的口味。从-s
移除curl
(静音)参数以查看诊断(如果需要)。 ...或使用Synaptic软件包管理器。
评论
这是回购体系结构的一个很好的总结,当您尝试从非Debian系统查看回购时,它很有用。谢谢!
– Aiyion.Prime
20年7月22日在23:06
#6 楼
对于我的用例,我想要从多个存储库中匹配相同发行版(尤其是Jessie)的软件包列表。该主机配置了多个jessie存储库,Dell的Linux存储库和Debian档案库以提供某些依赖性。我总结了一下,这是一句单行代码:
for p in $(dpkg -l | awk '/ii/{ print }'); do for i in $(apt-cache policy "$p" | awk '/Installed/{ print }'); do apt-cache policy "$p" | grep -A1 '\*\*\*\ '$i'' | if grep -q jessie; then echo $p; fi; done; done
非常丑陋,因为我们需要运行apt-cache两次,一次是获取软件包的安装版本,第二次是将安装的版本与目标存储库进行匹配,可以方便地通过“ jessie”。
如果删除'grep -q',还将获得匹配的回购行的输出,以供确认,否则。您可以将此匹配语法修改为正则表达式以匹配多个存储库。
评论
使用xzcat /var/lib/apt/lists/ppa.launchpad.net_*_Packages.xz | grep'^ Package:'如果该软件包文件已压缩。
–randomness2077
19年3月21日在18:24
您应该在^ Package:周围加上单引号'。在zsh上,^具有特殊含义。
–菲利普
20/04/29在15:35