オフラインインストール

提供: ArchWiki
ナビゲーションに移動 検索に移動

この記事では、インターネット接続の無いシステムで Arch Linux をインストールする方法を説明します。これを行うには、インターネット接続のある別のシステムが必要です。

まず、インストールガイドインストールガイド#必須パッケージのインストール の前まで行ってください (ただし、インストールガイド#インターネットへの接続 はスキップする)。

警告: Arch Linux の ISO からルートファイルシステムイメージ (airootfs.sfs) を抽出したり、live 環境のルートファイルシステムをコピーしたりするインストール方法はサポートされていません。

ローカルリポジトリを準備する

Pacman ヒント#パッケージを CD/DVD や USB スティックからインストールする の指示に従って、必要なファイルを含むローカルリポジトリを別のホスト環境上に準備してください。

最低限、システムを機能させるには以下のパッケージをインストールすることが推奨されます:

# pacman -Syw --cachedir . --dbpath /tmp/blankdb base base-devel linux linux-firmware mkinitcpio vim

カスタムのオフラインリポジトリを作成してください:

# repo-add ./custom.db.tar.gz ./*[^sig]

マウントと設定

リポジトリの準備が済んだら、外部メディアを新しい環境に接続し、新しく作成したルートファイルシステムにメディアをマウントしてください:

# mount --mkdir /dev/sdxy /mnt/repo

archiso /etc/pacman.conf を編集し、新しいセクションを追加してください:

/etc/pacman.conf
[custom]
SigLevel = Optional
Server = file:///mnt/repo/

pacman がデフォルトのリポジトリでエラーを吐かないようにするために、[core][extra][community] のセクションをコメントアウトしてください。

Pacstrap

これで、ローカルで利用可能なパッケージを新しい環境に pacstrap することができます:

# pacstrap -K /mnt base base-devel linux linux-firmware mkinitcpio vim

パッケージのオフラインインストール

ファイルからインストールする

ネットワークにアクセスする前にいくつかのパッケージを手動でインストールする必要があり、一時的にオフラインインストールをする場合、ローカルのパッケージをインストールする方法について pacman#追加コマンド を参照してください。

シェルグロブを使うことで、多くのパッケージを一度にインストールすることができます:

# pacman -U /package/folder/*.tar.zst

オフラインキャッシュ

必要なファイルを /var/lib/pacman/sync/var/cache/pacman/pkg に入れることで、検索、更新、そしてインストールすべきものがすべて揃っていると pacman に認識させることができます。以下の方法は2つのフォーラムスレッドが元になっています: [1][2]

手順:

  1. インターネットアクセスのあるコンピュータ上で最新のパッケージデータベースをダウンロードする。
  2. それらをオフラインのコンピュータへ転送する。
  3. オフラインコンピュータからアップデートする必要のあるパッケージのリストを生成する。
  4. インターネットアクセスのあるコンピュータ上でそれらのパッケージを署名と共にダウンロードする。
  5. それらをオフラインのコンピュータの pacman キャッシュへ転送する。
  6. 更新をインストールする。
ヒント: デフォルトのリポジトリをデフォルト (core、extra、community、multilib) から変更した場合、/etc/pacman.conf ファイルを確認しておくべきです。

以下のスクリプトは最新のパッケージデータベースをダウンロードします。必要であれば、MIRRORミラーステータスリストの別のミラーに変更してください。

download_databases.sh
#!/bin/sh

ARCH="x86_64"
MIRROR="https://mirrors.kernel.org/archlinux/"

wget "${MIRROR}/core/os/${ARCH}/core.db"
wget "${MIRROR}/extra/os/${ARCH}/extra.db"
wget "${MIRROR}/community/os/${ARCH}/community.db"
wget "${MIRROR}/multilib/os/${ARCH}/multilib.db"

# 必要に応じて以下もアンコメント (/etc/pacman.conf や pacman.conf.d でカスタマイズしている場合):

#wget "${MIRROR}/testing/os/${ARCH}/testing.db"
#wget "${MIRROR}/community-testing/os/${ARCH}/community-testing.db"
#wget "${MIRROR}/multilib-testing/os/${ARCH}/multilib-testing.db"

# 必要に応じてデバッグパッケージやステージングパッケージも追加。

このスクリプトを実行可能にして実行してください。複数の .db ファイルが取得されます。

以下の手順では、これらの .db ファイルをオフラインの PC へ転送し、(まるで pacman -Sy を実行したかのように) 最新のパッケージリストで作業できるようにし、更新が必要なパッケージのリストを生成します:

# cp *.db /var/lib/pacman/sync/
# pacman -Sup --noconfirm > pkglist
ノート: /etc/pacman.d/mirrorlist ファイルで定義されているサーバのうち少なくとも1つは有効にしておいてください。さもないと、誤解を招くエラーメッセージが表示されてしまいます: error: no database for package: package-name

対応するパッケージ署名もダウンロードする必要があります。なので、ダウンロードすべき署名のリストを用意してください:

# sed -e 's/\.zst$/.zst.sig/' ../pkglist > ../siglist

Next, bring the two lists with you to a place where you have internet and download the listed packages in an empty directory:

次に、インターネットにアクセスできる場所にこれらの2つのリストを持ってきて、リスト内のパッケージを空のディレクトリ内でダウンロードしてください:

# wget -nv -i ../pkglist
# wget -nv -i ../siglist
ヒント: cygwin などの Windows 環境を使ってパッケージをダウンロードする場合、デフォルトの Windows ファイル命名規則ではコロンなどをエスケープする必要があるので、ファイル名がマングリングされます。(そのような制限に従っていない cygwin で) これを防ぐには、wget --restrict-file-names=unix を使用してください。

すべての *.pkg.tar.zst*.pkg.tar.zst.sig ファイルをオフラインのコンピュータへ移動させ、それらを /var/cache/pacman/pkg 内に置き、最後に以下を実行してください:

# pacman -Su

ローカルリポジトリ

新しいシステムがオフライン、あるいはネットワークから物理的に切り離されたままになることが予想される場合、ローカルリポジトリのみを使うように設定する必要があります。

完全なリポジトリ

新しい環境に chroot して、先に説明したように /etc/pacman.conf を編集してください (ただし、/mnt を除いて):

/etc/pacman.conf
[custom]
SigLevel = Optional
Server = file:///repo/

他のすべてのリポジトリをコメントアウトし、保存してください。通常通り、新しいシステムの設定を続けてください。

これで、このオフラインのシステムのアップデートは、ローカルリポジトリの最新のコピーを持ってきて、それを /repo にマウントし、通常通り pacman のコマンドを実行することで行えます。

翻訳ステータス: このページは en:Offline installation の翻訳バージョンです。最後の翻訳日は 2023-05-17 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。