ネットワークに接続できない環境にある Ubuntu に対して、パッケージのインストールや更新をする方法です。何かの理由で Ubuntu をネットワークに接続できないときなど、意外にあると思いますので、記事にしておきます。
事前にパッケージを準備する
Ubuntu にインストールするパッケージを事前に準備します。ここで一番の問題点はインストール対象に依存するパッケージも準備する必要があることです。この解決方法は、ネットワークに接続できる状態で事前に apt-get で依存パッケージも一通りダウンロードすることです。
具体的には、オフライン環境の Ubuntu と同じインストール状態の Ubuntu をオンライン環境でインストール(ダウンロード)します。通常の apt-get (–download-only オプションを指定しない場合) は、/var/cache/apt/archive にダウンロードしたパッケージをキャッシュとして一時保存しています。コマンドラインは以下の通りです。ここでは vim をインストール手順を記載しています。ダウンロードしたパッケージ諸々全てをUSBメモリへ移動します。
コピーではなく、移動(mvコマンド)を使う理由は、オフライン環境で意図しないパッケージをインストールさせないためです。
- オンライン環境の Ubuntu のコマンドライン
$ sudo apt-get update
$ sudo apt-get install vim
[sudo] password for ichino:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
libwpe-1.0-1 libwpebackend-fdo-1.0-1
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
vim-runtime
Suggested packages:
ctags vim-doc vim-scripts
The following NEW packages will be installed:
vim vim-runtime
0 upgraded, 2 newly installed, 0 to remove and 8 not upgraded.
Need to get 8,561 kB of archives.
After this operation, 37.6 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Inst vim-runtime (2:8.2.3995-1ubuntu2.17 Ubuntu:22.04/jammy-updates [all])
Inst vim (2:8.2.3995-1ubuntu2.17 Ubuntu:22.04/jammy-updates [amd64])
Conf vim-runtime (2:8.2.3995-1ubuntu2.17 Ubuntu:22.04/jammy-updates [all])
Conf vim (2:8.2.3995-1ubuntu2.17 Ubuntu:22.04/jammy-updates [amd64])
$ sudo mv /var/cache/apt/archives/vim* (USBメモリ)
オフライン環境の Ubuntu にインストールする
USBメモリに保存したパッケージをオフライン環境の Ubuntu にインストールするまでのコマンドラインを記載します。USBメモリは Ubuntu でマウントされている状態としています。
コマンドはとても簡単でパッケージが保存されているフォルダで dpkg でインストールするだけです。注意点は依存関係のあるパッケージも同時にインストールされるようしなければなりません。以下の例ではワイルドカード(*)を使用しています。
- オフライン環境の Ubuntu のコマンドライン
$ cd (USBメモリ)
$ sudo dpkg -i vim*
オフラインインストールの応用
「応用」という言葉は過大な表現かもしれませんが、この方法を使うことで Ubuntu サーバーをデスクトップ化する場合など、大量のパッケージが必要となる場合も、オフライン環境でも可能となります。