如何快速获取Debian及衍生发行版所有可用源码包列表
Debian系系统查询所有可用源码包的高效方法
问题说明
我们都知道Debian以及衍生发行版里,用下面的命令可以列出所有配置在/etc/apt/sources.list和/etc/apt/sources.list.d/*里的源提供的二进制软件包:
apt-cache search .
要是想拿到所有可用的源码包列表,挨个遍历二进制包查对应源码包的方法实在太慢,有没有更快的办法?
解决方法
你原来的遍历方案慢,核心是要对每个二进制包单独跑一次查询,几万条包记录跑下来自然慢。其实你只要跑过apt update,所有可用源码包的索引已经缓存到本地了,直接读索引就能拿到结果,速度快得多。
方法1:不需要额外装包,速度最快
直接读本地缓存的源码索引文件提取包名,几乎瞬间出结果:
awk '/^Package: / {print $2}' /var/lib/apt/lists/*_Sources | sort -u
提示:如果跑出来是空的,说明你还没配置源码源,也没更新索引。先去
/etc/apt/sources.list里,在每一行deb源的下面加一行地址完全一样的deb-src源,再跑sudo apt update更新完索引再执行上面的命令就行。
方法2:用apt官方接口查询,兼容性更强
如果不想直接操作缓存文件,可以用apt-cache自带的源码查询功能,配合字段提取工具拿结果:
# 先安装字段查询工具,没装过的话执行一次就行 sudo apt install dctrl-tools # 提取所有源码包名 apt-cache showsrc '.*' | grep-dctrl -n -s Package '' | sort -u
两种方法都比原来的遍历方案效率高太多,哪怕是源配置得再多,最多几秒就能出全量结果。
内容的提问来源于stack exchange,提问作者SamTheEagle
相关产品推荐
相关产品推荐

