Difference between revisions of "Arch Linux Archive"

From ArchWiki
Jump to navigation Jump to search
m (Add zh-CN link)
(Undo revision 570921 by Jose1711 (talk) - not related to the Arch Linux Archive)
(Tag: Undo)
 
(51 intermediate revisions by 19 users not shown)
Line 1: Line 1:
 
[[Category:Package management]]
 
[[Category:Package management]]
 +
[[Category:Arch projects]]
 
[[fr:Arch Linux Archive]]
 
[[fr:Arch Linux Archive]]
 
[[ja:Arch Linux Archive]]
 
[[ja:Arch Linux Archive]]
[[zh-CN:Arch Linux Archive]]
+
[[pt:Arch Linux Archive]]
 +
[[zh-hans:Arch Linux Archive]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Downgrading packages}}
 
{{Related|Downgrading packages}}
 
{{Related articles end}}
 
{{Related articles end}}
  
The '''A'''rch '''L'''inux '''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.
+
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'''
 
'''You can use it to'''
 
* Downgrade to a previous version of one package (last version is broken, I want the previous one)
 
* 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 (All theses packages are broken, I want to go back 2 months ago)
+
* 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
 
* Find a previous version of an ISO image
 +
 +
Packages are only kept for a few years, afterwards they are moved to the [[#Historical_Archive|Arch Linux Historical Archive]] on archive.org.
  
 
== Location ==
 
== Location ==
  
The Arch Linux Archive is currently available at http://ala.seblu.net/.
+
The Arch Linux Archive is available at https://archive.archlinux.org/.
  
Previous locations listed below are deprecated and will be closed soon:
+
The [https://github.com/seblu/archivetools source code] is also available for setting up your own mirror.
* http://seblu.net/a/archive
 
* ftp://seblu.net/archlinux/archive
 
 
 
The following locations listed below are now closed:
 
* http://seblu.net/a/arm
 
* ftp://seblu.net/archlinux/arm
 
  
 
== Directories ==
 
== Directories ==
Line 36: Line 34:
 
=== /repos ===
 
=== /repos ===
  
The [http://ala.seblu.net/repos repos] directory contains daily snapshots of official mirror organized by date like in the following example.
+
The [https://archive.archlinux.org/repos repos] directory contains daily snapshots of official mirror organized by date like in the following example.
  
 
  repos
 
  repos
Line 90: Line 88:
 
=== /packages ===
 
=== /packages ===
  
The [http://ala.seblu.net/packages packages] directory contains all versions of each package with their signatures. One directory by package and package directories are grouped by their first letter.
+
The [https://archive.archlinux.org/packages 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
 
  ├── packages
Line 111: Line 109:
 
  │   └── z
 
  │   └── z
  
You can use the magic subdirectory [http://ala.seblu.net/packages/.all .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.
+
You can use the magic subdirectory [https://archive.archlinux.org/packages/.all .all] to access all packages by their name. It acts as a flat directory containing all versions of every package.
  
 
  ├── packages
 
  ├── packages
Line 121: Line 119:
 
  │   │  └── ...
 
  │   │  └── ...
  
An lightweight index, named [http://ala.seblu.net/packages/.all/index.0.xz index.0.xz] is available to list all package in once.
+
You can download the full package list (there are over a hundred thousand packages) as a compressed index: [https://archive.archlinux.org/packages/.all/index.0.xz index.0.xz].
 +
 
 +
{{hc|$ curl <nowiki>https://archive.archlinux.org/packages/.all/index.0.xz |</nowiki> 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 ===
  
The [http://ala.seblu.net/iso iso] directory contains official ISO images and bootstrap tarballs sorted by release date.
+
The [https://archive.archlinux.org/iso iso] directory contains official ISO images and bootstrap tarballs sorted by release date.
  
 
  ├── 2014.09.03
 
  ├── 2014.09.03
Line 134: Line 141:
 
  ├── 2015.08.01
 
  ├── 2015.08.01
 
  ├── 2015.09.01
 
  ├── 2015.09.01
  └── 2015.10.01
+
  └── 2017.04.01
 
     ├── arch
 
     ├── arch
     ├── archlinux-2015.10.01-dual.iso
+
     ├── archlinux-2017.04.01-x86_64.iso
     ├── archlinux-2015.10.01-dual.iso.sig
+
     ├── archlinux-2017.04.01-x86_64.iso.sig
     ├── archlinux-2015.10.01-dual.iso.torrent
+
     ├── archlinux-2017.04.01-x86_64.iso.torrent
     ├── archlinux-bootstrap-2015.10.01-i686.tar.gz
+
     ├── archlinux-bootstrap-2017.04.01-x86_64.tar.gz
    ├── archlinux-bootstrap-2015.10.01-i686.tar.gz.sig
+
     ├── archlinux-bootstrap-2017.04.01-x86_64.tar.gz.sig
    ├── archlinux-bootstrap-2015.10.01-x86_64.tar.gz
 
     ├── archlinux-bootstrap-2015.10.01-x86_64.tar.gz.sig
 
 
     ├── md5sums.txt
 
     ├── md5sums.txt
 
     └── sha1sums.txt
 
     └── sha1sums.txt
  
== agetpkg ==
+
== FAQ ==
  
{{Move|Downgrading packages||Talk:Archive#agetpkg}}
+
=== How to downgrade one package ===
{{Out of date|As of October 2015, the fate of the package is discussed in [https://lists.archlinux.org/pipermail/arch-dev-public/2015-October/027480.html arch-dev-public].}}
 
 
 
{{Pkg|agetpkg}}{{Broken package link|package not found}} is a command line tool used to quickly list/get/install packages stored in the Archive.
 
 
 
===== Download a previous version of ferm package =====
 
agetpkg ferm
 
 
 
===== Download xterm version 296 =====
 
agetpkg ^xterm 296
 
 
 
===== List all zsh versions  =====
 
agetpkg -l zsh$
 
  
===== Install all gvfs packages in version 1.26.0 release 3 =====
+
Find the package you want under [[#/packages|/packages]] and let pacman fetch it for installation. For example:
agetpkg -i gvfs 1.26.0 3
 
  
===== Download all pwgen packages =====
+
  # pacman -U <nowiki>https://archive.archlinux.org/packages/</nowiki> ... ''packagename''.pkg.tar.xz
  agetpkg -g -a pwgen
 
  
== FAQ ==
+
Letting pacman fetch it will automatically download the package's detached ''.sig'' file and verify it according to {{ic|/etc/pacman.conf}} settings.
  
=== How to downgrade one package ===
+
Alternatively, download and install the package manually using {{ic|pacman -U}}.
  
You can use [[#agetpkg]] to easily download a specific package version from the Archive.
+
See also [[Downgrading packages#Automation]] for tools that simplify the process.
  
Or you can do it manually:
+
=== How to restore all packages to a specific date ===
  
# Run your favorite internet browser and go to http://ala.seblu.net/packages;
+
To restore all packages to their version at a specific date, let's say 30 March 2014, you have to direct [[pacman]] to this date, by editing your {{ic|/etc/pacman.conf}} and use the following server directive:
# Go to the package you need and download it;
 
# Run {{Ic|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 {{ic|/etc/pacman.conf}} and use the following server directive:
 
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
 
[core]
 
[core]
 
SigLevel = PackageRequired
 
SigLevel = PackageRequired
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch
+
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
  
 
[extra]
 
[extra]
 
SigLevel = PackageRequired
 
SigLevel = PackageRequired
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch
+
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
  
 
[community]
 
[community]
 
SigLevel = PackageRequired
 
SigLevel = PackageRequired
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch
+
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
 
</nowiki>}}
 
</nowiki>}}
  
or by replace your {{ic|/etc/pacman.d/mirrorlist}} by the following content:
+
or by replacing your {{ic|/etc/pacman.d/mirrorlist}} with the following content:
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 205: Line 190:
 
## Generated on 2042-01-01                                                       
 
## Generated on 2042-01-01                                                       
 
##
 
##
Server=http://ala.seblu.net/repos/2014/03/30/$repo/os/$arch
+
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
 
</nowiki>}}
 
</nowiki>}}
  
Line 211: Line 196:
 
  # pacman -Syyuu
 
  # 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.}}
+
{{Note|It's [[partial upgrades|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.}}
 +
 
 +
== 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 [https://archive.org/details/archlinuxarchive 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 {{ic|archive.archlinux.org}} so that downloads for old packages are redirected to the Historical Archive on {{ic|archive.org}}.  There should be no visible impact from the user side, except from the fact that {{ic|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:
 +
 
 +
{{bc|<nowiki>
 +
archlinux_pkg_<sanitized package name>
 +
</nowiki>}}
 +
 
 +
To obtain the '''sanitized''' package name, simply replace any {{ic|@}}, {{ic|+}} or {{ic|.}} character in the package name by an underscore {{ic|_}}.
 +
 
 +
For instance, the identifier for {{pkg|lucene++}} is {{ic|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 [https://github.com/jjjake/internetarchive archive.org Python client]:
  
== Sources ==
+
{{bc|<nowiki>
 +
$ 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"}
 +
</nowiki>}}
  
* [https://github.com/seblu/archivetools archivetools] -- Software to run an Archive server
+
=== Downloading packages from the Historical Archive ===
* [https://github.com/seblu/agetpkg agetpkg] -- Software to easy downgrade package from the Archive
 
  
== Future plan ==
+
All available package versions (and their signature) can be accessed via the download page of a package: https://archive.org/download/archlinux_pkg_lucene__
  
* Move to official infrastructure.
+
To download, verify and install a package using [[pacman]]:
* Automatic clean-up after a defined amount of time?
+
 
* Archive more stuff?
+
# pacman -U <nowiki>https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz</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.
 +
 
 +
It is also possible to use the [https://github.com/jjjake/internetarchive archive.org Python client]:
 +
 
 +
{{bc|<nowiki>
 +
# Download a specific version of a package
 +
$ ia download archlinux_pkg_cjdns cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}
 +
 
 +
# Download all x86_64 versions of a package, with signatures
 +
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.xz*"
 +
</nowiki>}}
  
 
== History ==
 
== History ==
  
* New URL and closing the old ARM hierarchy on 2015-10-13. A new software, agetpkg was introduced.
+
* The original ARM (''Archlinux Rollback Machine'') was closed on 2013-08-18.[https://bbs.archlinux.org/viewtopic.php?pid=1313360#p1313360]
* The original ARM (''Archlinux Rollback Machine'') was closed on 2013-08-18 [https://bbs.archlinux.org/viewtopic.php?pid=1313360#p1313360].
 
 
* The new one is hosted on [http://seblu.net seblu.net] since 2013-08-31.
 
* The new one is hosted on [http://seblu.net seblu.net] since 2013-08-31.
 +
* New URL and closing the old ARM hierarchy on 2015-10-13. A new software, {{AUR|agetpkg-git}} was introduced.
 +
* Moved to [https://archive.archlinux.org archive.archlinux.org] on 2015-12-19.[https://lists.archlinux.org/pipermail/arch-dev-public/2015-December/027635.html]
 +
* Old packages from 2013-2016 uploaded to [https://archive.org/details/archlinuxarchive archive.org] on 2018-06-05.

Latest revision as of 21:54, 12 April 2019

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

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-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. It acts as a flat directory containing all versions of every package.

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

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

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

FAQ

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/ ... packagename.pkg.tar.xz

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's say 30 March 2014, you have to direct pacman to this date, by editing your /etc/pacman.conf and use the following server directive:

[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

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

##                                                                              
## 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
Note: It's 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.

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-16.1-3-x86_64.pkg.tar.xz

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-16.1-3-x86_64.pkg.tar.xz{,.sig}

# Download all x86_64 versions of a package, with signatures
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.xz*"

History

  • The original ARM (Archlinux Rollback Machine) was closed on 2013-08-18.[1]
  • The new one is 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.