Arch Linux Archive: Difference between revisions
NetSysFire (talk | contribs) (→How to restore all packages to a specific date: - upgrade note to warning since partial upgrades are dangerous) |
m (rm gap) |
||
(8 intermediate revisions by 5 users not shown) | |||
Line 5: | Line 5: | ||
[[ja:Arch Linux Archive]] | [[ja:Arch Linux Archive]] | ||
[[pt:Arch Linux Archive]] | [[pt:Arch Linux Archive]] | ||
[[zh-hans:Arch Linux Archive]] | |||
{{Related articles start}} | {{Related articles start}} | ||
{{Related|Downgrading packages}} | {{Related|Downgrading packages}} | ||
Line 94: | Line 95: | ||
│ ├── a | │ ├── a | ||
│ │ ├── awesome | │ │ ├── awesome | ||
│ │ │ ├── awesome-3 | │ │ │ ├── awesome-4.3-2-x86_64.pkg.tar.zst | ||
│ │ │ ├── awesome-3 | │ │ │ ├── awesome-4.3-2-x86_64.pkg.tar.zst.sig | ||
│ │ │ ├── awesome-3 | │ │ │ ├── awesome-4.3-3-x86_64.pkg.tar.zst | ||
│ │ │ ├── awesome- | │ │ │ ├── awesome-4.3-3-x86_64.pkg.tar.zst.sig | ||
│ │ │ ├── ... | │ │ │ ├── ... | ||
│ │ │ | │ │ │ | ||
Line 114: | Line 113: | ||
├── packages | ├── packages | ||
│ ├── .all | │ ├── .all | ||
│ │ ├── awesome-3 | │ │ ├── awesome-4.3-2-x86_64.pkg.tar.zst | ||
│ │ ├── ... | │ │ ├── ... | ||
│ │ ├── zsh-5. | │ │ ├── zsh-5.8-1-x86_64.pkg.tar.zst | ||
│ │ ├── zsh-5. | │ │ ├── zsh-5.8.1-1-x86_64.pkg.tar.zst | ||
│ │ └── ... | │ │ └── ... | ||
Line 123: | Line 122: | ||
{{hc|$ curl <nowiki>https://archive.archlinux.org/packages/.all/index.0.xz |</nowiki> unxz| | {{hc|$ curl <nowiki>https://archive.archlinux.org/packages/.all/index.0.xz |</nowiki> unxz| | ||
0ad- | 0ad-a23.1-2-x86_64 | ||
0ad-a23.1-3-x86_64 | |||
0ad- | |||
... | ... | ||
zziplib-0.13. | zziplib-0.13.69-1-x86_64 | ||
zziplib-0.13. | zziplib-0.13.70-1-x86_64}} | ||
=== /iso === | === /iso === | ||
Line 160: | Line 157: | ||
Find the package you want under [[#/packages|/packages]] and let pacman fetch it for installation. For example: | Find the package you want under [[#/packages|/packages]] and let pacman fetch it for installation. For example: | ||
# pacman -U <nowiki>https://archive.archlinux.org/packages/</nowiki>''path/packagename''.pkg.tar. | # pacman -U <nowiki>https://archive.archlinux.org/packages/</nowiki>''path/packagename''.pkg.tar.zst | ||
Letting pacman fetch it will automatically download the package's detached ''.sig'' file and verify it according to {{ic|/etc/pacman.conf}} settings. | Letting pacman fetch it will automatically download the package's detached ''.sig'' file and verify it according to {{ic|/etc/pacman.conf}} settings. | ||
Line 178: | Line 175: | ||
[extra] | [extra] | ||
SigLevel = PackageRequired | SigLevel = PackageRequired | ||
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch | Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch | ||
Line 195: | Line 188: | ||
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch | Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch | ||
</nowiki>}} | </nowiki>}} | ||
{{Note|In May 2023 the ''community'' repository [https://archlinux.org/news/git-migration-completed/ has been removed]. If you need to downgrade beyond that point, you '''must''' add a similar ''community'' entry.}} | |||
Then update the database and force downgrade: | Then update the database and force downgrade: | ||
Line 240: | Line 235: | ||
To download, verify and install a package using [[pacman]]: | To download, verify and install a package using [[pacman]]: | ||
# pacman -U <nowiki>https://archive.org/download/archlinux_pkg_cjdns/cjdns- | # pacman -U <nowiki>https://archive.org/download/archlinux_pkg_cjdns/cjdns-20.5-1-x86_64.pkg.tar.zst</nowiki> | ||
Package verification is controlled by pacman's {{ic|RemoteFileSigLevel}} option. Note that if you use pacman, you have to figure out the dependencies yourself. | Package verification is controlled by pacman's {{ic|RemoteFileSigLevel}} option. Note that if you use pacman, you have to figure out the dependencies yourself. | ||
Line 248: | Line 243: | ||
Download a specific version of a package: | Download a specific version of a package: | ||
$ ia download archlinux_pkg_cjdns cjdns- | $ ia download archlinux_pkg_cjdns cjdns-20.5-1-x86_64.pkg.tar.zst{,.sig} | ||
Download all x86_64 versions of a package, with signatures: | Download all x86_64 versions of a package, with signatures: | ||
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar. | $ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.*" | ||
== History == | == History == |
Latest revision as of 14:36, 10 March 2024
The Arch Linux Archive (a.k.a ALA), formerly known as Arch Linux Rollback Machine (a.k.a ARM), stores official repositories snapshots, iso images and bootstrap tarballs across time.
You can use it to:
- Downgrade to a previous version of one package (last version is broken, I want the previous one)
- Restore all your packages at a precise moment (my system is broken, I want to go back 2 months ago)
- Find a previous version of an ISO image
Packages are only kept for a few years, afterwards they are moved to the Arch Linux Historical Archive on archive.org.
Location
The Arch Linux Archive is available at https://archive.archlinux.org/ and mirrors around the globe.
The source code is also available for setting up your own mirror.
Directories
The Archive is split into 3 main directories detailed below.
├── iso ├── packages └── repos
/repos
The repos directory contains daily snapshots of official mirror organized by date like in the following example.
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
Note: The last 3 special directories (last, week and month) which links respectively to the last synced repository, to the last Monday and to the first of the current month.
/packages
The packages directory contains all versions of each package with their signatures. One directory by package and package directories are grouped by their first letter.
├── 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
You can use the magic subdirectory .all to access all packages by their name. It acts as a flat directory containing all versions of every package.
├── 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 │ │ └── ...
You can download the full package list (there are over a hundred thousand packages) as a compressed index: 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
The iso directory contains official ISO images and bootstrap tarballs sorted by release date.
├── 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
Frequently asked questions
How to downgrade one package
Find the package you want under /packages and let pacman fetch it for installation. For example:
# pacman -U https://archive.archlinux.org/packages/path/packagename.pkg.tar.zst
Letting pacman fetch it will automatically download the package's detached .sig file and verify it according to /etc/pacman.conf
settings.
Alternatively, download and install the package manually using pacman -U
.
See also Downgrading packages#Automation for tools that simplify the process.
How to restore all packages to a specific date
To restore all packages to their version at a specific date, let us say 30 March 2014, you have to direct pacman to this date, by editing your /etc/pacman.conf
and use the following server directive:
/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
or by replacing your /etc/pacman.d/mirrorlist
with the following content:
/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
Then update the database and force downgrade:
# pacman -Syyuu
If you get errors complaining about corrupted/invalid packages due to PGP signature, try to first update separately archlinux-keyring and ca-certificates. Alternatively, you can decide to temporarily disable signature checking altogether.
Historical Archive
Maintaining the Arch Linux Archive consumes significant amount of resources, so old packages are cleaned up from time to time.
Before removing them, old packages are uploaded to a dedicated collection "Arch Linux Historical Archive" on archive.org.
The Historical Archive does not provide a way to access a "snapshot" of Arch packages at a given point in time. However, there is a redirection on archive.archlinux.org
so that downloads for old packages are redirected to the Historical Archive on archive.org
. There should be no visible impact from the user side, except from the fact that archive.org
is generally quite slow for downloading.
Finding packages in the Historical Archive
The Arch Linux Historical Archive collection has an index of all packages: https://archive.org/details/archlinuxarchive
It is also possible to directly access a package by its identifier. The general pattern for identifiers is archlinux_pkg_sanitized_package_name
.
To obtain the sanitized package name, simply replace any @
, +
or .
character in the package name by an underscore _
.
For instance, the identifier for lucene++ is archlinux_pkg_lucene__
.
You can then access the details page of a package via its identifier, for instance: https://archive.org/details/archlinux_pkg_lucene__.
It is also possible to run searches with the archive.org Python client:
$ 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"}
Downloading packages from the Historical Archive
All available package versions (and their signature) can be accessed via the download page of a package: https://archive.org/download/archlinux_pkg_lucene__.
To download, verify and install a package using pacman:
# pacman -U https://archive.org/download/archlinux_pkg_cjdns/cjdns-20.5-1-x86_64.pkg.tar.zst
Package verification is controlled by pacman's RemoteFileSigLevel
option. Note that if you use pacman, you have to figure out the dependencies yourself.
It is also possible to use the archive.org Python client.
Download a specific version of a package:
$ ia download archlinux_pkg_cjdns cjdns-20.5-1-x86_64.pkg.tar.zst{,.sig}
Download all x86_64 versions of a package, with signatures:
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.*"
History
- The original ARM (Archlinux Rollback Machine) was closed on 2013-08-18.[1]
- It was then hosted on seblu.net since 2013-08-31.
- New URL and closing the old ARM hierarchy on 2015-10-13. A new software, agetpkg-gitAUR was introduced.
- Moved to archive.archlinux.org on 2015-12-19.[2]
- Old packages from 2013-2016 uploaded to archive.org on 2018-06-05.