Difference between revisions of "Arch Rollback Machine"

From ArchWiki
Jump to: navigation, search
m (+link to the french wiki page)
m
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Article summary start}}
+
[[Category:Package management]]
{{Article summary text|This guide gather information around the Arch Rollback Machine}}
+
{{Article summary heading|Related}}
+
{{Article summary wiki|Downgrading Packages}}
+
{{Article summary end}}
+
 
[[fr:Arch Rollback Machine]]
 
[[fr:Arch Rollback Machine]]
 +
[[ja:Arch Rollback Machine]]
 +
{{Related articles start}}
 +
{{Related|Downgrading Packages}}
 +
{{Related articles end}}
  
The '''Arch Rollback Machine''' (ARM for short) is an everyday snapshot of official '''Archlinux''' mirror.
+
The '''Arch Rollback Machine''' (ARM for short) is a daily snapshot of official '''Archlinux''' mirror.
 
You can use it to find an old version of a package or to change the way you upgrade your system.
 
You can use it to find an old version of a package or to change the way you upgrade your system.
  
Line 15: Line 15:
 
== Architecture ==
 
== Architecture ==
  
The '''ARM''' store each day snapshot in a filesystem hierarchy like the following.
+
The '''ARM''' stores each day snapshot in a filesystem hierarchy like the following.
In addition there is 3 symlinks pointing to special snapshots.
+
In addition there are 3 symlinks pointing to special snapshots and one packages directory.
  
 
  ├── 2013
 
  ├── 2013
Line 31: Line 31:
 
  │      ├── 02
 
  │      ├── 02
 
  │      ├── ...
 
  │      ├── ...
 +
 +
├── packages
 +
│   ├── a
 +
│   │  ├── awesome
 +
│   │  │  ├── awesome-3.5.0-1-i686.pkg.tar.xz
 +
│   │  │  ├── awesome-3.5.0-1-x86_64.pkg.tar.xz
 +
│   │  │  ├── awesome-3.5.1-1-i686.pkg.tar.xz
 +
│   │  │  ├── ...
 +
│   │  │
 +
│   │  ├── ...
 +
│   │  ├── awstats
 +
│   │  └── axel
 +
│   │ 
 +
│   ├── b
 +
│   ├── ...
 +
│   └── z
 +
 +
├── 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
 +
│   └── ...
 
  │
 
  │
 
  ├── last -> 2013/09/22
 
  ├── last -> 2013/09/22
Line 36: Line 59:
 
  └── week -> 2013/09/16
 
  └── week -> 2013/09/16
  
* The [http://seblu.net/a/arm/last last] symlink is updated everyday and points to the last finished mirror snapshot.
+
* The '''20xx''' hierarchy contains daily snapshots of official mirror organized by date.
 +
* The [http://seblu.net/a/arm/packages packages] hierarchy contains symlinks to all versions of each package. One directory by package.
 +
* The [http://seblu.net/a/arm/all all] hierarchy contains symlinks to all versions of each package in one flat directory. No listing.
 +
* The [http://seblu.net/a/arm/last last] symlink is updated every day and points to the last finished mirror snapshot.
 
* The [http://seblu.net/a/arm/week week] symlink is updated every week and points to the monday of the current week.
 
* The [http://seblu.net/a/arm/week week] symlink is updated every week and points to the monday of the current week.
 
* The [http://seblu.net/a/arm/month month] symlink is updated every month and points to the first day of the current month.
 
* The [http://seblu.net/a/arm/month month] symlink is updated every month and points to the first day of the current month.
Line 48: Line 74:
 
To have '''pacman''' be stuck on 11th September 2013, edit your {{ic|/etc/pacman.conf}} and use the following server directive:
 
To have '''pacman''' be stuck on 11th September 2013, edit your {{ic|/etc/pacman.conf}} and use the following server directive:
  
[core]
+
{{bc|<nowiki>
SigLevel = PackageRequired
+
[core]
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
+
SigLevel = PackageRequired
+
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
[extra]
+
 
SigLevel = PackageRequired
+
[extra]
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
+
SigLevel = PackageRequired
+
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
[community]
+
 
SigLevel = PackageRequired
+
[community]
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
+
SigLevel = PackageRequired
 +
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
 +
</nowiki>}}
  
 
or by replace your {{ic|/etc/pacman.d/mirrorlist}} by the following content:
 
or by replace your {{ic|/etc/pacman.d/mirrorlist}} by the following content:
  
##                                                                               
+
{{bc|<nowiki>
## Arch Linux repository mirrorlist                                             
+
##                                                                               
## Generated on 2042-01-01                                                       
+
## Arch Linux repository mirrorlist                                             
##
+
## Generated on 2042-01-01                                                       
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
+
##
 +
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch
 +
</nowiki>}}
 +
 
 +
Then update the database: {{Ic|# pacman -Syy}}
  
 
{{Note|It's not safe to mix ARM and up-to-date mirrror. In case of download failure, you can fallback on a upstream package and you will have packages not from the same epoch than the rest of the system.}}
 
{{Note|It's not safe to mix ARM and up-to-date mirrror. In case of download failure, you can fallback on a upstream package and you will have packages not from the same epoch than the rest of the system.}}
Line 75: Line 107:
 
To upgrade your computer on a weekly or a monthly basis, edit your {{ic|/etc/pacman.conf}} and use the following server directive:
 
To upgrade your computer on a weekly or a monthly basis, edit your {{ic|/etc/pacman.conf}} and use the following server directive:
  
[core]
+
{{bc|<nowiki>
SigLevel = PackageRequired
+
[core]
Server=http://seblu.net/a/arm/month/$repo/os/$arch
+
SigLevel = PackageRequired
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
+
Server=http://seblu.net/a/arm/month/$repo/os/$arch
+
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
[extra]
+
 
SigLevel = PackageRequired
+
[extra]
Server=http://seblu.net/a/arm/month/$repo/os/$arch
+
SigLevel = PackageRequired
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
+
Server=http://seblu.net/a/arm/month/$repo/os/$arch
+
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
[community]
+
 
SigLevel = PackageRequired
+
[community]
Server=http://seblu.net/a/arm/month/$repo/os/$arch
+
SigLevel = PackageRequired
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
+
Server=http://seblu.net/a/arm/month/$repo/os/$arch
 +
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
 +
</nowiki>}}
  
 
or by replace your {{ic|/etc/pacman.d/mirrorlist}} by the following content:
 
or by replace your {{ic|/etc/pacman.d/mirrorlist}} by the following content:
  
##                                                                               
+
{{bc|<nowiki>
## Arch Linux repository mirrorlist                                             
+
##                                                                               
## Generated on 2042-01-01                                                       
+
## Arch Linux repository mirrorlist                                             
##
+
## Generated on 2042-01-01                                                       
Server=http://seblu.net/a/arm/month/$repo/os/$arch
+
##
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
+
Server=http://seblu.net/a/arm/month/$repo/os/$arch
 +
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
 +
</nowiki>}}
  
 
{{Note|It's not safe to mix ARM and up-to-date mirrror. In case of download failure, you can fallback on a upstream package and you will have packages not from the same epoch than the rest of the system.}}
 
{{Note|It's not safe to mix ARM and up-to-date mirrror. In case of download failure, you can fallback on a upstream package and you will have packages not from the same epoch than the rest of the system.}}
Line 105: Line 141:
 
This is a kind a TODO list for '''ARM'''.
 
This is a kind a TODO list for '''ARM'''.
  
* Create an all directory with all packages.
 
 
* Move to official infrastructure.
 
* Move to official infrastructure.
 
* Automatic cleanup after a defined amount of time.
 
* Automatic cleanup after a defined amount of time.
 +
 +
== Sources ==
 +
 +
Scripts used to create this are simple.
 +
 +
You can find them here: https://github.com/seblu/armtools
  
 
== Past ==
 
== Past ==

Revision as of 21:30, 29 January 2014

Related articles

The Arch Rollback Machine (ARM for short) is a daily snapshot of official Archlinux mirror. You can use it to find an old version of a package or to change the way you upgrade your system.

Location

The ARM is available at http://seblu.net/a/arm or ftp://seblu.net/archlinux/arm

Architecture

The ARM stores each day snapshot in a filesystem hierarchy like the following. In addition there are 3 symlinks pointing to special snapshots and one packages directory.

├── 2013
│   ├── 08
│   │   └── 31
│   ├── 09
│   │   ├── 01
│   │   ├── 02
│   │   ├── ...
│   │   ├── 21
│   │   └── 22
│   └── 10
│       ├── 01
│       ├── 02
│       ├── ...
│
├── packages
│   ├── a
│   │   ├── awesome
│   │   │   ├── awesome-3.5.0-1-i686.pkg.tar.xz
│   │   │   ├── awesome-3.5.0-1-x86_64.pkg.tar.xz
│   │   │   ├── awesome-3.5.1-1-i686.pkg.tar.xz
│   │   │   ├── ...
│   │   │ 
│   │   ├── ...
│   │   ├── awstats
│   │   └── axel
│   │   
│   ├── b
│   ├── ...
│   └── z
│
├── 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
│   └── ...
│
├── last -> 2013/09/22
├── month -> 2013/09/01
└── week -> 2013/09/16
  • The 20xx hierarchy contains daily snapshots of official mirror organized by date.
  • The packages hierarchy contains symlinks to all versions of each package. One directory by package.
  • The all hierarchy contains symlinks to all versions of each package in one flat directory. No listing.
  • The last symlink is updated every day and points to the last finished mirror snapshot.
  • The week symlink is updated every week and points to the monday of the current week.
  • The month symlink is updated every month and points to the first day of the current month.

Time travel

This feature allow you to get packages and databases at a given date. You can use it to:

  1. download an old package;
  2. use pacman stuck on a particular day.

To have pacman be stuck on 11th September 2013, edit your /etc/pacman.conf and use the following server directive:

[core]
SigLevel = PackageRequired
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch

[extra]
SigLevel = PackageRequired
Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch

[community]
SigLevel = PackageRequired
Server=http://seblu.net/a/arm/2013/09/11/$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://seblu.net/a/arm/2013/09/11/$repo/os/$arch

Then update the database: # pacman -Syy

Note: It's not safe to mix ARM and up-to-date mirrror. In case of download failure, you can fallback on a upstream package and you will have packages not from the same epoch than the rest of the system.

Time relativity

The feature allow you to get Archlinux upgrades delayed in time. To upgrade your computer on a weekly or a monthly basis, edit your /etc/pacman.conf and use the following server directive:

[core]
SigLevel = PackageRequired
Server=http://seblu.net/a/arm/month/$repo/os/$arch
#Server=http://seblu.net/a/arm/week/$repo/os/$arch

[extra]
SigLevel = PackageRequired
Server=http://seblu.net/a/arm/month/$repo/os/$arch
#Server=http://seblu.net/a/arm/week/$repo/os/$arch

[community]
SigLevel = PackageRequired
Server=http://seblu.net/a/arm/month/$repo/os/$arch
#Server=http://seblu.net/a/arm/week/$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://seblu.net/a/arm/month/$repo/os/$arch
#Server=http://seblu.net/a/arm/week/$repo/os/$arch
Note: It's not safe to mix ARM and up-to-date mirrror. In case of download failure, you can fallback on a upstream package and you will have packages not from the same epoch than the rest of the system.

Future

This is a kind a TODO list for ARM.

  • Move to official infrastructure.
  • Automatic cleanup after a defined amount of time.

Sources

Scripts used to create this are simple.

You can find them here: https://github.com/seblu/armtools

Past

The original ARM has been closed on 2013-08-18 [1].

The new one is hosted on seblu.net since 2013-08-31.