Arch Linux 存檔庫
Arch Linux 存檔庫(Arch Linux Archive,簡稱 ala),以前稱為 Arch Linux 回滾機(Arch Linux Rollback Machine,簡稱 ARM),保存了官方倉庫快照、iso 鏡像和 引導(Bootstrap)程序包的歷史版本。
用途
- 將某個包降級到某個早期版本(最新版本不能用,我需要之前的版本)
- 將所有包恢復到某個指定的歷史時刻(所有包都不能用,我要恢復到兩個月之前的狀態)
- 查找某個歷史版本的 ISO 鏡像
軟件包僅會保存幾年時間,之後會被移動到 archive.org 的 Arch Linux Historical Archive.
位置[編輯 | 編輯原始碼]
Arch Linux 存檔庫目前位於 https://archive.archlinux.org/ 和全球鏡像.
這裏的原始碼可以幫助您架設自己的存檔庫伺服器。
目錄[編輯 | 編輯原始碼]
存檔庫分為下列三個主目錄:
├── 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
注意: 最下面的三個特定目錄(last、week 和 month)分別連結到已同步的最新倉庫版本、本周星期一版本和本月一日版本。
/packages[編輯 | 編輯原始碼]
packages 這個目錄包含每個包的所有版本及其相應的數字簽名。每個包一個目錄,按首字母排序。
├── packages │ ├── a │ │ ├── awesome │ │ │ ├── awesome-3.5.0-1-i686.pkg.tar.xz │ │ │ ├── awesome-3.5.0-1-i686.pkg.tar.xz.sig │ │ │ ├── awesome-3.5.0-1-x86_64.pkg.tar.xz │ │ │ ├── awesome-3.5.0-1-x86_64.pkg.tar.xz.sig │ │ │ ├── awesome-3.5.1-1-i686.pkg.tar.xz │ │ │ ├── awesome-3.5.1-1-i686.pkg.tar.xz.sig │ │ │ ├── ... │ │ │ │ │ ├── ... │ │ ├── awstats │ │ └── axel │ │ │ ├── b │ ├── ... │ └── z
你可以使用「魔法目錄」.all 按包名訪問所有包。這是一個沒有子目錄的結構。
├── packages │ ├── .all │ │ ├── awesome-3.5.1-1-i686.pkg.tar.xz │ │ ├── ... │ │ ├── zsh-5.0.2-3-i686.pkg.tar.xz │ │ ├── zsh-5.0.2-4-i686.pkg.tar.xz │ │ └── ...
可以下載一個壓縮的索引文件,包含完整的軟件包列表 index.0.xz.
$ curl https://archive.archlinux.org/packages/.all/index.0.xz | unxz
0ad-a14-1-i686 0ad-a14-1-x86_64 0ad-a14-2-i686 ... zziplib-0.13.62-1-x86_64 zziplib-0.13.62-2-i686 zziplib-0.13.62-2-x86_64
/iso[編輯 | 編輯原始碼]
iso 目錄按發佈日期,保存官方 ISO 鏡像和啟動壓縮包。
├── 2014.09.03 ├── 2014.10.01 ├── 2014.11.01 ├── 2014.12.01 ├── 2015.07.01 ├── 2015.08.01 ├── 2015.09.01 └── 2015.10.01 ├── arch ├── archlinux-2015.10.01-dual.iso ├── archlinux-2015.10.01-dual.iso.sig ├── archlinux-2015.10.01-dual.iso.torrent ├── archlinux-bootstrap-2015.10.01-i686.tar.gz ├── archlinux-bootstrap-2015.10.01-i686.tar.gz.sig ├── archlinux-bootstrap-2015.10.01-x86_64.tar.gz ├── archlinux-bootstrap-2015.10.01-x86_64.tar.gz.sig ├── md5sums.txt └── sha1sums.txt
常見問題[編輯 | 編輯原始碼]
如何降級某個包[編輯 | 編輯原始碼]
在 /packages 中找到需要的軟件包,用 pacman 獲取並安裝:
# pacman -U https://archive.archlinux.org/packages/path/packagename.pkg.tar.xz
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 [community] 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 簽名錯誤,軟件包損壞(corrupted/invalid packages),請先嘗試更新 archlinux-keyring包 和 ca-certificates包. Alternatively, you can decide to temporarily disable signature checking altogether.
歷史存檔[編輯 | 編輯原始碼]
維護 Arch Linux Archive 需要很多資源,所以需要定期刪除老軟件包。
刪除前軟件包會被上傳到 archive.org 上的 "Arch Linux Historical Archive".
此倉庫並沒有提供某個時間的快照,而是提供了 archive.archlinux.org
重定向,老軟件包會被重定向到 archive.org
。除了下載速度慢,用户側使用上差別不大。
從 Historical Archive 查找軟件包[編輯 | 編輯原始碼]
Arch Linux Historical Archive 包含所有軟件包的索引: https://archive.org/details/archlinuxarchive
可以通過 identifier 獲取軟件包,格式是 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"}
從 Historical Archive 下載軟件包[編輯 | 編輯原始碼]
所有軟件包的版本可以通過如下下載頁面獲取: https://archive.org/download/archlinux_pkg_lucene__.
要通過 pacman 下載安裝:
# pacman -U https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz
pacman 的 RemoteFileSigLevel
選項控制校驗方式,注意依賴關係需要自己解決。
通過 [https://gi
- Moved to archive.archlinux.org on 2015-12-19.[1]
- Old packages from 2013-2016 uploaded to archive.org on 2018-06-05.thub.com/jjjake/internetarchive archive.org Python 客户端]也能進行下載。
下載某個指定版本:
$ ia download archlinux_pkg_cjdns cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}
下載某個軟件包的所有 x86_64 版本:
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.xz*"
歷史[編輯 | 編輯原始碼]
- 最早的 ARM (Archlinux 回滾機) 已於 2013-08-18 關閉[2]。
- seblu.net 新站點已於 2013-08-31 上線。
- 2015-10-13 舊站關閉,同時啟用新 URL 並導入一個新軟件 agetpkg-gitAUR 。
- 2015-12-19 遷移至 archive.archlinux.org。[3]
- 從 2018-06-05 開始 2013-2016 的老軟件包上傳到了 archive.org on .