Mint 19でNvidia 465の「破損したパッケージ」の問題を処理する方法は?

Mint 19でNvidia 465の「破損したパッケージ」の問題を処理する方法は?

そのため、Mint 19はアップデートマネージャのNvidiaの465ドライバに驚いてインストールしようとしましたが(何もダウンロードしたかどうかはわかりませんでした)、「変更を最初に適用できません」というメッセージだけが表示されました。

ポップアップエラー

心配するには、どのパッケージが破損しているかについてのメモはなく、何が破損しているかについてのSynapticの知識はありません。現在ドライバが動作しているかどうかわからないので、まだシステムを再起動していません。

aptを介してこれを試してみると、興味深いことに、多くのパッケージが「予約」されており、すべて455で終わります。

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libnvidia-cfg1-455 libnvidia-common-455 libnvidia-compute-455
  libnvidia-compute-455:i386 libnvidia-decode-455 libnvidia-decode-455:i386
  libnvidia-encode-455 libnvidia-encode-455:i386 libnvidia-extra-455
  libnvidia-fbc1-455 libnvidia-fbc1-455:i386 libnvidia-gl-455
  libnvidia-ifr1-455 libnvidia-ifr1-455:i386 nvidia-compute-utils-455
  nvidia-kernel-common-455 nvidia-kernel-source-455
  xserver-xorg-video-nvidia-455
0 upgraded, 0 newly installed, 0 to remove and 18 not upgraded.

私はパッケージ構成に問題があると仮定することができますが、それが何であるか、どのように解決するのかわかりません。誰かが私のためにこれについて明らかにできることを願っています。私はこのコンピュータに適切な方法でドライバをインストールしたことがなく、実際にパッケージが破損していることもほとんどありません。

上記のパッケージを手動でインストールしようとすると、この結果が出ました。

$ sudo apt install libnvidia-cfg1-455 libnvidia-common-455 libnvidia-compute-455 libnvidia-compute-455:i386 libnvidia-decode-455 libnvidia-decode-455:i386 libnvidia-encode-455 libnvidia-encode-455:i386 libnvidia-extra-455 libnvidia-fbc1-455 libnvidia-fbc1-455:i386 libnvidia-gl-455 libnvidia-ifr1-455 libnvidia-ifr1-455:i386 nvidia-compute-utils-455 nvidia-kernel-common-455 nvidia-kernel-source-455 xserver-xorg-video-nvidia-455
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nvidia-kernel-common-455 : Depends: nvidia-kernel-common-465 but it is not going to be installed
 nvidia-kernel-source-455 : Depends: nvidia-kernel-source-465 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

これは、455が当初存在してはならない465に依存することを意味するので、私にとって特に奇妙です。

答え1

#!/bin/bash

# script: list-nvidia.sh
# author: Craig Sanders <[email protected]>
# license: Public Domain (this script is too trivial to be anything else)

# options:
# default/none    list the packages, one per line
# -v              verbose (dpkg -l) list the packages
# -h              hold the packages with apt-mark
# -u              unhold the packages with apt-mark

# build an array of currently-installed nvidia packages.
PKGS=( $(dpkg -l '*nvidia*' '*cuda*' '*vdpau*' 2>/dev/null |
           awk '/^[hi][^n]/ && ! /mesa/ {print $2}') )

case "$1" in
  "-v") dpkg -l "${PKGS[@]}" ;;
  "-h") apt-mark hold "${PKGS[@]}" ;;
  "-u") apt-mark unhold "${PKGS[@]}" ;;
  *) printf "%s\n" "${PKGS[@]}" ;;
esac

dpkg -lこのスクリプトは、インストールされているnvidia関連パッケージを1行または詳細形式で一覧表示できます。

apt-markまた、Nvidiaパッケージの予約や予約のキャンセルにも使用できます。私はこれらのオプションをすぐ前後に使用して、次のapt-get dist-upgrade場合にのみNvidiaドライバがアップグレードされるようにします。必要です(たとえば、システムを再起動する準備ができている場合、またはXをシャットダウンして再起動する準備ができたときなど)。

printf単純なリストは、コマンドの置き換えに使用するなど、リストを使用して他の操作を実行したい場合に便利ですapt purge $(list-nvidia.sh)。例: 。 Debian パッケージ名にはスペースや改行などは含まれていないため、引用に編集証を持つ必要はありません。

関連情報