Skip to content

Arch Linux Archive

Arch Linux Archive

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

1. Location⚓︎

Arch Linux Archive

The Arch Linux Archive is available at Arch Linux Archive and mirrors around the globe.

The source code is also available for setting up your own mirror.

2. Directories⚓︎

3 Main Directories

The Archive is split into 3 main directories detailed below.

Directories Structure

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

2.1 /repos⚓︎

The repos directory contains daily snapshots of official mirror organized by date like in the following example.

Index of /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

2.2 /repos⚓︎

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 Directory-Contains All v. of each Package
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

You can use the magic subdirectory.allto access all packages by their name. It acts as a flat directory containing all versions of every package.

"Magic Subdirectory" .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
│   │   └── ...

You can download the full package list (there are over a hundred thousand packages) as a compressed index: index.0.xz

Curl Example-Download Full Package List

$ 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

2.3 /iso⚓︎

The iso directory contains official ISO images and bootstrap tarballs sorted by release date.

Index of /iso/
├── 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

Tip

Since release 2022.10.01, the Arch Linux Archive is also added as a WebSeed to the torrents (but not magnet links). All torrent files can be downloaded from the release page.

3. Frequently Asked Questions⚓︎

3.1 How to downgrade one package.⚓︎

Find the package you want under /packages and let pacman fetch it for installation. For example:

.pkg.tar.zst

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

Auto .pkg & pacman.conf

If the automatic download is not for you, use the alternative, download and install the package manually using pacman -U
Letting pacman fetch it will automatically download the package's detached
`.sig` file and verify it according to `/etc/pacman.conf` settings. 

See also Downgrading packages#Automation for tools that simplify the process.

3.2 How to restore all packages to a specific date.⚓︎

Restore Package Versions

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:

Restore Packages to Specific Date

Package Required
[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:

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

Note!

In May 2023 the community repository 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:

Pacman

# sudo 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.

Partial Upgrades are Unsupported!

It is not safe to mix Archive and up-to-date mirrors. In case of a download failure, you will fall-back on an upstream package and you will have packages not from the same epoch in the rest of the system.

4. Historical Archive⚓︎

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.

4.1 Finding packages in the Historical Archive.⚓︎

Finding Packages

The Arch Linux Historical Archive collection has an index of all packages:

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: archlinux_pkg_lucene__.

It is also possible to run searches with the archive.org Python client:

4.2 Downloading packages from the Historical Archive.⚓︎

Downloading Packages Historical Archive

  • All available package versions (and their signature) can be accessed via the download page of a package:.

  • To download, verify and install a package using pacman:

# sudo 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.*"

5. History⚓︎

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-git AUR 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.

$ systemd-cgtop

systemd-cgtop
Control Group                            Tasks   %CPU   Memory  Input/s Output/s
user.slice                                 540  152,8     3.3G        -        -
user.slice/user-1000.slice                 540  152,8     3.3G        -        -
user.slice/u…000.slice/session-1.scope     425  149,5     3.1G        -        -
system.slice                                37      -   215.6M        -        -
Click to see code
!!! warning "$ systemd-cgtop"
    ``` { .markdown title="systemd-cgtop" .no-copy }


    Control Group                            Tasks   %CPU   Memory  Input/s Output/s
    user.slice                                 540  152,8     3.3G        -        -
    user.slice/user-1000.slice                 540  152,8     3.3G        -        -
    user.slice/u…000.slice/session-1.scope     425  149,5     3.1G        -        -
    system.slice                                37      -   215.6M        -        -
    ```

$ systemd

systemd-cgtop
Packages for common Linux
Click to see code
!!! warning "$ systemd"
    ``` { .markdown title="systemd-cgtop" .no-copy }
    Packages for common Linux
    ```

Quote

  • Admonitions, also known as call-outs, are an excellent choice for including side content without significantly interrupting the document flow.

  • Material for MkDocs provides several different types of admonitions and allows for the inclusion and nesting of arbitrary content.

Custom Admonition

Two custom admonitions of the same thing with a slight variation to the markdown title and {.no-copy } setting.

Pied Piper

rsync examples
• Here are some examples of how rsync can be used.
• To backup a home directory, which consists of large MS Word files and mail folders, a per-user
 cron job can be used that runs this each day:
rsync -aiz . bkhost:backup/joe/
• To move some files from a remote host to the local host, you could run:
rsync -aiv --remove-source-files rhost:/tmp/{file1,file2}.c ~/src/
Click to see code
!!! pied-piper "Pied Piper"
    ``` { .markdown title="rsync examples" .no-copy }
    • Here are some examples of how rsync can be used.
    • To backup a home directory, which consists of large MS Word files and mail folders, a per-user
     cron job can be used that runs this each day:
    ```

    ```bash
    rsync -aiz . bkhost:backup/joe/
    ```

    ```{ .markdown .no-copy }
    • To move some files from a remote host to the local host, you could run:
    ```

    ```html
    rsync -aiv --remove-source-files rhost:/tmp/{file1,file2}.c ~/src/
    ```

Pied Piper

rsync examples
• Here are some examples of how rsync can be used.
• To backup a home directory, which consists of large MS Word files and mail folders, a per-user
 cron job can be used that runs this each day:
rsync -aiz . bkhost:backup/joe/

• To move some files from a remote host to the local host, you could run:

rsync -aiv --remove-source-files rhost:/tmp/{file1,file2}.c ~/src/
Click to see code
!!! pied-piper "Pied Piper"
    ``` { .markdown title="rsync examples" .no-copy }
    • Here are some examples of how rsync can be used.
    • To backup a home directory, which consists of large MS Word files and mail folders, a per-user
     cron job can be used that runs this each day:
    ```

    ```bash
    rsync -aiz . bkhost:backup/joe/
    ```

    • To move some files from a remote host to the local host, you could run:


    ```html
    rsync -aiv --remove-source-files rhost:/tmp/{file1,file2}.c ~/src/
    ```