![旧版本的软件包不再可用吗?](https://linux22.com/image/1164419/%E6%97%A7%E7%89%88%E6%9C%AC%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E4%B8%8D%E5%86%8D%E5%8F%AF%E7%94%A8%E5%90%97%EF%BC%9F.png)
我正在尝试查找在 Ubuntu 旧版本中可用但已从当前版本中删除的特定软件包。
我可以下载旧版本的所有 CD 的图片(http://old-releases.ubuntu.com/),但如果我无法下载可用的软件包(尽管它们存在)(https://packages.ubuntu.com/或者类似的东西,另一个子域名,...),那么想要这些图像几乎是没有意义的。
有趣的细节是https://packages.ubuntu.com/提及http://old-releases.ubuntu.com/作为旧版本内容的存放地。由于这是一个搜索软件包的页面,因此这里似乎缺少一些基本的东西。
那么,我如何找到以前版本的软件包(那些不再在 packages.ubuntu.com 中的软件包)?
我发现了一个马马虎虎相关的问题,但是不一样:
答案1
根据发行版的年代,Ubuntu 软件包的旧版本和当前版本可以在以下位置找到
例如,http://archive.ubuntu.com/ubuntu/pool/main/f/firefox/有以下版本版本:95.0+build1-0ubuntu1“截至 2021 年 12 月,https://old-releases.ubuntu.com/ubuntu/pool/main/f/firefox/回到“版本:1.0.7-0ubuntu20“。
Ubuntu 特定版本的详细信息(按名称列出)可在以下位置找到
(哪个名称对应哪个 Ubuntu 版本号可以在http://old-releases.ubuntu.com/releases/)
例如,Ubuntu 14.04 被命名为“trusty”,其“amd64”的“主要”软件包列表位于文件中 http://archive.ubuntu.com/ubuntu/dists/trusty/main/binary-amd64/Packages.gz
答案2
看来我们可以使用一些奇怪但有效的解决方案。
对于此类搜索,我们可以创建旧版本(Ubuntu 12.04 LTS)的本地 chroot 环境并从中查找软件包。我们将使用debootstrap
作为主要成分:
sudo apt-get install debootstrap
mkdir ~/precise_chroot
sudo debootstrap --no-check-gpg precise ~/precise_chroot
然后添加所有来自以前 LTS 版本的存储库并选择主版本。以下是两个长命令,将它们完整复制然后粘贴到终端:
cat <<EOF | sudo tee ~/precise_chroot/etc/apt/sources.list
# Ubuntu 12.04 LTS - Precise Pangolin
deb http://archive.ubuntu.com/ubuntu precise main universe multiverse restricted
# Ubuntu 10.04 LTS - Lucid Lynx
deb http://old-releases.ubuntu.com/ubuntu lucid main universe multiverse restricted
# Ubuntu 8.04 LTS - Hardy Heron
deb http://old-releases.ubuntu.com/ubuntu hardy main universe multiverse restricted
# Ubuntu 6.06 LTS - Dapper Drake
deb http://old-releases.ubuntu.com/ubuntu dapper main universe multiverse restricted
EOF
cat <<EOF | sudo tee ~/precise_chroot/etc/apt/apt.conf.d/01ubuntu
APT::Default-Release "precise";
EOF
然后apt-get update
在 chroot 内部调用:
sudo chroot ~/precise_chroot/ apt-get update
并尝试将某些软件包(mc
例如 Midnight Commander)的版本与以下内容进行比较apt-cache policy mc
:
$ sudo chroot ~/precise_chroot/ apt-cache policy mc mc: Installed: (none) Candidate: 3:4.8.1-2ubuntu1 Version table: 3:4.8.1-2ubuntu1 0 990 http://archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages 3:4.7.0-1ubuntu2 0 500 http://old-releases.ubuntu.com/ubuntu/ lucid/universe amd64 Packages 1:4.6.1-8ubuntu1 0 500 http://old-releases.ubuntu.com/ubuntu/ hardy/universe amd64 Packages 1:4.6.1-1ubuntu2 0 500 http://old-releases.ubuntu.com/ubuntu/ dapper/universe amd64 Packages
此外,你还可以通过指定发布版本来使用此方法下载单个软件包-t target_release
选项:
$ sudo chroot ~/precise_chroot/ apt-get download mc -t hardy Get:1 Downloading mc 1:4.6.1-8ubuntu1 [2156 kB] Fetched 2156 kB in 1s (1174 kB/s) $ ls precise_chroot/*.deb precise_chroot/mc_4.6.1-8ubuntu1_amd64.deb
所以你明白了。
小技术说明:该~/precise_chroot
文件夹将占用大约 600 Mb 的磁盘空间。
我已经调整了这个方法——我们可以搜索包含已知文件名的包:
sudo chroot ~/precise_chroot/ apt-get install -y apt-file
sudo chroot ~/precise_chroot/ apt-file update
下面是示例库文件.so.48:
$ sudo chroot ~/precise_chroot/ apt-file search lib32icu48: /usr/lib32/libicui18n.so.48 lib32icu48: /usr/lib32/libicui18n.so.48.1.1 libicu48: /usr/lib/libicui18n.so.48 libicu48: /usr/lib/libicui18n.so.48.1.1 libicu48-dbg: /usr/lib/debug/usr/lib/libicui18n.so.48.1.1
并了解该软件包的 Ubuntu 版本:
$ sudo chroot ~/precise_chroot/ apt-cache policy libicu48libicu48: Installed: (none) Candidate: 4.8.1.1-3 Version table: 4.8.1.1-3 0 990 http://archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
所以它确实非常强大而且简单。