「Arch Linux Archive」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(同期)
2行目: 2行目:
 
[[en:Arch Linux Archive]]
 
[[en:Arch Linux Archive]]
 
[[fr:Arch Linux Archive]]
 
[[fr:Arch Linux Archive]]
  +
[[pt:Arch Linux Archive]]
 
[[zh-hans:Arch Linux Archive]]
 
[[zh-hans:Arch Linux Archive]]
 
{{Related articles start}}
 
{{Related articles start}}
13行目: 14行目:
 
* ある特定の時間まで全てのパッケージをリストア (全てのパッケージが壊れていて、2ヶ月前まで戻したい場合)
 
* ある特定の時間まで全てのパッケージをリストア (全てのパッケージが壊れていて、2ヶ月前まで戻したい場合)
 
* 1つ前のバージョンの ISO イメージを取得
 
* 1つ前のバージョンの ISO イメージを取得
  +
  +
パッケージが保存される期間は数年間だけで、それ以降は archive.org の [[#Historical_Archive|Arch Linux Historical Archive]] に移動されます。
   
 
== 場所 ==
 
== 場所 ==
   
 
Arch Linux Archive は現在 https://archive.archlinux.org/ から利用可能です。
 
Arch Linux Archive は現在 https://archive.archlinux.org/ から利用可能です。
 
以下の URL は非推奨となっており後に廃止される予定です:
 
* http://ala.seblu.net/
 
   
 
[https://github.com/seblu/archivetools ソースコード] を入手して自分で Arch Linux Archive をセットアップすることもできます。
 
[https://github.com/seblu/archivetools ソースコード] を入手して自分で Arch Linux Archive をセットアップすることもできます。
196行目: 196行目:
   
 
{{Note|Archive と最新のミラーを混ぜるのは[[pacman#部分的なアップグレードはサポートされていません|危険]]です。ダウンロードが失敗した場合に、上流のパッケージが拾われる可能性があり、システムの他の部分と epoch が合わないパッケージが入ることになってしまいます。}}
 
{{Note|Archive と最新のミラーを混ぜるのは[[pacman#部分的なアップグレードはサポートされていません|危険]]です。ダウンロードが失敗した場合に、上流のパッケージが拾われる可能性があり、システムの他の部分と epoch が合わないパッケージが入ることになってしまいます。}}
  +
  +
== Historical Archive ==
  +
  +
Arch Linux Archive を維持するのに大量のリソースが消費されるため、古いパッケージは随時消去されます。
  +
  +
古いパッケージは削除される前に、archive.org の [https://archive.org/details/archlinuxarchive "Arch Linux Historical Archive"] コレクションにアップロードされます。
  +
  +
Historical Archive には特定の日時における Arch パッケージの「スナップショット」を取得する機能がありません。ただし、{{ic|archive.archlinux.org}} のリダイレクトによって古いパッケージをダウンロードしようとすると {{ic|archive.org}} の Historical Archive にリダイレクトされるようになっています。ユーザーから見れば特に影響はありませんが、{{ic|archive.org}} からのダウンロードは基本的に速度が遅くなります。
  +
  +
=== Historical Archive でパッケージを検索 ===
  +
  +
'''Arch Linux Historical Archive''' コレクションには全てのパッケージのインデックスが存在します: https://archive.org/details/archlinuxarchive
  +
  +
識別子を使ってパッケージに直接アクセスすることも可能です。識別子の基本パターンは:
  +
  +
archlinux_pkg_<sanitized package name>
  +
  +
サニタイズされたパッケージ名は、パッケージ名に含まれている {{ic|@}}, {{ic|+}}, {{ic|.}} 記号をアンダーバーの {{ic|_}} に置き換えた名前となります。
  +
  +
例えば {{pkg|lucene++}} の識別子は {{ic|archlinux_pkg_lucene__}} です。
  +
  +
識別子でパッケージの詳細ページにアクセスすることが可能です。例: https://archive.org/details/archlinux_pkg_lucene__
  +
  +
[https://github.com/jjjake/internetarchive archive.org の Python クライアント] を使って検索を行うこともできます:
  +
  +
{{hc|$ ia search subject:"archlinux package" subject:'mysql'|<nowiki>
  +
{"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>}}
  +
  +
=== Historical Archive からパッケージをダウンロード ===
  +
  +
全てのバージョンのパッケージ (と署名) はパッケージのダウンロードページからアクセスできます: https://archive.org/download/archlinux_pkg_lucene__
  +
  +
パッケージの取得例:
  +
  +
$ wget <nowiki>https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}</nowiki>
  +
# pacman -U <nowiki>https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz</nowiki>
  +
  +
pacman を使用する場合、依存関係を自分で解決する必要があります。
  +
  +
[https://github.com/jjjake/internetarchive archive.org の Python クライアント] でダウンロードすることも可能です。
  +
  +
特定のバージョンのパッケージをダウンロード:
  +
$ ia download archlinux_pkg_cjdns cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}
  +
  +
パッケージの x86_64 版と署名を全てダウンロード:
  +
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.xz*"
  +
  +
=== パッケージのダウンロードを Historical Archive にリダイレクト ===
  +
  +
古いパッケージのダウンロードを {{ic|archive.org}} にリダイレクトする orion サーバーの Nginx 設定:
  +
  +
{{bc|<nowiki>
  +
location ~ /repos/201[3456]/.*/.*\.pkg\.tar\.xz(\.sig)? {
  +
# Tricky regexp to separate the pkgname from the pkgver (both can contain "-")
  +
rewrite ^/repos/.*/((.*?)-[^-/]+-[0-9]+-[^-]+.*\.pkg\.tar\.xz(\.sig)?)$ /archive.org/archlinux_pkg_$2/$1 last;
  +
}
  +
  +
# archive.org download URLs look like:
  +
# https://archive.org/download/archlinux_pkg_lucene__/lucene++-1.4.2-3-i686.pkg.tar.xz
  +
# We need to remove @.+ in the identifier (archlinux_pkg_*) but keep it in the filename at the end.
  +
location /archive.org/ {
  +
# Rewrite @, + and . into _
  +
# This is recursive so it will work even for multiple replacement,
  +
# with up to 10 replacements for each character (nginx recursion limit).
  +
# Idea from https://stackoverflow.com/a/15934256
  +
rewrite ^/archive\.org/([^@]*)@(.*)/(.*)$ /archive.org/$1_$2/$3;
  +
rewrite ^/archive\.org/([^\.]*)\.(.*)/(.*)$ /archive.org/$1_$2/$3;
  +
rewrite ^/archive\.org/([^\+]*)\+(.*)/(.*)$ /archive.org/$1_$2/$3;
  +
# Once there are no more @.+ in the identifier part, redirect to archive.org
  +
rewrite ^/archive\.org/([^@\+\.]*/.*)$ https://archive.org/download/$1 permanent;
  +
}
  +
</nowiki>}}
   
 
== 歴史 ==
 
== 歴史 ==
203行目: 279行目:
 
* 2015年10月13日に、新しい URL が作られ昔の ARM ディレクトリは無くなりました。新しいソフトウェア、{{AUR|agetpkg-git}} が作られました。
 
* 2015年10月13日に、新しい URL が作られ昔の ARM ディレクトリは無くなりました。新しいソフトウェア、{{AUR|agetpkg-git}} が作られました。
 
* 2015年12月19日に [https://archive.archlinux.org archive.archlinux.org] に移動しました [https://lists.archlinux.org/pipermail/arch-dev-public/2015-December/027635.html]。
 
* 2015年12月19日に [https://archive.archlinux.org archive.archlinux.org] に移動しました [https://lists.archlinux.org/pipermail/arch-dev-public/2015-December/027635.html]。
  +
* 2018年6月5日に2013年〜2016年の古いパッケージは [https://archive.org/details/archlinuxarchive archive.org] にアップロードされました。

2018年6月10日 (日) 18:40時点における版

関連記事

Arch Linux Archive (略して ALA), 旧称 Arch Linux Rollback Machine (略して ARM) は公式リポジトリのスナップショットや昔の ISO イメージ、ブートストラップ tarball などを保存しています。

ALA を使うことで以下のことができます:

  • パッケージを昔のバージョンにダウングレード (最新版が壊れていて、1つ前のバージョンに戻したい場合)
  • ある特定の時間まで全てのパッケージをリストア (全てのパッケージが壊れていて、2ヶ月前まで戻したい場合)
  • 1つ前のバージョンの ISO イメージを取得

パッケージが保存される期間は数年間だけで、それ以降は archive.org の Arch Linux Historical Archive に移動されます。

場所

Arch Linux Archive は現在 https://archive.archlinux.org/ から利用可能です。

ソースコード を入手して自分で Arch Linux Archive をセットアップすることもできます。

ディレクトリ

Archive は以下のように3つのメインディレクトリに分かれています。

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

/repos

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
ノート: 最後の3つの特殊なディレクトリ (last, week, month) はそれぞれ最後に同期したリポジトリ、最後の月曜日に同期したリポジトリ、月の初めに同期したリポジトリにリンクしています。

/packages

packages ディレクトリには全てのバージョンのパッケージと署名が含まれています。1つのパッケージに1つのディレクトリとなっており、パッケージのディレクトリは最初の一文字によってまとめられています。

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

.all サブディレクトリを使うことでパッケージの名前で直接アクセスすることができます。要するに、全てのパッケージの全てのバージョンが一つのディレクトリに収まっています。

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

完全なパッケージリストは次の URL からダウンロードできます (圧縮済みです): 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

iso ディレクトリには公式 ISO イメージとブートストラップ tarball が収められており、リリース日によって分けられています。

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

パッケージをダウングレードする方法

/packages の中からダウングレードしたいパッケージを探して以下のようにインストールしてください:

# pacman -U https://archive.archlinux.org/packages/ ... packagename.pkg.tar.xz

pacman はパッケージに付属している .sig ファイルを自動的にダウンロードして /etc/pacman.conf の設定にしたがって検証を実行します。

もしくは、パッケージを手動でダウンロードして pacman -U でインストールする方法もあります。

ダウングレードを簡単にするツールについてはパッケージのダウングレード#公式パッケージを見てください。

特定の日時まで全てのパッケージをリストアする方法

特定の日時にあったパッケージにリストアするには、例えば2014年3月30日の場合、/etc/pacman.conf を編集して以下のようにサーバーを記述することで pacman にその時のパッケージをダウンロードさせます:

[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

もしくは以下の内容で /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

そしてデータベースをアップデートして強制的にダウングレード:

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

Historical Archive

Arch Linux Archive を維持するのに大量のリソースが消費されるため、古いパッケージは随時消去されます。

古いパッケージは削除される前に、archive.org の "Arch Linux Historical Archive" コレクションにアップロードされます。

Historical Archive には特定の日時における Arch パッケージの「スナップショット」を取得する機能がありません。ただし、archive.archlinux.org のリダイレクトによって古いパッケージをダウンロードしようとすると archive.org の Historical Archive にリダイレクトされるようになっています。ユーザーから見れば特に影響はありませんが、archive.org からのダウンロードは基本的に速度が遅くなります。

Historical Archive でパッケージを検索

Arch Linux Historical Archive コレクションには全てのパッケージのインデックスが存在します: https://archive.org/details/archlinuxarchive

識別子を使ってパッケージに直接アクセスすることも可能です。識別子の基本パターンは:

archlinux_pkg_<sanitized package name>

サニタイズされたパッケージ名は、パッケージ名に含まれている @, +, . 記号をアンダーバーの _ に置き換えた名前となります。

例えば lucene++ の識別子は archlinux_pkg_lucene__ です。

識別子でパッケージの詳細ページにアクセスすることが可能です。例: https://archive.org/details/archlinux_pkg_lucene__

archive.org の Python クライアント を使って検索を行うこともできます:

$ 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"}

Historical Archive からパッケージをダウンロード

全てのバージョンのパッケージ (と署名) はパッケージのダウンロードページからアクセスできます: https://archive.org/download/archlinux_pkg_lucene__

パッケージの取得例:

$ wget https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}
# pacman -U https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz

pacman を使用する場合、依存関係を自分で解決する必要があります。

archive.org の Python クライアント でダウンロードすることも可能です。

特定のバージョンのパッケージをダウンロード:

$ ia download archlinux_pkg_cjdns cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}

パッケージの x86_64 版と署名を全てダウンロード:

$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.xz*"

パッケージのダウンロードを Historical Archive にリダイレクト

古いパッケージのダウンロードを archive.org にリダイレクトする orion サーバーの Nginx 設定:

location ~ /repos/201[3456]/.*/.*\.pkg\.tar\.xz(\.sig)? {
        # Tricky regexp to separate the pkgname from the pkgver (both can contain "-")
        rewrite ^/repos/.*/((.*?)-[^-/]+-[0-9]+-[^-]+.*\.pkg\.tar\.xz(\.sig)?)$ /archive.org/archlinux_pkg_$2/$1 last;
}

# archive.org download URLs look like:
# https://archive.org/download/archlinux_pkg_lucene__/lucene++-1.4.2-3-i686.pkg.tar.xz
# We need to remove @.+ in the identifier (archlinux_pkg_*) but keep it in the filename at the end.
location /archive.org/ {
        # Rewrite @, + and . into _
        # This is recursive so it will work even for multiple replacement,
        # with up to 10 replacements for each character (nginx recursion limit). 
        # Idea from https://stackoverflow.com/a/15934256
        rewrite ^/archive\.org/([^@]*)@(.*)/(.*)$   /archive.org/$1_$2/$3;
        rewrite ^/archive\.org/([^\.]*)\.(.*)/(.*)$ /archive.org/$1_$2/$3;
        rewrite ^/archive\.org/([^\+]*)\+(.*)/(.*)$ /archive.org/$1_$2/$3;
        # Once there are no more @.+ in the identifier part, redirect to archive.org
        rewrite ^/archive\.org/([^@\+\.]*/.*)$ https://archive.org/download/$1 permanent;
}

歴史

  • オリジナルの ARM (Archlinux Rollback Machine) は2013年8月18日に幕を閉じました [1]
  • 新しい ARM は2013年8月31日から seblu.net でホストされています。
  • 2015年10月13日に、新しい URL が作られ昔の ARM ディレクトリは無くなりました。新しいソフトウェア、agetpkg-gitAUR が作られました。
  • 2015年12月19日に archive.archlinux.org に移動しました [2]
  • 2018年6月5日に2013年〜2016年の古いパッケージは archive.org にアップロードされました。