web-dev-qa-db-ja.com

gccとcppはUbuntu 19.10のアンインストール可能なパッケージに依存しています

Eoanにアップグレードした後、保留されていてアップグレードできないパッケージがあります。すべてはcppgccに分類されるようです:

$ Sudo apt install gcc

The following packages have unmet dependencies:
 gcc : Depends: cpp (= 4:9.2.1-3.1ubuntu1) but 4:8.3.0-1ubuntu3 is to be installed
       Depends: gcc-9 (>= 9.2.1-1~) but it is not going to be installed


$ Sudo apt install gcc-9

The following packages have unmet dependencies:
 gcc-9 : Depends: cpp-9 (= 9.2.1-9ubuntu2) but it is not going to be installed
         Depends: gcc-9-base (= 9.2.1-9ubuntu2) but 9.2.1-17ubuntu1~18.04.1 is to be installed


$ Sudo apt install gcc-9-base

gcc-9-base is already the newest version (9.2.1-17ubuntu1~18.04.1).

理解するのに十分なほど理解できませんが、これがapt-cacheの出力です。

$apt-cache policy cpp

cpp:
  Installed: 4:8.3.0-1ubuntu3
  Candidate: 4:9.2.1-3.1ubuntu1
  Version table:
     4:9.2.1-3.1ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu eoan/main AMD64 Packages
 *** 4:8.3.0-1ubuntu3 100
        100 /var/lib/dpkg/status


$apt-cache policy cpp-9

cpp-9:
  Installed: (none)
  Candidate: 9.2.1-9ubuntu2
  Version table:
     9.2.1-9ubuntu2 500
        500 http://archive.ubuntu.com/ubuntu eoan/main AMD64 Packages

誰かが私がここで何が起こっているのかを理解するのを手伝ってくれる?デフォルト以外のすべてのリポジトリを無効にしましたが、成功しませんでした。 19.10に付属しているように見えるバージョンのgcc-9(9.2.1-9ubuntu2)を手動でインストールすることも試みましたが、他のすべてのものが9.2.1-17ubuntu1~18.04.1を望んでいるため、けがをするのは侮辱だけです。

1
leo

ここでの根本的な問題は、一部のパッケージがリポジトリで利用可能なバージョンよりも新しいバージョンでインストールされ、それらの多くに重大な依存関係があるため、パージして再インストールするだけではできないということでした。

解決策:これらをアップグレードするにはallこのような1つのモンスター式でSudo apt install lib32gcc1=1:9.2.1-9ubuntu2 lib32stdc++6=9.2.1-9ubuntu2 libasan5=9.2.1-9ubuntu2 libatomic1=9.2.1-9ubuntu2 libcc1-0=9.2.1-9ubuntu2 libgcc1=1:9.2.1-9ubuntu2 libgomp1=9.2.1-9ubuntu2 libitm1=9.2.1-9ubuntu2 liblsan0=9.2.1-9ubuntu2 libstdc++6=9.2.1-9ubuntu2 libtsan0=9.2.1-9ubuntu2 libubsan1=9.2.1-9ubuntu2 libquadmath0=9.2.1-9ubuntu2 ....など。

その前に、dpkg -r ...を使用して、この依存関係チェーンに含まれていたパッケージを削除する必要がありましたが、リポジトリからはまったく利用できませんでした。 (これには、依存関係のチェーンを段階的にたどる必要がありました。)apt-cache policyを使用して、可用性を確認しました。

0
leo