是否有命令可以查看某个ppa存储库中可用的软件包?

#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 policyaptitude
aptitude search '~O LP-PPA-gstreamer-developers'


评论


使用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

#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',还将获得匹配的回购行的输出,以供确认,否则。您可以将此匹配语法修改为正则表达式以匹配多个存储库。