如何获取特定版本的Ubuntu可用的所有软件包列表(不一定是我安装的软件包)?

我可以使用以下命令获取所有可用包及其详细信息的列表:

apt-cache search . 

其中输出的包列表如下所示:

 i 0ad - Real-time strategy game of ancient warfare i 0ad-data - Real-time strategy game of ancient warfare (data files) i 0ad-data-common - Real-time strategy game of ancient warfare (common data files) p 0ad-dbg - Real-time strategy game of ancient warfare (debug) p 0xffff - Open Free Fiasco Firmware Flasher p 2ping - Ping utility to determine directional packet loss p 2vcard - perl script to convert an addressbook to VCARD file format p 3270-common - Common files for IBM 3270 emulators and pr3287 p 389-admin - 389 Directory Administration Server ... 

如何获得我没有安装的Ubuntu版本的软件包列表?

所以,具体来说,我在哪里可以下载特定版本的Ubuntu的所有可用软件包的数据库,以及如何从中获取详细信息(可能包括版本,大小,长描述……),明文或格式哪个很容易用脚本解析?

使用chdist 。 此命令允许您像往常一样运行apt-getapt-cache ,但是对于不同版本的Ubuntu(或Debian或实际上任何其他Debian派生的发行版)。

它还提供了一个围绕grep-dctrl的包装器,可以轻松地搜索和报告元数据字段。

1.在线

我更喜欢使用http://packages.ubuntu.com/作为muru的答案

2.离线,手动

否则,寻找离线解决方案,那么你应该是MR。 APT并从http://archive.ubuntu.com/ubuntu/dists/开始下载。

 p=$(pwd); for c in main universe multiverse restricted; do for u in "" -security -updates; do for a in binary-amd64 binary-i386; do mkdir trusty${u}_${c}_$a; cd trusty${u}_${c}_$a; wget http://archive.ubuntu.com/ubuntu/dists/trusty$u/$c/$a/Packages.bz2; cd $p; done; done; done; 

结果:

 $ tree . ├── trusty_main_binary-amd64 │  └── Packages.bz2 ├── trusty_main_binary-i386 │  └── Packages.bz2 ├── trusty_multiverse_binary-amd64 │  └── Packages.bz2 ├── trusty_multiverse_binary-i386 │  └── Packages.bz2 ├── trusty_restricted_binary-amd64 │  └── Packages.bz2 ├── trusty_restricted_binary-i386 ... 

3.离线,使用apt-cache / overlay-filesystem / chroot

糟糕的高级设置:

实际上,我将使用16.04上安装了相同apt-cache的自定义sources.list* ,但apt不会覆盖/var/lib/apt/lists/的16.04实际列表文件,更改将转到overlay文件系统。

建立:

 sudo apt-get install chroot mkdir sandbox0 cd sandbox0 mkdir upper work merged sudo mount -t overlay overlay -o lowerdir=/,upperdir=./upper,workdir=./work ./merged sudo chroot merged/ echo "deb http://archive.ubuntu.com/ubuntu/ trusty universe multiverse main restricted" > /etc/apt/sources.list rm -r /etc/apt/sources.list.d/* apt-get update exit 

使用:(你可以准备一个脚本)

 sudo mount -t overlay overlay -o lowerdir=/,upperdir=./upper,workdir=./work ./merged sudo chroot merged/ apt-cache ... 

你已经有了列出所有可能发布的命令的命令,但是我们可以稍微深入一点吗? 所以apt-cache search . 或者apt-cache search ''输出大约2300+行,这实际上是包括不同DE版本在内的所有可能包的全部数量。

为了使它更容易你只能获得名称:

 apt-cache search '' | sort -d | awk '{print $1}' 

或者你是否喜欢更多的信息,不介意你可以通过apt-cache policy滚动的长列表:

 apt-cache policy $(apt-cache search '' | sort -d | awk '{print $1}')