E: Unable to locate package : l’arbre des 7 causes

apt install résout le nom demandé dans les index déjà présents sur le disque et, quand il ne le trouve pas, rend E: Unable to locate package suivi du nom tel qu’il a été tapé. Aucun accès au dépôt n’a lieu pendant cette résolution : la page apt-get(8) d’APT 2.6.1, livrée avec Debian 12, rappelle que les index rangés dans /var/lib/apt/lists sont resynchronisés par apt-get update. Sept causes produisent ce message, et la rubrique Debian couvre le reste de la gestion du système.
Sommaire
- Un nom inconnu et un nom sans version installable ne donnent pas le même message
- Sept causes, dans l’ordre où les vérifier
- Cas 1 : les index n’ont jamais été récupérés
- Cas 2 : le composant du paquet n’est pas activé
- Cas 3 : la suite de la ligne ne correspond pas à la version installée
- Cas 4 : le nom tapé n’est pas celui du paquet
- Cas 5 : l’architecture demandée n’est pas déclarée
- Cas 6 : le fichier de dépôt est ignoré à cause de son nom
- Cas 7 : le paquet n’existe que dans une suite inactive
- Ce qui ne se répare pas avec une ligne de dépôt
- Deux emplacements et deux formats décident de ce qu’APT lit
Un nom inconnu et un nom sans version installable ne donnent pas le même message
Trois sorties différentes se cachent derrière une installation qui ne démarre pas. E: Unable to locate package nom signifie qu’aucun paquet ne porte ce nom dans les index lus. La deuxième signale que le nom existe, mais qu’aucune de ses versions n’est candidate à l’installation. La troisième décrit un nom fourni par un autre paquet, avec la liste de ces fournisseurs et l’invitation à en choisir un. Les trois chaînes se lisent dans l’archive source d’APT 2.6.1, et les deux blocs ci-dessous les reprennent mot pour mot.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package paquet
Package paquet is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'paquet' has no installation candidate
Ces en-têtes viennent des fichiers pkgcachegen.cc et depcache.cc de la même archive. Les voir avant le verdict écarte un échec plus précoce, du type dépôt injoignable ou signature refusée.
Sept causes, dans l’ordre où les vérifier
L’arbre se parcourt du plus fréquent au plus rare. Les six premiers cas se règlent en corrigeant une ligne de dépôt ou en complétant une commande ; le septième demande d’ajouter une suite entière. Chaque ligne du tableau donne la commande qui confirme la cause avant toute modification, et les sections qui suivent donnent la correction avec le retour attendu.
| Cas | Ce que vous observez | Cause | Commande de vérification |
|---|---|---|---|
| 1 | Le message tombe sur un nom de main | Index absents ou jamais récupérés | ls /var/lib/apt/lists/ |
| 2 | Le nom est absent des lignes du fichier de dépôt | Composant non activé | apt-cache policy paquet |
| 3 | Le nom existe dans une autre version de la distribution | Suite de la ligne différente du système | apt-cache policy |
| 4 | Le nom de la sortie ne correspond à aucun paquet du dépôt | Faute de frappe ou renommage | apt-cache search --names-only motif |
| 5 | La commande portait un suffixe après deux-points | Architecture absente du système | dpkg --print-foreign-architectures |
| 6 | apt update ne dit rien au sujet du fichier ajouté | Nom de fichier ignoré par APT | ls /etc/apt/sources.list.d/ |
| 7 | Le paquet n’existe que dans une suite suffixée | Suite inactive par défaut | apt-cache policy paquet |
Cas 1 : les index n’ont jamais été récupérés
Des index peuvent manquer après une installation sans miroir réseau, ou après un nettoyage du répertoire qui les stocke. Le message tombe alors même sur des noms de main que chaque dépôt publie, ce qui écarte une histoire de composant ou de suite. La page apt-get(8) décrit la zone concernée comme le stockage des informations de chaque source, et un répertoire vide confirme le diagnostic.
ls /var/lib/apt/lists/
sudo apt update
La remise à jour reprend les dépôts déjà déclarés, ce que décrit aussi la page installer et mettre à jour Debian.
Ce que vous devez voir : des lignes Get: puis Reading package lists... Done, sans ligne E:, et l’installation qui repart.
Cas 2 : le composant du paquet n’est pas activé
Debian répartit ses paquets entre main, contrib, non-free et non-free-firmware, les quatre valeurs admises par la page sources.list(5) d’APT 3.0.3 livrée avec Debian 13. Le composant non-free-firmware n’arrive qu’avec Debian 12 bookworm, publiée le 10 juin 2023 ; le bulletin Debian Project Bits du 5 août 2023 demande de compléter les lignes des machines qui en ont besoin, et précise que non-free peut alors quitter la ligne s’il n’y servait qu’au micrologiciel. Une ligne antérieure rend donc les paquets de micrologiciel introuvables.
deb http://deb.debian.org/debian trixie main contrib non-free non-free-firmware
sudo apt update
Le composant s’ajoute à chacune des lignes du même dépôt, comme pour les autres dépôts APT de Debian.
Ce que vous devez voir : l’index du composant récupéré, puis la version annoncée par apt-cache policy paquet.
Cas 3 : la suite de la ligne ne correspond pas à la version installée
Une suite s’écrit de deux façons dans une ligne de dépôt, un nom de version comme stable ou un nom de code comme trixie, et les deux formes n’ont pas la même durée de vie. Le manuel distingue ces écritures : la première suit une cible qui change de contenu à chaque publication, ce qui laisse des paquets d’une autre version dans les index. Deux commandes suffisent à comparer ce qu’APT lit et ce que le système exécute, la première s’ouvrant sur Package files: et nommant chaque source avec sa suite.
apt-cache policy
cat /etc/os-release
Ce que vous devez voir : la suite lue par APT identique au nom de code de la version installée, donné par la ligne VERSION="12 (bookworm)" du second fichier.
Cas 4 : le nom tapé n’est pas celui du paquet
Le message recopie l’argument reçu, majuscules et tirets compris. Dans l’archive source d’APT 2.6.1, la chaîne est Unable to locate package %s, le paramètre étant la chaîne saisie : la sortie sert de miroir et une faute de frappe s’y relit directement. La recherche par nom est documentée dans la page apt-cache(8), avec l’option --names-only qui restreint le balayage aux noms sans lire les descriptions.
apt-cache search --names-only motif
Ce que vous devez voir : une ligne de la forme nom - description courte, dont le premier mot se recopie tel quel dans la commande d’installation.
Cas 5 : l’architecture demandée n’est pas déclarée
Un suffixe après deux-points change la clé de recherche, et le nom n’est résolu que si cette architecture est connue du système. La page dpkg(1) de dpkg 1.21.22, livré avec Debian 12, documente --print-foreign-architectures pour lister les architectures supplémentaires et --add-architecture, disponible depuis dpkg 1.16.2, pour en déclarer une. Dans le code d’APT 2.6.1, un nom suivi d’une architecture inconnue ne trouve aucun paquet et retombe sur le message, suffixe compris.
dpkg --print-foreign-architectures
sudo dpkg --add-architecture i386
sudo apt update
Ce que vous devez voir : i386 dans la sortie de la première commande une fois l’ajout fait, et l’installation de paquet:i386 qui ne rend plus l’erreur.
Cas 6 : le fichier de dépôt est ignoré à cause de son nom
Deux règles de nom s’appliquent dans /etc/apt/sources.list.d, une extension .list ou .sources selon le format, et des caractères limités aux lettres, aux chiffres, au souligné, au tiret et au point. Un fichier hors règles est écarté avec l’un des deux avis du code source d’APT 2.6.1, faute d’extension ou extension invalide. Les noms de sauvegarde échappent même à cet avis : APT 2.6.1 ignore en silence les fichiers terminés par ~, .bak, .save, .orig ou .disabled, par défaut.
ls /etc/apt/sources.list.d/
mv mon-depot.list.bak mon-depot.list
Ce que vous devez voir : aucune ligne N: Ignoring file dans la sortie de apt update, et la source de retour dans apt-cache policy.
Cas 7 : le paquet n’existe que dans une suite inactive
Les backports Debian se déclarent dans leur propre fichier et restent inactifs tant que la suite n’est pas nommée à l’installation. La page officielle fixe la règle : leurs paquets sont figés à la priorité 100 par le champ ButAutomaticUpgrades des fichiers Release, et deux formes d’installation sont documentées. Le même document donne la durée de vie des suites : bookworm-backports a été mis à jour jusqu’au 9 août 2026, bullseye-backports s’est arrêté le 10 juin 2024, un an après la publication de la version suivante.
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie-backports
Components: main
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Ce contenu se dépose dans /etc/apt/sources.list.d/debian-backports.sources, sous le nom que donne la page des backports.
sudo apt update
sudo apt install paquet/trixie-backports
Ce que vous devez voir : la version de la suite suffixée annoncée par apt-cache policy paquet.
Ce qui ne se répare pas avec une ligne de dépôt
Un nom absent de toutes les suites publiées ne revient pas : quand une branche atteint sa fin de vie, ses suites cessent d’être mises à jour, et corriger une ligne rend seulement visible ce que l’archive contient encore. Le format de ligne unique porte lui aussi une date, la page sources.list(5) d’APT 3.0.3 le décrit comme déprécié avec un retrait qui n’interviendra pas avant 2029. Une ligne écrite aujourd’hui a donc intérêt à suivre le format deb822, et un nom publié pour Ubuntu reste introuvable dans l’archive Debian.
Deux emplacements et deux formats décident de ce qu’APT lit
Une ligne doit-elle aller dans /etc/apt/sources.list ou dans sources.list.d ?
Les deux emplacements sont lus de la même façon, le manuel traitant le fichier principal et le répertoire ensemble. Pour un système neuf, le nom conseillé est /etc/apt/sources.list.d/fournisseur.sources, où fournisseur vient de dpkg-vendor --query Vendor, et Ubuntu utilise ainsi /etc/apt/sources.list.d/ubuntu.sources. Le format à une ligne reste lu, mais son retrait est prévu après 2029.
Comment savoir si un dépôt ajouté est vraiment lu par APT ?
La page apt-get(8) documente apt-get indextargets, qui affiche en deb822 la liste des fichiers d’index qu’un apt-get update téléchargerait, avec leur URI. Une source absente de cette sortie n’est pas lue, quel que soit le contenu du fichier ajouté. La commande sert d’interface aux outils externes et accepte en entrée des lignes de sa propre sortie pour filtrer l’affichage.
Que deviennent les index d’un dépôt retiré ?
--list-cleanup est actif par défaut, et la page apt-get(8) indique qu’APT gère alors le contenu de /var/lib/apt/lists en effaçant les fichiers devenus obsolètes. Après suppression d’une ligne et un apt update, les paquets qui n’existaient que dans ce dépôt redeviennent introuvables, et leur réinstallation demande la ligne de nouveau.
Faut-il installer un backport avec paquet/suite ou avec -t ?
Les deux formes figurent dans les instructions officielles. paquet/trixie-backports ne vise que ce paquet ; -t trixie-backports crée un pin par défaut à la priorité 990, comme l’écrit la page apt-get(8), et laisse les dépendances manquantes venir de la même suite. La première forme limite le mélange des versions, la seconde règle les dépendances d’un coup.
Un apt update après ajout de dépôt retélécharge-t-il tout ?
Non, la resynchronisation ne concerne que les index. La page sources.list(5) rappelle que les PDiffs sont activées par défaut : quand le dépôt les annonce, APT ne récupère que la différence avec l’index déjà présent. Les fichiers de paquets ne partent qu’à l’installation.
Sources : manuel sources.list(5) d’APT 3.0.3, Debian 13, instructions des backports Debian, priorités et durées de vie, bulletin Debian Project Bits du 5 août 2023, composant non-free-firmware, archive source d’APT 2.6.1, chaînes et fichiers ignorés en silence.