ネットワークドライバーをビルドしたいのに、対象PCがインターネットへ接続できない。こうした状況では、必要なパッケージと依存関係を別のPCで取得し、USBメモリーなどで持ち込む方法が有効です。
2026年10月8日改訂。旧記事のUbuntu 18.04用ブートUSBの手順を、apt-offlineによる依存関係の取得手順に更新しました。
ブートUSBだけで解決できるとは限らない
build-essentialは、C/C++のビルドに使うコンパイラーやmakeなどを依存関係としてまとめたパッケージです。インストール用USBに、対象環境で必要なパッケージがすべて含まれているとは限りません。Ubuntuのパッケージ情報で依存関係を確認できます。
旧記事が対象にしていたUbuntu 18.04は標準サポートの期間を終えています。継続利用時の拡張サポートと、サポート中のLTSへの移行はUbuntuのリリースサイクルで確認してください。別リリース向けのパッケージを混在させないことも重要です。
作業の前提
- オフラインPCと取得用PCの両方で
apt-offlineを使えること。 - 対象PCのUbuntuリリース、CPUアーキテクチャ、APTの取得先を把握していること。
- 署名ファイルとZIPファイルを往復させる媒体があること。
apt-offline自体が未導入の場合は、そのパッケージと依存関係の持ち込みが先に必要です。以下の手順だけでは、その初期準備は完了しません。可能なら、接続できる段階で導入しておきます。
以下のファイル名は作業例です。update.sigはパッケージ一覧の取得要求、packages.sigは必要パッケージの取得要求、各.zipは取得したデータをまとめるファイルです。媒体を移動した後は、ファイルがあるディレクトリで実行します。
1. パッケージ一覧を更新する
オフラインPCで取得要求を作ります。
sudo apt-offline set update.sig --update
update.sigをオンラインPCに移し、一覧を取得します。
apt-offline get update.sig --bundle update.zip
update.zipをオフラインPCへ戻し、APTの一覧に反映します。
sudo apt-offline install update.zip
2. build-essentialと依存パッケージを取得する
一覧を更新したオフラインPCで、必要なパッケージの要求を作ります。
sudo apt-offline set packages.sig --install-packages build-essential
packages.sigをオンラインPCへ移して取得します。
apt-offline get packages.sig --bundle packages.zip
packages.zipをオフラインPCへ戻します。apt-offline installは取得データをAPTへ反映する処理なので、その後にAPTでパッケージの導入を行います。--no-downloadは追加のネットワーク取得を行わない指定です。
sudo apt-offline install packages.zip
sudo apt-get --no-download install build-essential
この流れはUbuntuのapt-offlineマニュアルのset・get・installの役割に基づきます。
3. 導入を確認する
gcc --version
g++ --version
make --version
不足するパッケージが表示された場合は、媒体にあるファイルを無理に適用せず、取得要求を作り直します。署名検証を無効にするオプションも使いません。
なお、カーネルモジュールのビルドには、実行中のカーネルに対応するヘッダーパッケージや対象ドライバー固有の依存関係が追加で必要になることがあります。build-essentialの導入と、ドライバーのビルド・署名・動作確認は分けて進めてください。
