コンテンツにスキップ

「パッケージのオフラインインストール」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
翻訳
 
AshMyzk (トーク | 投稿記録)
英語版と同様にリダイレクト化
タグ: 新規リダイレクト
 
(2人の利用者による、間の2版が非表示)
1行目: 1行目:
#REDIRECT[[オフラインインストール#パッケージのオフラインインストール]]
[[Category:パッケージ管理]]
[[Category:Arch の入手とインストール]]
[[en:Offline installation of packages]]
[[es:Offline installation of packages]]
[[ru:Offline installation of packages]]
== 通常の方法: Pacman ==
この方法は [https://bbs.archlinux.org/viewtopic.php?id=30431 こちらのスレッド] への投稿が元になっています。

インターネットにアクセスできるコンピュータでパッケージデータベースをダウンロードして他のコンピュータに転送します。必要ならば、{{ic|ARCH}} を {{ic|x86_64}} に、{{ic|MIRROR}} を [https://www.archlinuxjp.org/mirrors/status/ ミラーリスト] に記載されているミラーに置き換えてください。

{{bc|1=<nowiki>
#!/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
</nowiki>}}

以下のステップは {{ic|pacman -Sy}} を実行したときのようにパッケージリストが最新の状態で行います。

{{ic|*.db}} ファイルをオフラインの PC に転送したら、以下のコマンドを実行:
# cp *.db /var/lib/pacman/sync/
# pacman -Sp --noconfirm ''package-name'' > pkglist

{{Tip|{{ic|/etc/pacman.d/mirrorlist}} ファイルでサーバーが有効になっていることを確認してください。有効になっていないと次のようなエラーメッセージが表示されます: {{ic|error: no database for package: package-name}}。}}

インストール直後の新しい Arch Linux ベースシステムをアップデートするには:
# pacman -Sup --noconfirm > pkglist

それからエディタでテキストファイルを開いて URL 以外の行を全て削除してください。そしてインターネットに接続できるマシンにリストをコピーして手動でパッケージをダウンロードするか wget で空のディレクトリに保存します:

# wget -nv -i ../pkglist

{{Tip|[https://www.cygwin.com cygwin] などの Windows 環境を使用してパッケージをダウンロードするとファイル名がおかしくなります。Windows のファイルの命名規則ではコロンなどをエスケープする必要があるためです。そのような場合は {{ic|1=wget --restrict-file-names=unix}} を使ってください。}}
{{ic|*.pkg.tar.gz}} ファイルを全てオフラインのマシンにコピーしたら、{{ic|/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 ですが {{ic|/var/cache/pacman/pkg/}} の代わりに専用のリポジトリを使って nvidia という名前の専用のリポジトリを使いたいとします。

==== ダウンロードするパッケージのリストを生成 ====
最新のリポジトリデータベースがある Arch Linux マシンで、必要なパッケージのリンクのリストを作成するには:
# pacman -Sp nvidia nvidia-utils xf86-video-nouveau > /path/to/nvidia.list
{{ic|nvidia.list}} ファイルには指定したパッケージのリンクと Al にまだインストールされていない依存パッケージのリンクが記載されます。キャッシュを削除しないかぎりインストールしたパッケージはキャッシュディレクトリに存在します。{{ic|/etc/pacman.conf}} でキャッシュディレクトリを確認できます (例: {{ic|/var/cache/pacman/pkg/}})。

==== パッケージと依存パッケージをダウンロードしてコピー ====
インターネット接続が必要です。'Al' で {{ic|/path/to/nvidia}} というディレクトリを作成して以下のコマンドを実行:
# wget -P /path/to/nvidia/ -i /path/to/nvidia.list
それからキャッシュからインストール済みの依存パッケージをコピーします。https://www.archlinuxjp.org/packages/ を閲覧して手動で確認するかパッケージのキャッシュの合計容量が大きくない場合は全てのパッケージをコピーしてください:
# cp /var/cache/pacman/pkg/* /path/to/nvidia/

==== パッケージのためのリポジトリデータベースを作成 ====
'Al' あるいは 'Bob' で (pacman に含まれている) {{ic|repo-add}} コマンドを使うことで作成できます。まずパッケージをダウンロードした {{ic|/path/to/nvidia}} ディレクトリに移動して、{{ic|nvidia.db.tar.gz}} という名前でデータベースファイルを作成してください:
$ cd /path/to/nvidia
# repo-add nvidia.db.tar.gz *.pkg.tar.xz

==== パッケージの転送 ====
全てのパッケージをダウンロードしたら、'Al' はもう必要ありません。{{ic|/path/to/nvidia}} の中身を 'Bob' の一時的なパッケージキャッシュディレクトリにコピーしてください。ここでは例として {{ic|/home/me/nvidia}} というディレクトリを使います:
$ cp /path/to/nvidia/* /home/me/nvidia

次に、pacman からパッケージの新しいリポジトリを使えるようにします。まず現在の {{ic|pacman.conf}} をコピー:
# cp /etc/pacman.conf /etc/pacman.conf.old
リポジトリに署名は追加しないため {{ic|/etc/pacman.conf}} の設定で SigLevel は Never に設定します:
SigLevel = Never
それから {{ic|pacman.conf}} の末尾に以下の行を追加:
[nvidia]
Server = file:///home/me/nvidia
インターネットからパッケージがダウンロードされないように他のリポジトリをコメントアウトする必要があるかもしれません。その後 pacman で作成した nvidia リポジトリを同期します:
# pacman -Sy
上記のコマンドで {{ic|/home/me/nvidia}} の {{ic|nvidia.db.tar.gz}} ファイルが認識され {{ic|/var/lib/pacman/sync/nvidia}} に伸長されて nvidia リポジトリに含まれているパッケージのデータベースが作成されます。

==== パッケージのインストール ====
最後にパッケージをインストールします:
# pacman -S nvidia nvidia-utils xf86-video nouveau

=== オンラインソースの復元 ===
Bob をオンラインにするときは前に作成しておいた {{ic|/etc/pacman.conf.old}} で {{ic|/etc/pacman.conf}} を置き換えてオンラインのリポジトリを使えるようにします。

==== ソース ====
[https://bbs.archlinux.org/viewtopic.php?id=60856) Heller_Barbe] と [https://bbs.archlinux.org/viewtopic.php?id=30431 byte] に感謝します。

2023年5月17日 (水) 22:24時点における最新版