如何按名称列出存储库中的所有软件包

如何按名称列出存储库中的所有软件包

我已经完整克隆了 Ubuntu 软件包仓库(大约 230 GB),并运行本地 VM 作为我的仓库服务器。我可以使用什么命令列出该仓库中包含的所有软件包?

答案1

在本地(即在服务器上),您可以运行:

find /location/of/repo/ -type f -name '*.deb'

远程地,您可以获取Packages文件并对其进行 grep:

wget -qO - http://archive.ubuntu.com/ubuntu/dists/trusty-security/main/binary-amd64/Packages.gz \
  | zgrep -Po '(?<=^Package: ).*'

答案2

除了@muru 回答,如果您想从本地 Ubuntu 系统找到本地 repo 服务器中所有可用的软件包,您可以使用 sources.list 中指定的每个软件包资源的元数据文件,该文件存在于 中/var/lib/apt/lists/。唯一的要求是您的 Ubuntu 系统应配置为从本地服务器接收更新。

例如

cd /var/lib/apt/lists/
grep -oP "(?<=Package: ).*" security.ubuntu.com_ubuntu_dists_utopic-security_main_binary-amd64_Packages 

将文件名(即security.ubuntu.com_ubuntu_dists_utopic-security_main_binary-amd64_Packages)替换为本地服务器文件名。同时确保此列表名称以结尾Packages

相关内容