Ubuntu offline package install/update

ubuntu

ネットワークに接続できない環境にある 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 サーバーをデスクトップ化する場合など、大量のパッケージが必要となる場合も、オフライン環境でも可能となります。