「パッケージのオフラインインストール」の版間の差分
ナビゲーションに移動
検索に移動
(英語版と同様にリダイレクト化) タグ: 新規リダイレクト |
|||
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|MIRROR}} を [https://www.archlinux.jp/mirrors/status/ ミラーリスト] に記載されているミラーに置き換えてください。 |
||
− | |||
− | {{bc|1=<nowiki> |
||
− | #!/bin/bash |
||
− | |||
− | ARCH="x86_64" |
||
− | 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' に依存する必要がある場合。インストールしたいパッケージは {{Pkg|nvidia}}, {{Pkg|nvidia-utils}}, {{Pkg|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.archlinux.jp/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] に感謝します。 |