Arch Linux 归档
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 个特殊目录(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
手动下载并安装软件包。
另请参阅 软件包降级#自动化,了解简化此过程的工具。
如何将所有软件包恢复到特定日期
要将所有软件包恢复到特定日期的版本,例如 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.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。