パッケージのオフラインインストール
目次
通常の方法: Pacman
この方法は こちらのスレッド への投稿が元になっています。
インターネットにアクセスできるコンピュータでパッケージデータベースをダウンロードして他のコンピュータに転送します。必要ならば、ARCH
を x86_64
に、MIRROR
を ミラーリスト に記載されているミラーに置き換えてください。
#!/bin/bash ARCH='i686' MIRROR='https://mirrors.kernel.org/archlinux/' wget "${MIRROR}/community/os/${ARCH}/community.db" wget "${MIRROR}/core/os/${ARCH}/core.db" wget "${MIRROR}/extra/os/${ARCH}/extra.db" if [ "$ARCH" == "x86_64" ]; then wget "${MIRROR}/multilib/os/${ARCH}/multilib.db" fi
以下のステップは pacman -Sy
を実行したときのようにパッケージリストが最新の状態で行います。
*.db
ファイルをオフラインの PC に転送したら、以下のコマンドを実行:
# cp *.db /var/lib/pacman/sync/ # pacman -Sp --noconfirm package-name > pkglist
インストール直後の新しい Arch Linux ベースシステムをアップデートするには:
# pacman -Sup --noconfirm > pkglist
それからエディタでテキストファイルを開いて URL 以外の行を全て削除してください。そしてインターネットに接続できるマシンにリストをコピーして手動でパッケージをダウンロードするか wget で空のディレクトリに保存します:
# wget -nv -i ../pkglist
*.pkg.tar.gz
ファイルを全てオフラインのマシンにコピーしたら、/var/cache/pacman/pkg
に配置して以下のコマンドを実行してください:
# pacman -S package-name
単純な例
ダウンロードしたパッケージをインストールするには:
# pacman -U /root/Download/packagename.tar.gz
ディレクトリに保存した複数のパッケージをインストールするには:
# pacman -U /root/Download/*.tar.gz
少し工夫した例
シナリオ: インターネット接続が出来る 'Al' とインターネットに接続できない 'Bob' という2台の Arch Linux マシンが存在して、nvidia パッケージと依存パッケージを 'Bob' に依存する必要がある場合。インストールしたいパッケージは nvidia, nvidia-utils, xf86-video-nouveau ですが /var/cache/pacman/pkg/
の代わりに専用のリポジトリを使って nvidia という名前の専用のリポジトリを使いたいとします。
ダウンロードするパッケージのリストを生成
最新のリポジトリデータベースがある Arch Linux マシンで、必要なパッケージのリンクのリストを作成するには:
# pacman -Sp nvidia nvidia-utils xf86-video-nouveau > /path/to/nvidia.list
nvidia.list
ファイルには指定したパッケージのリンクと Al にまだインストールされていない依存パッケージのリンクが記載されます。キャッシュを削除しないかぎりインストールしたパッケージはキャッシュディレクトリに存在します。/etc/pacman.conf
でキャッシュディレクトリを確認できます (例: /var/cache/pacman/pkg/
)。
パッケージと依存パッケージをダウンロードしてコピー
インターネット接続が必要です。'Al' で /path/to/nvidia
というディレクトリを作成して以下のコマンドを実行:
# wget -P /path/to/nvidia/ -i /path/to/nvidia.list
それからキャッシュからインストール済みの依存パッケージをコピーします。https://www.archlinux.jp/packages/ を閲覧して手動で確認するかパッケージのキャッシュの合計容量が大きくない場合は全てのパッケージをコピーしてください:
# cp /var/cache/pacman/pkg/* /path/to/nvidia/
パッケージのためのリポジトリデータベースを作成
'Al' あるいは 'Bob' で (pacman に含まれている) repo-add
コマンドを使うことで作成できます。まずパッケージをダウンロードした /path/to/nvidia
ディレクトリに移動して、nvidia.db.tar.gz
という名前でデータベースファイルを作成してください:
$ cd /path/to/nvidia # repo-add nvidia.db.tar.gz *.pkg.tar.xz
パッケージの転送
全てのパッケージをダウンロードしたら、'Al' はもう必要ありません。/path/to/nvidia
の中身を 'Bob' の一時的なパッケージキャッシュディレクトリにコピーしてください。ここでは例として /home/me/nvidia
というディレクトリを使います:
$ cp /path/to/nvidia/* /home/me/nvidia
次に、pacman からパッケージの新しいリポジトリを使えるようにします。まず現在の pacman.conf
をコピー:
# cp /etc/pacman.conf /etc/pacman.conf.old
リポジトリに署名は追加しないため /etc/pacman.conf
の設定で SigLevel は Never に設定します:
SigLevel = Never
それから pacman.conf
の末尾に以下の行を追加:
[nvidia] Server = file:///home/me/nvidia
インターネットからパッケージがダウンロードされないように他のリポジトリをコメントアウトする必要があるかもしれません。その後 pacman で作成した nvidia リポジトリを同期します:
# pacman -Sy
上記のコマンドで /home/me/nvidia
の nvidia.db.tar.gz
ファイルが認識され /var/lib/pacman/sync/nvidia
に伸長されて nvidia リポジトリに含まれているパッケージのデータベースが作成されます。
パッケージのインストール
最後にパッケージをインストールします:
# pacman -S nvidia nvidia-utils xf86-video nouveau
オンラインソースの復元
Bob をオンラインにするときは前に作成しておいた /etc/pacman.conf.old
で /etc/pacman.conf
を置き換えてオンラインのリポジトリを使えるようにします。
ソース
Heller_Barbe と byte に感謝します。