Depuis la mise à niveau d'Ubuntu 16.04 à 17.04, je ne peux plus installer gcc-7
ou g++-7
à partir du référentiel http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubunt . En fait, je ne peux même pas installer build-essential
.
Sous Logiciels et mises à jour > Autres logiciels , le référentiel est répertorié comme ceci :
http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu zesty main
Essayer d'installer build-essential
:
$ Sudo apt install build-essential
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:
build-essential : Depends: gcc (>= 4:5.2) but it is not going to be installed
Depends: g++ (>= 4:5.2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Toutefois:
$ gcc --version
gcc (Ubuntu 5.4.1-8ubuntu1) 5.4.1 20170304
...
$ g++ --version
g++ (Ubuntu 5.4.1-8ubuntu1) 5.4.1 20170304
...
Alors, comment puis-je réinstaller build-essential
?
J'ai donc pu réinstaller build-essential
en procédant comme suit:
$ Sudo apt install build-essential
...
The following packages have unmet dependencies:
build-essential : Depends: gcc (>= 4:5.2) but it is not going to be installed
Depends: g++ (>= 4:5.2) but it is not going to be installed
Une version gcc
5.2 (plus grande) est requise. Essayons donc d'installer gcc
.
$ Sudo apt install gcc
...
The following packages have unmet dependencies:
gcc : Depends: cpp (>= 4:6.3.0-2ubuntu1) but it is not going to be installed
Depends: gcc-6 (>= 6.3.0-9~) but it is not going to be installed
D'accord. Il manque quelque chose. Essayons d’installer ça.
$ Sudo apt install cpp
...
The following packages have unmet dependencies:
cpp : Depends: cpp-6 (>= 6.3.0-9~) but it is not going to be installed
Toujours rien. Essayer encore.
$ Sudo apt install cpp-6
...
The following packages have unmet dependencies:
cpp-6 : Depends: gcc-6-base (= 6.3.0-12ubuntu2) but 6.3.0-18ubuntu2~16.04 is to be installed
Encore une fois.
$ Sudo apt install gcc-6-base
...
gcc-6-base is already the newest version (6.3.0-18ubuntu2~16.04).
Donc, ici, je ne sais pas ce qui ne va pas exactement. Il convient de noter qu’une chaîne 16.04
se trouve à la fin de ce numéro de version. Cela semblait étrange. J'ai enlevé ce paquet.
$ Sudo apt remove gcc-6-base
Maintenant, j'ai pu installer build-essential
à nouveau. Cela réinstallera également gcc-6-base
.
$ Sudo apt install build-essential
Problème restant:
$ Sudo apt upgrade
...
The following packages have been kept back:
cpp g++ gcc
La racine du problème est similaire à celle ci-dessus, gcc-7-base
est défectueux mais je ne peux pas simplement le supprimer, car j’obtiens ceci:
The following packages have unmet dependencies:
libgcc1 : Depends: gcc-7-base (= 7.1.0-5ubuntu2~16.04) but it is not going to be installed
va-driver-all : Depends: mesa-va-drivers but it is not going to be installed or
vdpau-va-driver but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
Zone de danger:
J'ai réussi à résoudre ce problème en procédant comme suit:
$ Sudo apt install aptitude
$ Sudo dpkg --force-all -P gcc-7-base
$ Sudo dpkg --force-all -P gcc-7-base:i386
$ Sudo aptitude install gcc-7-base
Ceci est super dangereux et pourrait casser votre installation. L'exécution de dpkg --force-all -P
supprimera un package de manière forcée, ignorant toutes les dépendances sur ce package. La suite par un apt upgrade
normal pourrait supprimer presque tous les logiciels pertinents de votre installation.
Je n'ai pu que récupérer à partir de là en usindind aptitude
qui résolvait tous les problèmes de dépendance que j'avais.