如何获取特定版本的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-get
和apt-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}')