我可以使用以下命令获取所有可用包及其详细信息的列表:
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}')