Arch Linux 归档

出自 ArchWiki

Arch Linux 归档(又名 ALA),曾被称为 Arch Linux Rollback Machine(又名 ARM),跨时间存储官方仓库快照ISO 镜像引导 tarball

您可以使用它来

  • 降级到软件包的先前版本(最新版本已损坏,我想要之前的版本)
  • 将所有软件包恢复到精确的时刻(我的系统已损坏,我想回到 2 个月前)
  • 查找 ISO 镜像的先前版本

软件包仅保留几年,之后它们将被移动到 Arch Linux 历史归档,位于 archive.org

位置

Arch Linux 归档位于 https://archive.archlinux.org/ 和全球 镜像

源代码也可用于设置您自己的镜像。

目录

归档分为 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 个特殊目录(lastweekmonth)分别链接到最后同步的仓库、上周一和当月的第一天。

/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
提示: 自 2022.10.01 版本起,Arch Linux 归档也作为 WebSeed 添加到 torrents(但不是 magnet 链接)。所有 torrent 文件都可以从 发布页面 下载。

常见问题解答

如何降级单个软件包

/packages 下找到您想要的软件包,并让 pacman 获取它以进行安装。例如

# pacman -U https://archive.archlinux.org/packages/path/packagename.pkg.tar.zst

让 pacman 获取它将自动下载软件包的分离的 .sig 文件,并根据 /etc/pacman.conf 设置对其进行验证。

或者,使用 pacman -U 手动下载并安装软件包。

另请参阅 软件包降级#自动化,了解简化此过程的工具。

如何将所有软件包恢复到特定日期

要将所有软件包恢复到特定日期的版本,例如 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
注意: 在 2023 年 5 月,community 仓库 已被移除。如果您需要降级到更早的版本,您必须添加类似的 community 条目。

然后更新数据库并强制降级

# pacman -Syyuu

如果您收到关于由于 PGP 签名导致软件包损坏/无效的错误,请尝试首先单独更新 archlinux-keyringca-certificates。或者,您可以决定暂时禁用签名检查

警告: 混合使用归档和最新镜像不安全。如果下载失败,您将回退到上游软件包,并且系统其余部分中的软件包将来自不同的时期。

历史归档

维护 Arch Linux 归档会消耗大量资源,因此会不时清理旧软件包。

在删除旧软件包之前,它们会被上传到 archive.org 上的专用集合 “Arch Linux 历史归档”

历史归档不提供在给定时间点访问 Arch 软件包“快照”的方式。但是,在 archive.archlinux.org 上有一个重定向,因此旧软件包的下载会重定向到 archive.org 上的历史归档。从用户方面来看,应该没有明显的冲击,除了 archive.org 的下载速度通常很慢之外。

在历史归档中查找软件包

Arch Linux 历史归档集合有一个所有软件包的索引: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