手元の 20.04 に GCC (g++) をインストールしようとしたら、見慣れないエラーが出てきました。

$ sudo apt install gcc g++ make
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:
 g++ : Depends: g++-9 (>= 9.3.0-3~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

はて?

依存関係を掘っていくと、 g++ -> g++-9 -> libstdc++-9-dev -> libc6-dev -> libc6 と辿れたのですが、 最後の libc6-dev -> libc6 のところでこんなこと言われます。

$ sudo apt install libc6-dev
(略)
The following packages have unmet dependencies:
 libc6-dev : Depends: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.3 is to be installed
E: Unable to correct problems, you have held broken packages.

パッケージリポジトリにあるバージョンより新しいものがインストールされている…?

$ apt list --installed | grep libc
(略)
libc-bin/now 2.31-0ubuntu9.3 amd64 [installed,local]
libc6/now 2.31-0ubuntu9.3 amd64 [installed,local]

local…? deb パッケージを直接インストールした覚えは無いぞ?

「2.31-0ubuntu9.3」でちょちょっとググってみると、 18.04 から 20.04 にアップグレードした Ubuntu でこの現象が起こることがあるようです。ともかく以下のようにして修正します。

$ apt list --installed | grep local
(略)
libc-bin/now 2.31-0ubuntu9.3 amd64 [installed,local]
libc6/now 2.31-0ubuntu9.3 amd64 [installed,local]
locales/now 2.31-0ubuntu9.3 all [installed,local]
$ sudo apt install libc6=2.31-0ubuntu9.2 libc-bin=2.31-0ubuntu9.2 locales=2.31-0ubuntu9.2
(略)
The following packages will be DOWNGRADED:
  libc6 libc-bin locales
(略)

これで g++ をインストールできるようになりました。

Trackback

no comment untill now

Add your comment now