web-dev-qa-db-ja.com

パッケージのインストールに失敗するとapt-getが壊れる

Ubuntu 18.04を初めてインストールしました。一部のGPUコードで遊ぶことに興奮して、 Nvidia CUDAページ で説明されているように、deb (local) for 17.10オプションを介してCUDAをインストールしました。私は17.10 != 18.04を知っていますが、これで成功している人々のことを読みました。

Nvidiaが提供するインストール手順に従いました。

Sudo dpkg -i cuda-repo-ubuntu1710-9-2-local_9.2.88-1_AMD64.deb
Sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
Sudo apt-get update
Sudo apt-get install cuda

最後のコマンドは、nvidia-396のインストール時にエラーになりました。

Get:1 file:/var/cuda-repo-9-2-local  nvidia-396 396.26-0ubuntu1 [80.0 MB]
(Reading database ... 167630 files and directories currently installed.)
Preparing to unpack .../nvidia-396_396.26-0ubuntu1_AMD64.deb ...
Unpacking nvidia-396 (396.26-0ubuntu1) ...
dpkg: error processing archive /var/cuda-repo-9-2-local/./nvidia-396_396.26-0ubuntu1_AMD64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0', which is also in package libglx-mesa0:AMD64 18.0.0~rc5-1ubuntu1
Errors were encountered while processing:
 /var/cuda-repo-9-2-local/./nvidia-396_396.26-0ubuntu1_AMD64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

たぶん噛むことができなかったので、私はあまり挑戦的なことをしないことにしました。 gitなどの基本的なパッケージをインストールしましたが、インストールすると次のエラーが発生しました。

> Sudo apt-get install git
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 cuda-drivers : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
 git : Depends: liberror-Perl but it is not going to be installed
       Depends: git-man (> 1:2.17.1) but it is not going to be installed
       Depends: git-man (< 1:2.17.1-.) but it is not going to be installed
 libcuda1-396 : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
 nvidia-396-dev : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
 nvidia-opencl-icd-396 : Depends: nvidia-396 (>= 396.26) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

推奨されるSudo apt --fix-broken installコマンドを実行すると、上記と同じnvidia-396エラーが発生します。

cudaをインストールしようとすると、apt-getの状態になり、依存関係が満たされていないというエラーのため、パッケージのインストールや削除ができなくなります。簡単に言えば、cudaをインストールするとapt-getが完全に壊れます。

パッケージマネージャーを再び機能させるにはどうすればよいですか?

単一のapt-get removeコマンドでインストールされたすべてのものを削除することでこれを解決しました。

Sudo apt-get remove --purge nvidia* cuda-drivers libcuda1-396 cuda-runtime-9-2 cuda-9.2 cuda-demo-suite-9-2  cuda

この問題を修正するのは次の場合のみです。

Sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken
14
iamtodor

StrugglingProgrammerのコマンドと同様に、all cudaパッケージ(cuda-demo *、例えば)

それらがどれであるかを確認できます:

dpkg -l | grep -i cuda
dpkg -l | grep -i nvidia

だから多分どちらかを試してください

Sudo apt-get remove --purge cuda-* libcuda* nvidia* 

(バッチ全体)またはより具体的に次のように選択します:

Sudo apt-get remove --purge cuda-drivers libcuda* cuda-runtime* cuda-8-0 cuda-demo*

具体的には(cuda-8-0およびlibcudnn6のインストールに失敗した後)、次のようになりました。

Sudo apt-get remove --purge nvidia* cuda-drivers libcuda* cuda-runtime* cuda-8-0 cuda-demo*

それが助けになることを願っています。

1
Tobias Bauer