Comprenons cette erreur à l'aide d'un exemple :
Supposons que ce soit le message d'erreur :
The following packages have unmet dependencies:
nginx-module-brotli : Depends: nginx (= 1.17.3-2-ppa7~bionic)
E: Unable to correct problems, you have held broken packages.
Décomposons-la en variables :
X=nginx-module-brotli
Y=nginx
Z=1.17.3-2-ppa7~bionic
Ici X
est le paquet que vous essayez d'installer. Y
est le paquet, ce qui cause des problèmes de dépendance (il peut y avoir de multiples Y
) et Z
est la version qui est requise.
Donc, en résumé :
X
a besoin du paquet Y
avec la version Z
pour travailler.
Cependant, apt
rencontre des difficultés pour trouver la version Z
für Y
.
Donc, vérifions si la version Z
est disponible pour le paquet Y
. Nous pouvons utiliser apt-cache policy <package_name>
pour trouver les versions disponibles pour le paquet. Par exemple :
$ apt-cache policy nginx
libasound2:
Installed: nginx_1.20.2-1~bionic
Candidate: 1.2.2-2.1ubuntu2
Version table:
*** nginx_1.20.2-1~bionic 100
100 /var/lib/dpkg/status
1.17.3-2-ppa7~bionic 500
500 http://br.archive.ubuntu.com/ubuntu focal/main amd64 Packages
Ici, vous pouvez voir deux versions pour le paquet nginx
est disponible. La version requise par X
es Z
. Selon le tableau des versions, la version Z
pour le paquet Y
est disponible. Mais apt
installe toujours la dernière version (je sais que c'est un peu stupide .) Il y a donc deux façons de résoudre ce problème :
- Installez la version correcte du paquet.
- Augmenter l'aptitude des
apt
.
Pour installer la version correcte du paquet, utilisez :
sudo apt update
sudo apt install <Y>=<Z>
Où se trouve le paquet qui cause des problèmes de dépendance et où se trouve la version requise par X. Maintenant, l'installation devrait réussir.
Pour augmenter l'aptitude de votre gestionnaire de paquets :
sudo apt update
sudo apt install aptitude
sudo aptitude -f install <Z>
Où se trouve le paquet que vous essayez d'installer. Quelques conseils utiles avec aptitude :
-
-f
permet de faire un dépannage anticipé. C'est plutôt utile !
-
en sélectionnant n
pour une solution fera que l'aptitude proposera plus de solutions !
-
Running man aptitude
montrera un manuel détaillé pour utiliser aptitude. Manuel en ligne .
La version du paquet n'est pas disponible ?
D'abord, essayez d'exécuter sudo apt update
pour mettre à jour la liste des référentiels. Essayez ensuite d'installer à nouveau le paquet.
Toujours pas disponible ?
Vous avez deux options :
-
Recherchez le paquet dans https://packages.ubuntu.com/ et restaurer les référentiels par défaut.
-
Ajouter des PPAs personnalisés pour satisfaire les dépendances.
Recherche de paquets et restauration des dépôts par défaut:-.
-
Ir a https://packages.ubuntu.com
-
Faites défiler la page jusqu'à la section "Recherche".
-
Dans la colonne Mot-clé, saisissez le nom du paquet.
-
Dans la colonne Distribution, sélectionnez le nom de code de votre version Ubuntu ( lsb_release -c
).
-
Cliquez sur la recherche !
-
Sélectionnez la touche exacte.
-
Vérifiez la version et le référentiel du paquet.
Vérifiez si la version requise et la version disponible correspondent. Si oui, reportez-vous à Comment restaurer les référentiels par défaut ?
Ajout d'un PPA personnalisé.
Vous devez prendre l'aide de Google pour cela. Il suffit de chercher le paquet et la version sur Google et avec un peu de chance, vous trouverez un PPA.
Quelques commandes utiles :
-
sudo apt -f install <package>
pour forcer l'installation du paquet.
-
sudo aptitude -f install <package>
Pour forcer l'installation du paquet.
-
sudo add-apt-repository whatever/ppa
pour ajouter un PPA.
-
sudo apt purge <package>
pour retirer un paquet.
Des informations telles que :
- Votre version d'Ubuntu (sortie de
lsb_release -d
.
- Sortie de
sudo apt install <package>
- Sortie de
apt policy <package>
y apt policy <package's dependency>
D'autres détails doivent être fournis lorsqu'ils sont demandés.