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

Jon*_*sCz 6 package-management apt repository

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

apt-cache search .
Run Code Online (Sandbox Code Playgroud)

它输出如下所示的包列表:

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 
...
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到一个我没有安装的 Ubuntu 版本的软件包列表?

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

use*_*.dz 8

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;
Run Code Online (Sandbox Code Playgroud)

结果:

$ 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
...
Run Code Online (Sandbox Code Playgroud)

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

变坏了,高级设置:

其实,我要使用自定义sources.list*具有相同的apt-cache安装在16.04,但apt不会覆盖在16.04真正的清单文件/var/lib/apt/lists/,修改将进入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
Run Code Online (Sandbox Code Playgroud)

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

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

apt-cache ...
Run Code Online (Sandbox Code Playgroud)


Rob*_*sak 4

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

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