跳转至内容

Arch Linux Archive

来自 ArchWiki

Arch Linux Archive (ALA) —— 前身为 Arch Linux Rollback Machine (ARM) —— 存储了

你可以使用它来

  • 查找官方 ISO 镜像的旧版本,
  • 降级某个软件包到旧版本 —— 例如“最新版本损坏了,我想要前一个版本”,
  • 将所有软件包还原到精确的时间点 —— 例如“我的系统崩溃了,我想回到两个月前”。

软件包仅保留几年,之后会被移动到 Internet Archive 上的 Arch Linux Historical Archive 中。

位置

Arch Linux Archive 可通过 https://archive.archlinux.org/镜像站访问。

同时也提供了源代码,以便你建立自己的镜像站。

目录

Arch Linux Archive 分为以下三个主要目录:

├── iso
├── packages
└── repos

/iso

iso 目录包含按发布日期排序的官方 ISO 镜像和 bootstrap 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
提示 请参阅 ISO 发布列表 (ISO Release List) —— Releases 页面,获取官方 ISO 镜像的 torrent 链接。

/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
│   │   └── ...

.all 目录不允许列出文件:因为软件包数量大约有十万个。你可以下载压缩后的索引来获取完整的软件包列表

$ curl https://archive.archlinux.org/packages/.all/index.0.xz | unxz | less 
a2jmidid-9-1-x86_64
a2jmidid-9-2-x86_64
…
389-ds-base-3.2.0-2-x86_64
389-ds-base-3.2.0-3-x86_64

/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
提示 最后三个特殊目录链接至:
  • last — 最近一次同步的仓库,
  • month — 本月的第一天,archive.org
  • week — 上个星期一。

Arch Linux 历史存档 (Historical Archive)

维护 Arch Linux Archive 消耗大量资源,因此旧软件包会不定期清理。在删除之前,旧软件包会被上传到 Internet Archive 上专门的 Arch Linux Historical Archive 集合中。

Arch Linux Historical Archive 不能像 Arch Linux Archive 的 repos 目录那样提供在给定时间点访问 Arch Linux 软件包快照的方法。不过,Arch Linux Archive 设置了重定向,使得对旧软件包的下载请求会被重定向到 Arch Linux Historical Archive。从用户端来看应该没有明显影响,除了 https://archive.org 的下载速度通常较慢。

查找软件包

Arch Linux Historical Archive 集合拥有所有软件包的索引。

也可以直接通过软件包的标识符 (identifier)进行访问。标识符的通用模式是 archlinux_pkg_sanitized_package_name。要获得sanitized (净化后)的软件包名称,只需将软件包名称中的任何 @, +. 字符替换为下划线 (_)。

例如,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.*"

技巧与提示

降级单个软件包

/packages 下找到你想要的软件包,并让 pacman 获取并安装。例如

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

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

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

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

将所有软件包还原至特定日期

要将所有软件包还原到特定日期的版本 —— 假设是 2014 年 3 月 30 日 —— 你需要通过在 pacman.conf 中使用以下 Server 指令将 pacman 指向该日期

Server = https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
注意 community 仓库已被移除。如果你需要降级到 2023 年 5 月之前,你必须添加 community 仓库部分

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

# pacman -Syyuu

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

警告 将 Arch Linux Archive 与最新的镜像站混合使用是不安全的:一旦下载失败,你将回退到上游软件包,导致系统中存在不同时期的软件包。

历史

  • 原始的 Arch Linux Rollback Machine (ARM) 于 2013-08-18 关闭
  • 之后自 2013-08-31 起托管在 seblu.net
  • 2015-10-13 更改 URL 并关闭旧的 ARM 层级结构。引入了新软件 —— agetpkgAUR
  • 2015-12-19 迁移至 https://archive.archlinux.org
  • 2018-06-05 将 2013-2016 年的旧软件包上传至 https://archive.org/details/archlinuxarchive
  • 自 2022.10.01 版本起,Arch Linux Archive 还被添加为 torrent 的 WebSeed(但不包括 magnet 链接)。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.