Debian系パッケージのオフラインインストーラを作る

Debian系パッケージのオフラインインストーラを作る

プロキシ環境下などで外部のネットワークに繋ぐことができない時などに、使いたいパッケージのオフラインインストーラが必要です。
apt-getコマンドでインストールできるパッケージのオフラインインストーラを作成します。

logrotateを例として進めます。

DockerでクリーンなDebian環境を用意する

インストーラ資材のダウンロード用に、Dockerfileを用意してDebian環境を作ります。

FROM debian:stable-slim

# If you need proxy, add proxy settings
#ENV http_proxy http://host:port/
#ENV https_proxy http://host:port/
#ENV HTTP_PROXY http://host:port/
#ENV HTTPS_PROXY http://host:port/

proxy周りの設定がいる場合はコメントを外して設定します。

次にDockerイメージをビルドしてコンテナを立ち上げます。

docker build -t debian-sandbox .
docker run -e TZ=Asia/Tokyo -u root --name debian-sandbox -d --restart always  -it debian-sandbox

proxy設定がいらない場合はDockerfileを作らず、ワンライナーで立ち上げてもOKです。

docker run -e TZ=Asia/Tokyo -u root --name debian-sandbox -d --restart always  -it debian:stable-slim

コンテナの中に入ってオフラインインストーラを作成する

コンテナの中に入ります。

docker exec -it bash

パッケージのインストールを行います。
この時、ダウンロードのみを行うオプションを使うのがポイントです。

apt-get update
apt-get --download-only install logrotate -y

ダウンロードしたパッケージは /var/cache/apt/archives ディレクトリに格納されます。
archivesディレクトリを丸ごと圧縮してオフラインインストーラとします。

cd /var/cache/apt/
cp -r ./archives ./logrotate
tar -zcvf logrotate_install.tar.gz logrotate
exit

ディレクトリ名を変えたのは後でインストールする時に何のインストーラか分かりやすくするためです。
logrotate_install.tar.gz という圧縮ファイルが生成されました。

作成したインストーラをローカルに持ってくる

dockerコマンドを使用します。

docker cp debian-sandbox:/var/cache/apt/logrotate_install.tar.gz ./

カレントディレクトリ上にtarファイルがコピーできたと思います。
これで、オフラインインストーラの作成が完了しました。

オフラインインストーラを使用する

tarファイルを展開して、ディレクトリ指定してインストールしていきます。

tar -xvf logrotate_install.tar.gz
apt -y install /logrotate/*.deb

tarの中には目的のパッケージだけでなく、関連する依存パッケージも入っているのでディレクトリの中のものを全てインストールします。

github

https://github.com/itouoti12/gen-offline-apt-package

参考

オフラインのUbuntuマシンにアプリケーションを導入する方法

Saving deb files from repositories to a custom location for installing offline

Linuxカテゴリの最新記事