APTonCDとapt-mirrorの活用による、Debianパッケージ/リポジトリを丸ごと収録したディスクの作成法

 Linuxディストリビューションのパッケージリポジトリにオンライン接続したかった時に、インターネットが利用できない状況に置かれていた、あるいは接続速度の遅さや不安定さに歯がみをしたという経験はないだろうか?  リリースされて間のないAPTonCDというユーティリティを使うと、DebianベースのディストリビューションをCDやDVDに焼き込むことが可能となり、ユーザが手元にダウンロードできる限りのDebianパッケージをバックアップディスクの形態で保存しておくことができる。しかも、こうしたAPTonCDにapt-mirrorユーティリティを組み合わせると、複数のCD/DVDに分散させる形になるではあろうが、1つのパッケージリポジトリ全体をバックアップすることも不可能ではなくなるのだ。

 APTonCDは現在、Ubuntu FeistyおよびDebianのtestingおよびunstableリポジトリに収録されているが、自分の使用しているディストリビューションからこれらを利用できない場合は、SourceForge.netからダウンロードすればいい。

 デフォルト設定下のAPTonCDは、実行時点でAPTキャッシュにある任意のパッケージをCDに焼き込もうとするが、キャッシュ中のどのパッケージをCDに取り込ませるかはユーザが指定できるようになっている。ここで言うAPTキャッシュとは、Webブラウザにおける履歴キャッシュみたいなものと思えばいいだろう。実はapt-getやSynapticを使って新規パッケージをインストールした場合、その際にダウンロードされたパッケージファイルは、コマンドapt-get cleanを実行するまでキャッシュに残留し続けているのである。

1-s

 逆に言うとAPTonCDを使うには、事前に必要なパッケージをキャッシュに取り込んでおかなければならない。そのための一番お手軽な方法は、コマンドapt-get install パッケージ名 を使って、実際に該当するパッケージをインストールすることだ。既にシステムにインストール済みのパッケージをCDにバックアップしたい場合は、apt-getに-dオプションを指定してパッケージファイルのダウンロードをすることで、実際のインストールをすることなくキャッシュへの取り込みだけを行うことができる。

apt-get -d install パッケージ名

 あるいは、各自のディストリビューションにはデフォルトで同梱されない依存ファイルもすべて含めた形で特定のパッケージをキャッシュに取り込みたい、というケースもあるだろう。その場合は、まずapt-get autoremove パッケージ名 によって当該パッケージをいったんアンインストールし、そのインストール時に自動ダウンロードされていた依存ファイルも削除しておく。そして改めてこれらのパッケージをインストールし直せば、該当するすべてのパッケージファイルがキャッシュに取り込まれるはずである。特に下記のコマンドを使うと、ユーザによる確認作業を省略した形でこれら2つの作業を一括して実行することができる。

apt-get -y autoremove パッケージ名 && apt-get -y install パッケージ名

 キャッシュの準備が整ったら、次にAPTonCDを起動する。これ以降のCDへの焼き込みプロセスについては、特別注意すべき点はない。まずはCreate APTonCDをクリックする。そしてOptionsをクリックして使用するメディア(CDかDVD)および.isoファイルの名前を指定すれば、すべての準備は完了である。後はOKをクリックすると、APTonCDによる.isoファイルの作成が始まる。なおNautilus CD-burnerがインストールされたGNOMEデスクトップであれば、APTonCDから.isoの焼き込みを実行するかの確認メッセージが表示される。

リポジトリ全体のバックアップ

 1つのリポジトリ全体をCDやDVDにバックアップする場合は、多少複雑な手順を経る必要がある。

 この場合、まず最初にリポジトリからすべてのパッケージをダウンロードしておかなければならない。考えるだけで気の滅入る作業だが、apt-mirrorというユーティリティは同時に最大20個のパッケージを連続ダウンロードすることが可能で、これを使えば簡単にリポジトリ全体をハードディスクに取り込むことができる。

 apt-mirrorを使用するには、そのパッケージをインストールする必要があるが、安定版のDebianまたはバージョン6.10(Edgy Eft)以降のUbuntuであれば、そのまま入手できるはずだ。これら以外のディストリビューションで使用する場合は、apt-mirrorのWebサイトに説明されている手順に従ってインストールすればいい。

 次にルート権限を取得して/etc/apt/mirror.listという設定ファイルを編集する。このファイルは2つのセクションに分かれており、1つ目のセクションはデフォルトオプションの設定部なので大半はそのまま放置しておいていいが(変更する必要があるかは各項目を自分で確認すること)、2つ目のセクションにはDebianパッケージのリポジトリ群が/etc/apt/sources.listファイルと同様の形式で一覧されている。

deb URL形式のリポジトリアドレス ディストリビューションバージョン セクション1 セクション2 ... セクションN

 たとえばUbuntu Feistyのmainおよびrestrictedリポジトリを指定する行は次のように記述される。

deb http://archive.ubuntu.com/ubuntu feisty main restricted

 apt-mirrorを実行すると、/var/spool/apt-mirrorに一覧されたすべてのリポジトリがダウンロードされる。各ディストリビューションにおけるすべてのリポジトリを登録しておくか、1つだけにしておくかは、個々のユーザの裁量次第である。いずれにせよ/etc/apt/sources.listから必要な行やセクション全体をコピーしてmirror.listにペーストするのが安全確実なはずだが、その際には不要な項目だけを#記号でコメントアウトしておくという手も使える。

 その次に、ルート権限を取得してコマンドapt-mirrorを実行する(apt-mirrorの終了後に行う各種コマンドの実行にもルート権限が必要となるので、最初にsudo suコマンドを実行しておく方がいいかもしれない)。ここで1つ忠告しておくと、Ubuntuのmainなどの巨大リポジトリをダウンロードする場合は数時間がかりの作業となることもあるが、ダウンロードの進捗状況についてapt-mirrorはほとんど何も示してくれない。

 apt-mirrorはディストリビューションリポジトリの正確なコピーを取得してくれるが、これらのパッケージは複雑な構成のディレクトリ群に分散して格納されることになる。そしてダウンロードしたパッケージ群をAPTonCDで自動インポートさせるには、これらをすべてAPTキャッシュのディレクトリに移動しておかなければならない。こうした処理を一括して行うには、ルート権限を取得して下記のコマンドを実行すればいい。

cd /var/spool/apt-mirror #ミラーの格納用ディレクトリに移動
find mirror/ -iname *.deb | xargs mv -t /var/cache/apt/archives #パッケージファイルを検索して、各ファイルをキャッシュディレクトリに移動

 後は前述の場合と同様の手順でAPTonCDを実行すれば(この実行にルート権限は不要)、apt-mirrorでのダウンロードを指定しておいたすべてのパッケージが一覧されるはずである。

リポジトリを焼き込んだディスクの使用法

 このようにして作成したCDとDVDからは、apt-getやSynapticを介したパッケージのインストールが行えるようになっているはずである。実際にその作業を行うにあたっては、使用するCDをAPTソースに登録しておく必要があるが、この作業もAPTonCD上で実行することができる。具体的な手順としては、パッケージを焼き込んだディスクを挿入して、APTonCDの画面に切り換え、Restoreタブをクリックする。後はAdd…をクリックし、登録内容を確認してOKをクリックすればいい。なおこの機能では、複数のディスクを連続登録できるようになっている。

 以上の作業をすべて正常に実行できたユーザは、オンラインであるかオフラインであるかを気にすることなく、apt-getによるパッケージインストールを心ゆくまで実行できる環境を入手したことになる。

NewsForge.com 原文