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

如何获取特定版本 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 的所有可用软件包的数据库,以及如何从中获取详细信息(可能包括版本、大小、详细描述......),以纯文本或易于用脚本解析的格式?

答案1

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 上安装的sources.list*相同的自定义apt-cache,但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

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

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

apt-cache ...

答案2

使用基督教会apt-get。此命令允许您像往常一样运行apt-cache,但针对的是不同版本的 Ubuntu(或 Debian,或者实际上是任何其他 Debian 衍生的发行版)。

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

答案3

您已经有了列出所有可能发布的命令,但是让我们更深入一点好吗?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}')

相关内容