Arch Linux Archive
Arch Linux Archive (简称ALA),前身是Arch Linux Rollback Machine (简称ARM),存储了历代的官方仓库快照、ISO 镜像和引导tarball。
您可以使用它来
- 降级单个软件包到之前的版本(最新版本出问题了,我想要上一个版本)
- 将所有软件包恢复到某个特定时刻(我的系统出问题了,我想回到两个月前)
- 查找 ISO 镜像的旧版本
软件包仅保留几年,之后会被移动到 Arch Linux 历史存档,托管在 archive.org。
位置
Arch Linux Archive 可通过 https://archive.archlinux.org/ 访问,并在全球各地设有 镜像。
您也可以通过 源代码 来搭建自己的镜像。
目录
Archive 分为以下 3 个主要目录,详见下文。
├── iso ├── packages └── repos
/repos
repos 目录包含了官方镜像的每日快照,按日期组织,例如:
repos ├── 2013 │ ├── 08 │ │ └── 31 │ │ ├── community │ │ ├── community-staging │ │ ├── community-testing │ │ ├── core │ │ ├── extra │ │ ├── gnome-unstable │ │ ├── kde-unstable │ │ ├── lastsync │ │ ├── multilib │ │ ├── multilib-staging │ │ ├── multilib-testing │ │ ├── pool │ │ ├── staging │ │ └── testing │ ├── 09 │ │ ├── 01 │ │ ├── 02 │ │ ├── ... │ │ ├── 21 │ │ └── 22 │ ├── 10 │ │ ├── 01 │ │ ├── 02 │ │ ├── ... │ │ │ ├── 11 │ └── 12 ├── 2014 │ ├── 01 │ │ ├── 01 │ │ ├── 02 │ │ ├── ... │ │ │ ├── 02 │ ├── 03 │ ├── ... │ └── 09 │ ├── 01 │ ├── ... │ └── 28 ├── last ├── month └── week
注意:最后 3 个特殊目录(last、week 和 month)分别链接到最后一个同步的仓库、上一个星期一和当前月份的第一天。
/packages
packages 目录包含每个软件包的所有版本及其签名。每个软件包一个目录,并且软件包目录按其首字母分组。
├── packages │ ├── a │ │ ├── awesome │ │ │ ├── awesome-4.3-2-x86_64.pkg.tar.zst │ │ │ ├── awesome-4.3-2-x86_64.pkg.tar.zst.sig │ │ │ ├── awesome-4.3-3-x86_64.pkg.tar.zst │ │ │ ├── awesome-4.3-3-x86_64.pkg.tar.zst.sig │ │ │ ├── ... │ │ │ │ │ ├── ... │ │ ├── awstats │ │ └── axel │ │ │ ├── b │ ├── ... │ └── z
您可以使用特殊的 .all 子目录来按名称访问所有软件包。它就像一个包含所有版本软件包的扁平目录。
├── packages │ ├── .all │ │ ├── awesome-4.3-2-x86_64.pkg.tar.zst │ │ ├── ... │ │ ├── zsh-5.8-1-x86_64.pkg.tar.zst │ │ ├── zsh-5.8.1-1-x86_64.pkg.tar.zst │ │ └── ...
您可以下载完整的软件包列表(超过十万个软件包),这是一个压缩的索引:index.0.xz。
$ curl https://archive.archlinux.org/packages/.all/index.0.xz | unxz
0ad-a23.1-2-x86_64 0ad-a23.1-3-x86_64 ... zziplib-0.13.69-1-x86_64 zziplib-0.13.70-1-x86_64
/iso
iso 目录包含按发布日期排序的官方 ISO 镜像和引导 tarball。
├── 2014.09.03
├── 2014.10.01
├── 2014.11.01
├── 2014.12.01
├── 2015.07.01
├── 2015.08.01
├── 2015.09.01
└── 2017.04.01
├── arch
├── archlinux-2017.04.01-x86_64.iso
├── archlinux-2017.04.01-x86_64.iso.sig
├── archlinux-2017.04.01-x86_64.iso.torrent
├── archlinux-bootstrap-2017.04.01-x86_64.tar.gz
├── archlinux-bootstrap-2017.04.01-x86_64.tar.gz.sig
├── md5sums.txt
└── sha1sums.txt
常见问题解答
如何降级单个软件包
在 /packages 下找到您想要的软件包,然后让 pacman 获取并安装。例如:
# pacman -U https://archive.archlinux.org/packages/path/packagename.pkg.tar.zst
让 pacman 获取它将自动下载软件包的独立 .sig 文件,并根据 /etc/pacman.conf 的设置进行验证。
或者,使用 pacman -U 手动下载并安装软件包。
另请参阅 Downgrading packages#Automation 以获取简化该过程的工具。
如何将所有软件包恢复到特定日期
要将所有软件包恢复到特定日期(例如 2014 年 3 月 30 日)的版本,您需要通过编辑 /etc/pacman.conf 来指示 pacman 使用此日期,并添加以下服务器指令:
/etc/pacman.conf
[core] SigLevel = PackageRequired Server = https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch [extra] SigLevel = PackageRequired Server = https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
或 通过将您的 /etc/pacman.d/mirrorlist 替换为以下内容:
/etc/pacman.d/mirrorlist
## ## Arch Linux repository mirrorlist ## Generated on 2042-01-01 ## Server = https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
然后更新数据库并强制降级:
# pacman -Syyuu
如果您收到关于 PGP 签名损坏/无效软件包的错误,请尝试先单独更新 archlinux-keyring 和 ca-certificates。或者,您可以选择暂时 禁用签名检查。
历史存档
维护 Arch Linux Archive 会消耗大量资源,因此旧软件包会不时被清理。
在删除之前,旧软件包会被上传到 archive.org 上的专用集合“Arch Linux Historical Archive”。
历史存档不提供按特定时间点访问 Arch 软件包“快照”的方法。但是,archive.archlinux.org 上有一个重定向,以便旧软件包的下载会重定向到 archive.org 上的历史存档。从用户角度来看,应该没有可见的影响,除了 archive.org 通常下载速度较慢。
在历史存档中查找软件包
Arch Linux Historical Archive 集合包含所有软件包的索引:https://archive.org/details/archlinuxarchive
也可以通过其标识符直接访问软件包。标识符的通用模式是 archlinux_pkg_sanitized_package_name。
要获得已清理的软件包名称,只需将软件包名称中的任何 @、+ 或 . 字符替换为下划线 _。
例如,lucene++ 的标识符是 archlinux_pkg_lucene__。
然后,您可以通过其标识符访问软件包的详细信息页面,例如:https://archive.org/details/archlinux_pkg_lucene__。
也可以使用 archive.org Python 客户端运行搜索。
$ ia search subject:"archlinux package" subject:'mysql'
{"identifier": "archlinux_pkg_ejabberd-mod_mysql"}
{"identifier": "archlinux_pkg_ejabberd-mod_mysql-svn"}
{"identifier": "archlinux_pkg_gambas3-gb-db-mysql"}
{"identifier": "archlinux_pkg_gambas3-gb-mysql"}
{"identifier": "archlinux_pkg_libgda-mysql"}
从历史存档下载软件包
所有可用的软件包版本(及其签名)均可通过软件包的下载页面访问:https://archive.org/download/archlinux_pkg_lucene__。
使用 pacman 下载、验证和安装软件包
# pacman -U https://archive.org/download/archlinux_pkg_cjdns/cjdns-20.5-1-x86_64.pkg.tar.zst
软件包验证由 pacman 的 RemoteFileSigLevel 选项控制。请注意,如果您使用 pacman,则需要自己解决依赖关系。
也可以使用 archive.org Python 客户端。
下载软件包的特定版本
$ ia download archlinux_pkg_cjdns cjdns-20.5-1-x86_64.pkg.tar.zst{,.sig}
下载软件包的所有 x86_64 版本,包括签名
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.*"
历史
- 原始的 ARM (Archlinux Rollback Machine) 于 2013-08-18 关闭。[1]
- 此后,它于 2013-08-31 起托管在 seblu.net。
- 新 URL 和关闭旧 ARM 层级结构于 2015-10-13。引入了新软件 agetpkg-gitAUR。
- 于 2015-12-19 迁移到 archive.archlinux.org。[2]
- 2013-2016 年的旧软件包于 2018-06-05 上传到 archive.org。