# Arch Rollback Machine (日本語)

関連記事

- パッケージのダウングレード

Arch Rollback Machine (略して ARM) は公式の Archlinux ミラーの毎日のスナップショットです。 ARM を使うことでパッケージの古いバージョンを探したりシステムの更新方法を変えることができます。

## 場所

ARM は http://seblu.net/a/arm または ftp://seblu.net/archlinux/arm から利用可能です。

## アーキテクチャ

ARM は一日のスナップショットを以下のような階層でファイルシステムに保存しています。 さらに特別なスナップショットにリンクする3つのシンボリックリンクと１つのパッケージディレクトリがあります。

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

- 20xx の階層には日付によってまとめられた公式ミラーの日毎のスナップショットが含まれています。
- packages の階層にはそれぞれのパッケージの全てのバージョンのシンボリックリンクが含まれています。パッケージごとに一つのディレクトリにまとめれています。
- all の階層にはひとつのディレクトリにそれぞれのパッケージの全てのバージョンのシンボリックリンクが含まれています。順番はありません。
- last シンボリックリンクは毎日更新され、最後に完了したミラーのスナップショットにリンクします。
- week シンボリックリンクは毎週更新され、今週の月曜日にリンクします。
- month シンボリックリンクは毎月更新され、今月の最初の日にリンクします。

## タイムトラベル

この機能によって指定した月日のパッケージとデータベースを取得することが可能です。時間旅行を行うことで:

1. 古いパッケージをダウンロードできます。
2. pacman の時間を特定の日で止められます。

pacman を2013年10月11日に飛ばすには、`/etc/pacman.conf` を編集して以下の server ディレクティブを使って下さい:

    [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

もしくは `/etc/pacman.d/mirrorlist` を以下の内容で置き換えてください:

    ##
    ## Arch Linux repository mirrorlist
    ## Generated on 2042-01-01
    ##
    Server=http://seblu.net/a/arm/2013/09/11/$repo/os/$arch

それからデータベースを更新してください: `# pacman -Syy`

Note: ARM と最新のミラーを混ぜるのは危険です。ダウンロードが失敗した場合に、上流のパッケージが拾われる可能性があり、システムの他の部分と epoch が合わないパッケージが入ることになってしまいます。

## 時間の遅れ

この機能を使うことで Archlinux の更新を将来に先送りすることが可能です。 コンピュータを週ごと・月ごとのペースで更新するには、`/etc/pacman.conf` を編集して以下の server ディレクティブを使って下さい:

    [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

もしくは `/etc/pacman.d/mirrorlist` を以下の内容で置き換えてください:

    ##
    ## 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: ARM と最新のミラーを混ぜるのは危険です。ダウンロードが失敗した場合に、上流のパッケージが拾われる可能性があり、システムの他の部分と epoch が合わないパッケージが入ることになってしまいます。

## 未来

以下 ARM の TODO リスト。

- 公式のインフラに移動。
- ある程度時間が経過したら自動でクリーンアップ。
- AUR を ARM に追加する。

## ソース

ARM を作るためのスクリプトはシンプルです。

スクリプトはここから入手できます: https://github.com/seblu/armtools

## 過去

オリジナルの ARM は 2013-08-18 に幕を閉じました [1]。

新しい ARM は 2013-08-31 から seblu.net でホストされています。

Category:

- Package management (日本語)