Arch Linux Archive

From ArchWiki
Revision as of 13:07, 13 October 2015 by Seblu (talk | contribs) (Moving to new url)
Jump to: navigation, search

The Arch Linux Archive, formerly known as Arch Linux Rollback Machine, stores official repositories snapshots, iso images and bootstrap tarballs' across time. This can be considered as an Arch Linux Museum.

You can use it to:

  • Find a previous version of one package (last version is broken, I want the previous one)
  • Find an older version of a repository (I want to setup an Archlinux like 3 weeks ago)
  • Restore all your packages at a precise moment (All theses packages are broken, I want to go back in time)
  • Downgrade because the last is broken (and you lost your cache).

Location

The Arch Linux Archive is currently available at http://ala.seblu.net/.

Previous locations listed below are deprecated and will be closed soon:

Older locations listed below are already closed:

Hierarchy

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 the following

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

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-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

You can use the magic subdirectory .all to access all packages by their name. In a nutshell, all versions of each package in one flat directory. No clear-text listing allowed here.

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

FAQ

How to downgrade one package

You could do it manually

  1. Run your favorite internet browser and go to http://ala.seblu.net/packages;
  2. Go to the package you need and download it;
  3. Run pacman -U pkgname.pkg.tar.xz as root.

How to restore all my packages at a specific date

To restore all the package you have at a specific date, let says 30th March 2014, you have to stuck pacman at this date, by editing your /etc/pacman.conf and use the following server directive:

[core]
SigLevel = PackageRequired
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch

[extra]
SigLevel = PackageRequired
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch

[community]
SigLevel = PackageRequired
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch

or by replace your /etc/pacman.d/mirrorlist by the following content:

##                                                                              
## Arch Linux repository mirrorlist                                             
## Generated on 2042-01-01                                                      
##
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch

Then update the database and force downgrade:

# pacman -Syyuu
Note: It's not safe to mix Archive and up-to-date mirrors. In case of download failure, you can fall-back on an upstream package and you will have packages not from the same epoch as the rest of the system.

TODO

  • Move to official infrastructure.
  • Automatic clean-up after a defined amount of time?
  • Archive more stuff?

Sources

You can find the archive code here: https://github.com/seblu/archivetools You can find the agetpkg code here: https://github.com/seblu/agetpkg