nvidia関連のドライバーが依存の問題でアップデートできない時の解決法

2023年11月9日に普通にアップデートしたら以下の問題が発生しました。
環境はUbuntu 22.04です。

$ sudo apt update
---(中略)---
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 nvidia-dkms-535 : 依存: nvidia-kernel-common-535 (= 535.129.03-0ubuntu1) しかし、535.129.03-0ubuntu0.22.04.1 はインストールされています
 nvidia-driver-535 : 依存: nvidia-compute-utils-535 (= 535.129.03-0ubuntu1) しかし、535.129.03-0ubuntu0.22.04.1 はインストールされています
                     推奨: libnvidia-gl-535:i386 (= 535.129.03-0ubuntu1)
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

nvidia-dkms-535 が nvidia-kernel-common-535 に依存しているとあります。
よくみると、
nvidia-kernel-common-535は
535.129.03-0ubuntu1 が必要なようですが、 535.129.03-0ubuntu0.22.04.1がインストールされていると言われています。

バージョンの小さな違いがエラーを引き起こしているようです。

まずは、メッセージに従ってsudo apt –fix-broken install を実行しました。

$ sudo apt --fix-broken install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了<br />
状態情報を読み取っています... 完了<br />
依存関係を解決しています ... 完了
以下の追加パッケージがインストールされます:
  nvidia-compute-utils-535 nvidia-kernel-common-535
以下のパッケージはアップグレードされます:
  nvidia-compute-utils-535 nvidia-kernel-common-535
アップグレード: 2 個、新規インストール: 0 個、削除: 0 個、保留: 4 個。
3 個のパッケージが完全にインストールまたは削除されていません。
38.6 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 61.8 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
(データベースを読み込んでいます ... 現在 382086 個のファイルとディレクトリがイン
ストールされています。)
.../nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb を展開する準備をして
います ...
nvidia-kernel-common-535 (535.129.03-0ubuntu1) で (535.129.03-0ubuntu0.22.04.1 
に) 上書き展開しています ...
dpkg: アーカイブ /var/cache/apt/archives/nvidia-kernel-common-535_535.129.03-0ub
untu1_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/lib/firmware/nvidia/535.129.03/gsp_ga10x.bin' を上書きしようとしています。こ
れはパッケージ nvidia-firmware-535-535.129.03 535.129.03-0ubuntu0.22.04.1 にも存
在します
dpkg-deb: エラー: ペースト subprocess was killed by signal (Broken pipe)
.../nvidia-compute-utils-535_535.129.03-0ubuntu1_amd64.deb を展開する準備をして
います ...
nvidia-compute-utils-535 (535.129.03-0ubuntu1) で (535.129.03-0ubuntu0.22.04.1 
に) 上書き展開しています ...
dpkg: アーカイブ /var/cache/apt/archives/nvidia-compute-utils-535_535.129.03-0ub
untu1_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/bin/nvidia-powerd' を上書きしようとしています。これはパッケージ nvidia-ke
rnel-common-535 535.129.03-0ubuntu0.22.04.1 にも存在します
dpkg-deb: エラー: ペースト subprocess was killed by signal (Broken pipe)
処理中にエラーが発生しました:
 /var/cache/apt/archives/nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb
 /var/cache/apt/archives/nvidia-compute-utils-535_535.129.03-0ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

となってうまくいきません。

どうしたらいいか調べていたら、この記事を見つけました。

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb

をした後に sudo apt –fix-broken install をすればいいと書いてあります。

ただ、私の環境では、これを見つける前にsudo apt clean をしていたためか、該当するdebファイルがありませんでした。

このdebファイルは、nvidiaのウェブサイトから入手できます。
以下、特定のバージョンのファイルへのリンクは貼らないことにします。その時その時でバージョンが違う可能性があるからです。エラーメッセージからバージョンをよく確認したうえで、該当するものをダウンロードしてください。

問題を起こした私の環境はUbuntu 22.04だったので、

https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/

にいって、
nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb

をホームディレクトリの下のDownloadsにダウンロードしました。

Ubuntu 20.04 の方の場合は、nvidiaのリンクは以下になります。

https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/

ここから、
nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb もしくは、ご自身のエラーメッセージに該当するファイルをダウンロードしてください。

そのうえで以下を実行しました。

$ cd ~/Downloads
$ sudo dpkg -i --force-overwrite ./nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb
(データベースを読み込んでいます ... 現在 382086 個のファイルとディレクトリがインストールされています。)
.../nvidia-kernel-common-535_535.129.03-0ubuntu1_amd64.deb を展開する準備をしています ...
nvidia-kernel-common-535 (535.129.03-0ubuntu1) で (535.129.03-0ubuntu0.22.04.1 に) 上書き展開しています ...
dpkg: 警告: --force が有効なので、問題を無視します:
dpkg: 警告: '/lib/firmware/nvidia/535.129.03/gsp_ga10x.bin' を上書きしようとしています。これはパッケージ nvidia-firmware-535-535.129.03 535.129.03-0ubuntu0.22.04.1 にも存在します
dpkg: 警告: --force が有効なので、問題を無視します:
dpkg: 警告: '/lib/firmware/nvidia/535.129.03/gsp_tu10x.bin' を上書きしようとしています。これはパッケージ nvidia-firmware-535-535.129.03 535.129.03-0ubuntu0.22.04.1 にも存在します
nvidia-kernel-common-535 (535.129.03-0ubuntu1) を設定しています ...
update-initramfs: deferring update (trigger activated)
initramfs-tools (0.140ubuntu13.4) のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-6.2.0-36-generic

お、上書きされたようです。

そのうえで、再度、sudo apt –fix-broken install を実行します。

$ sudo apt --fix-broken install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了<br />
状態情報を読み取っています... 完了<br />
依存関係を解決しています ... 完了
以下の追加パッケージがインストールされます:
  nvidia-compute-utils-535
以下のパッケージはアップグレードされます:
  nvidia-compute-utils-535
アップグレード: 1 個、新規インストール: 0 個、削除: 0 個、保留: 4 個。
3 個のパッケージが完全にインストールまたは削除されていません。
286 kB のアーカイブを取得する必要があります。
この操作後に追加で 614 kB のディスク容量が消費されます。
続行しますか? [Y/n] 
(中略)
libnvidia-extra-535:amd64 (535.129.03-0ubuntu1) を設定しています ...
nvidia-driver-535 (535.129.03-0ubuntu1) を設定しています ...
man-db (2.10.2-1) のトリガを処理しています ...
dbus (1.12.20-2ubuntu4.1) のトリガを処理しています ...
libc-bin (2.35-0ubuntu3.4) のトリガを処理しています ...
initramfs-tools (0.140ubuntu13.4) のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-6.2.0-36-generic

これで問題が解決しました。

nvidia-kernelのバージョン違いが問題を引き起こしていたようです。dpkg -i –force-overwrite を使うことで解決できました。

結構これで困っている方は多いと思うので、共有しておきます。

nvidia関連のドライバーが依存の問題でアップデートできない時の解決法” へのコメント

  1. いつも大変お世話になっております。

    Lin4Neuro22.04でアップデートしたら全く同じ症状が起きました。eddy_cudaも動かなくなりあわてましたが、こちらのブログの通りに実行して解決することができました。
    大変助かりました。ありがとうございます。
    私の場合はダウンロードしたファイルはnvidia-kernel-common-535_535.161.07-0ubuntu1_amd64.debでした。

    • ありがとうございます。解決してよかったです!
      おっしゃるように、ダウンロードファイルはその人によって違うので、そこだけ気をつければけっこういい解決法ではないかと思っています。

  2. 小山先生

    ありがとうございます。まずはこれを試すというのはとても意味がありますね。

  3. Lin4Neuro搭載のAmuletマシンを使っています。
    当方も最近(2023年11月上旬)、GPUが動かなくなることを経験しました。
    エラーメッセージをみると、GPUの環境設定の問題であることがわかりました。

    以下で解決しました。

    sudo apt install cuda-keyring
    

    をおこないました。
    次に

    sudo apt --fix-broken install
    

    を行い、再起動しました。

    それだけで問題は解決していました。ログを残していませんでしたこと、申し訳ありません。
    当初、マシン個体の問題と考えていましたが、時期的に殆ど同じなので、気になりました。

    何らかのキーになればと考えました。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください