オフラインでの APT の使用法



バージョン 3.1.3



目次

1. はじめに
1.1. 概要
2. 両方のマシンでの APT の使用法
2.1. 概要
2.2. 設定ファイル
3. APT と wget の使用
3.1. 概要
3.2. 操作
   

通常 APT は Debian アーカイブに、ローカルメディアから、あるいはネットワーク経由で直接アクセスできる必要があります。他によくある苦情としてはある Debian マシンの接続がモデム等のために低速で、別のマシンには非常に高速な接続があるけれども物理的に遠い、といったことがあります。

   

これに対する解法としては Zip や SuperDisk ディスクといった大容量脱着可能メディアを使います。こういったディスクは Debian アーカイブ全体を格納するには十分とは言えない容量ですがほとんどのユーザにとって必要なその一部を収めるには十分余裕があります。その考え方は APT を使って必要なパッケージの一覧を生成し、接続状態の良好な別のマシンを使ってそのディスク上に取得します。APT を使える別の Debian マシンや、完全に異なる OS で wget のようなダウンロードツールを使うことも可能です。リモートホストはパッケージをダウンロードするマシン、対象ホストは接続がないあるいは良くないマシンだと考えてください。

   

これは APT 設定ファイルを独創的に操作することで実現できます。あるディスクを APT が検索するようにするために必須となる前提条件はアーカイブファイルです。そのディスクは長いファイル名を扱えるファイルシステム、例えば ext2 や fat32、vfat でフォーマットする必要があることに注意してください。

   

設定ファイルでは APT が管理ファイルをそのディスクに保存し、そのディスク上の設定ファイルを同様に利用するように指示する必要があります。sources.list ではリモートマシンから利用する適切なサイトを指定し、status ファイルは対象ホスト/var/lib/dpkg/status をコピーしたものを利用します。ローカルアーカイブを使っている場合はその URI を利用しないといけないことに注意してください。書式はファイルの URI と同一です。

   

apt.conf には APT がそのディスクを使うようにするのに必要な情報を記述しないといけません:

   
 APT
 {
   /* This is not necessary if the two machines are the same arch, it tells
      the remote APT what architecture the target machine is */
   Architecture "i386";

   Get::Download-Only "true";
 };

 Dir
 {
   /* Use the disc for state information and redirect the status file from
      the /var/lib/dpkg default */
   State "/disc/";
   State::status "status";

   // Binary caches will be stored locally
   Cache::archives "/disc/archives/";
   Cache "/tmp/";

   // Location of the source list.
   Etc "/disc/";
 };
   

apt.conf の man ページや /usr/share/doc/apt/examples/apt.conf にある見本の設定ファイルを調べるとさらなる詳細があります。

   

対象のマシンでまず行うことはディスクをマウントしてそのディスクに /var/lib/dpkg/status をコピーすることです。概要にまとめられているように、ディレクトリ archives/partial/ 及び lists/partial/ を作成する必要もあるでしょう。それからディスクをリモートマシンに移動して sources.list を設定します。リモートマシンでは以下の手順を実行します:

   
 # export APT_CONFIG="/disc/apt.conf"
 # apt-get update
 [ package ファイルを APT が取得します ]
 # apt-get dist-upgrade
 [ 対象マシンをアップグレードするのに必要なパッケージを、APT が取得します ]
   

dist-upgrade コマンドは他の任意の標準的な APT コマンド、特に dselect-upgrade に置き換えることができます。dselect 等の APT フロントエンドを使うこともできます。しかし、それには選択したときにローカルコンピュータとやりとりしてしまうという問題があります。

   

これで、対象のマシンをアップグレードするのに必要な索引ファイルとアーカイブが全てこのディスクに収録されたということになります。ディスクを戻して実行します:

   
  # export APT_CONFIG="/disc/apt.conf"
  # apt-get check
  [ キャッシュファイルのローカルコピーを生成します ]
  # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade
  [ もしくはその他の APT コマンド ]
   

適切に機能するためにはローカルのファイルを status ファイルに再指定する必要があります。これは非常に重要です!

   

dselect を使っている場合、disc/status はリモートマシンで何か選択すると更新されるため /var/lib/dpkg/status にコピーするのは非常に危険です。選択はローカルマシンでのみ行うことを強く勧めます - しかしこれは常に可能だとは限りません。dpkg や APT を実行している間は status ファイルをコピー *しないでください* !!