debootstrapをオフラインで実行するには?

debootstrapをオフラインで実行するには?

同じターゲットに対してdebootstrapを複数回実行したいと思います。

インターネット接続なしで移動することが多く、オフラインで実行したいと思います。

インターネットアクセスでプロセスを実行し、インターネットアクセスなしでプロセスを複数回実行するにはどうすればよいですか?

私はマルチストラップなどのラッパー/代替を使用し、apt-cacher-ngやsquidなどのキャッシュオプションを使用するために開いています。

重要な要件は、完全にオフラインで実行できることです。

ベストアンサー1

同じ構成でLinuxを複数回インストールするには、インストール時にシステムを--foreign最初に起動するオプションを使用してください。たとえば、次のコマンドはUbuntu zestyを "deboot"ディレクトリとして起動します。

sudo debootstrap --foreign zesty deboot

その後、起動ディレクトリを参照として保持してsecond-stage再利用し、そのオプションを使用するたびに新しい作業ディレクトリにコピーできます。

mkdir work
cd work
sudo cp -r ../deboot .
sudo DEBOOTSTRAP_DIR=deboot/debootstrap/ debootstrap --second-stage --second-stage-target $(readlink -f deboot)

ここで注目すべき2つのことは、スクリプトが使用するDEBOOTSTRAP_DIR環境変数(よく文書化されていない)とオプションにフルパスが必要であることdebootstrapです。second-stage-target

--make-tarball=[file]別のオプションは、パッケージをダウンロードできるパラメータを使用することです。その後、--unpack-tarball=[file]そのパッケージをターゲットディレクトリに配置するために使用できます。

他のソースまたは共有フォルダのキャッシュを再利用するには、apt-proxy または cp -a packages /var/cache/apt/archives/ を使用します。しかし、debootstrapまだ接続しようとしているので、完全にオフラインではありません。InReleaseリモートリポジトリからファイルをインポートしてインターネットを使用してください。

メモ:このソリューションはdebootstrap v1.0.105(2018-07-01)以前のバージョンでのみ機能します。。内部環境変数をオーバーライドするため、debootstrapが "/usr/share/debootstrap/functions"ライブラリ(2007年にコミットを最初にインポートした後にdebootstrapの一部であった関数定義セット)を取得するのを防ぎます。v1.0.106(2018-07-05)以降、「Detect_container」関数が呼び出されます。このライブラリで定義されています。これにより、debootstrapが "/usr/sbin/debootstrap: 54: /usr/sbin/debootstrap: detector_container: not find"で失敗します。

おすすめ記事