オフラインリポジトリで導入する
目標
持ち込んだ.debのまとまりで、リポジトリを立てて、ドライバーをインストールし、1次持ち込みだけでは、ツールキットがインストールされないことを確認したあと、2次持ち込み分を追加して完成させます。実際のエアギャップ環境の手続きそのままです。
なぜ重要なのか
持ち込んだファイルを、dpkg -iで1つずつインストールすると、順序を人が合わせる必要があり、次にまた、その順序を覚えている必要があります。リポジトリにすれば、aptがグラフを解いてくれて、そのリポジトリは、繰り返し再利用されます。そして、インストールのシミュレーション(-s)が、持ち込みの成否への、最終的な答えです。ここでunmet dependenciesが出れば、その一覧が、そのまま2次持ち込みの一覧です。
前のラボ(gpu-deps)で作成した/root/gpu/poolを、続けて使います。
ステップ
/root/gpu/poolに、Releaseファイルを追加してください。Origin、Label、Suite、Codename、Architectures、Componentsの6つのキーが、それぞれ1行ずつある必要があり、Architecturesにamd64が含まれている必要があります。/etc/apt/sources.list.d/gpu-airgap.listで、このリポジトリを登録して、インデックスを更新してください。そして、apt-cache policy nvidia-driver-550の出力を、/root/gpu/policy.txtに保存してください。nvidia-driver-550のインストールをシミュレーションして、出力を/root/gpu/sim-driver.txtに保存してください。Instで始まる行が、11個ある必要があります。nvidia-container-toolkitのインストールをシミュレーションして、失敗することを確認し、出力(標準エラー出力を含む)を/root/gpu/sim-toolkit-fail.txtに保存してください。ファイルに、libnvidia-container1が言及されている必要があります。/opt/fixtures/gpu-airgap/src2/のパッケージをビルドして、/root/gpu/pool/に追加し、インデックスをもう一度作成して、インデックスを更新してください。Package:項目が15個になる必要があります。nvidia-driver-550とnvidia-container-toolkitを、実際にインストールしてください。dpkg -lで、nvidiaまたはlibnvidiaで始まるパッケージの状態を確認して、/root/gpu/installed.txtに保存してください。すべての行が、iiの状態である必要があります。/root/gpu/install-report.txtを、次の4行で作成してください。DRIVER_VERSION=<nvidia-driver-550 의 설치된 버전>/TOOLKIT_VERSION=<nvidia-container-toolkit 의 설치된 버전>/INSTALLED=<이름이 nvidia 또는 libnvidia 로 시작하는 설치된 패키지 수>/SECOND_INTAKE=libnvidia-container1(プレースホルダーは、順に、nvidia-driver-550のインストールされたバージョン、nvidia-container-toolkitのインストールされたバージョン、名前がnvidiaまたはlibnvidiaで始まる、インストールされたパッケージの数です)
参考
- シミュレーションは、
apt-get install -s <패키지>です(プレースホルダーはパッケージです)。失敗の出力は、標準エラー出力に出るので、2>&1で一緒に受けてください。 - インストールされたバージョンは、
dpkg-query -W -f='${Version}' <패키지>で取り出します(プレースホルダーはパッケージです)。epochが含まれることがあります。 - インデックスを再生成したあとは、必ず
apt-get updateをもう一度行う必要があります。 Releaseには、Packagesのサイズとハッシュが書かれています。そのため、ステップ5でPackagesをもう一度作成したなら、Releaseももう一度作成する必要があります。そうしないと、ハッシュがずれて、aptが新しいインデックスを黙って無視し、Candidate: (none)になります。エラーが出ないので、原因を見つけにくいです。- よくある間違い1: ステップ5で、インデックスだけをもう一度作成して、
apt-get updateを忘れ、失敗し続けること。 - よくある間違い2: ステップ8で、バージョンを書くとき、epoch(
1:)を勝手に取り除いてしまうこと。照会結果のとおりに書いてください。
持ち込み分でリポジトリを構成する
/root/gpu/poolに、Releaseファイルを追加してください。Origin、Label、Suite、Codename、Architectures、Componentsの6つのキーが、それぞれ1行ずつある必要があり、Architecturesにamd64が含まれている必要があります。
前のラボで作成したpoolを、そのまま使います。Releaseファイルも、一緒に作成してください。
リポジトリの登録と更新
/etc/apt/sources.list.d/gpu-airgap.listで、このリポジトリを登録して、インデックスを更新してください。そして、apt-cache policy nvidia-driver-550の出力を、/root/gpu/policy.txtに保存してください。
flatリポジトリの形式です。登録後、インデックスを更新して初めて、パッケージが見えます。
ドライバーのインストールのシミュレーション
nvidia-driver-550のインストールをシミュレーションして、出力を/root/gpu/sim-driver.txtに保存してください。Instで始まる行が、11個ある必要があります。
-sオプションは、何も変えず、計画だけを出力します。Instで始まる行を、数えてみてください。
ツールキットのインストールがふさがれることを確認する
nvidia-container-toolkitのインストールをシミュレーションして、失敗することを確認し、出力(標準エラー出力を含む)を/root/gpu/sim-toolkit-fail.txtに保存してください。ファイルに、libnvidia-container1が言及されている必要があります。
同じシミュレーションを、ツールキットで実行すると、失敗します。エラーの出力を、そのまま保存してください。
2次持ち込み分を追加する
/opt/fixtures/gpu-airgap/src2/のパッケージをビルドして、/root/gpu/pool/に追加し、インデックスをもう一度作成して、インデックスを更新してください。Package:項目が15個になる必要があります。
src2ディレクトリに、不足分があります。ビルドして、poolに入れて、インデックスをもう一度作成してください。
実際にインストールする
nvidia-driver-550とnvidia-container-toolkitを、実際にインストールしてください。
ドライバーとツールキットを、一度にインストールできます。インストール後に、状態を確認してください。
インストール状態を検証する
dpkg -lで、nvidiaまたはlibnvidiaで始まるパッケージの状態を確認して、/root/gpu/installed.txtに保存してください。すべての行が、iiの状態である必要があります。
dpkg -lの状態表示が、すべてiiである必要があります。そうでないものがあれば、インストールが終わっていません。
インストールレポート
/root/gpu/install-report.txtを、次の4行で作成してください。
DRIVER_VERSION=<nvidia-driver-550 의 설치된 버전> / TOOLKIT_VERSION=<nvidia-container-toolkit 의 설치된 버전> / INSTALLED=<이름이 nvidia 또는 libnvidia 로 시작하는 설치된 패키지 수> / SECOND_INTAKE=libnvidia-container1(プレースホルダーは、順に、nvidia-driver-550のインストールされたバージョン、nvidia-container-toolkitのインストールされたバージョン、名前がnvidiaまたはlibnvidiaで始まる、インストールされたパッケージの数です)
インストールされたパッケージの数とバージョンを集めてください。値は、実際の照会結果である必要があります。