CyberSDF

Reprenez la main sur votre numérique

Installer un fichier .deb et ses dépendances

une machine de bureau ouverte posee sur un etabli, cables ranges, tournevis pose a plat

Un sudo dpkg -i mon-paquet_1.2-3_amd64.deb se termine par dpkg: error processing package mon-paquet (--install): dependency problems - leaving unconfigured et laisse le paquet en état iU dans dpkg -l. La commande qui installe le fichier et va chercher ses dépendances dans les dépôts est sudo apt install ./mon-paquet_1.2-3_amd64.deb. Les messages cités ici sont ceux d’apt 3.0.3 et de dpkg 1.22.22, les versions livrées par Debian 13 (trixie).

Sommaire
  1. apt install ./fichier.deb installe le paquet et ses dépendances dans la même transaction
  2. L’argument doit contenir une barre oblique, sinon apt cherche un paquet du même nom
  3. E: Unsupported file ./fichier.deb given on commandline : trois causes possibles
  4. N: Download is performed unsandboxed as root : le dossier parent n’est pas lisible par le compte _apt
  5. dpkg -i échoue à la configuration quand une dépendance manque
  6. sudo apt –fix-broken install termine la configuration interrompue
  7. Deux .deb qui dépendent l’un de l’autre s’installent en une seule commande apt
  8. apt 3.0 et apt-get n’affichent plus les mêmes en-têtes depuis Debian 13
  9. Un .deb local reste dans /var/cache/apt/archives jusqu’au prochain apt clean

apt install ./fichier.deb installe le paquet et ses dépendances dans la même transaction

APT ne traite pas le fichier comme un paquet isolé : il l’ajoute temporairement à sa liste de sources, calcule l’installation complète, puis confie le tout à dpkg. Les dépendances manquantes sont prises dans les dépôts déclarés dans /etc/apt/sources.list et /etc/apt/sources.list.d/, exactement comme pour un paquet ordinaire.

  1. Se placer dans le dossier qui contient le fichier et vérifier son nom exact.
    cd ~/Téléchargements
    ls -l mon-paquet_1.2-3_amd64.deb

    Ce qui doit s’afficher : une ligne avec les droits, le propriétaire, la taille en octets et le nom du fichier. Un No such file or directory à cette étape annonce l’échec de l’étape 3.

  2. Mettre l’index des dépôts à jour, sans quoi APT raisonne sur une liste de paquets périmée.
    sudo apt update

    Ce qui doit s’afficher : une série de lignes Hit, Get ou Ign par dépôt, puis Reading package lists... Done, sans aucune ligne commençant par E:.

  3. Lancer l’installation en désignant le fichier par un chemin.
    sudo apt install ./mon-paquet_1.2-3_amd64.deb

    Ce qui doit s’afficher : Building dependency tree... Done, Reading state information... Done, puis le récapitulatif des paquets. Sur Debian 13, apt regroupe ce récapitulatif sous Installing: et Installing dependencies: ; apt-get conserve l’ancien intitulé The following NEW packages will be installed:. La question posée est Continue? [Y/n] avec apt, Do you want to continue? [Y/n] avec apt-get. Répondre n n’écrit rien sur le disque.

  4. Confirmer, puis vérifier l’état final du paquet.
    dpkg -l mon-paquet

    Ce qui doit s’afficher : une ligne dont les deux premiers caractères sont ii, c’est-à-dire installé et configuré, suivie du numéro de version. Les codes iU (unpacked) ou iF (half-configured) signalent une installation inachevée.

L’argument doit contenir une barre oblique, sinon apt cherche un paquet du même nom

apt install mon-paquet_1.2-3_amd64.deb, sans ./ ni /, ne cherche pas un fichier mais un paquet portant ce nom dans les dépôts.

E: Unable to locate package mon-paquet_1.2-3_amd64.deb

APT ne reconnaît un chemin local que si l’argument commence par /, par ./, par ../ ou vaut exactement .. C’est la première chose à vérifier devant un Unable to locate package dont le nom ressemble à un nom de fichier. Avec un chemin absolu, la forme sudo apt install /home/utilisateur/Téléchargements/mon-paquet_1.2-3_amd64.deb fonctionne aussi, ce qui règle la question quand le dossier courant n’est pas celui qu’on croit.

E: Unsupported file ./fichier.deb given on commandline : trois causes possibles

Ce message apparaît dès que le chemin commence bien par ./ ou /, sans que le fichier soit utilisable.

E: Unsupported file ./mon-paquet_1.2-3_amd64.deb given on commandline

La première cause est un fichier absent du dossier courant : le chemin ./mon-paquet.deb ne contient qu’une seule barre oblique, ce qui interdit à APT de le décomposer autrement. La deuxième est une extension inattendue : seuls les fichiers en .deb, .ddeb et .changes sont acceptés, un .deb.part ou un .deb.txt renvoyé par un navigateur est refusé. La troisième est un fichier présent mais inaccessible en lecture au processus qui l’ouvre. Le message est identique dans les trois cas et ne dit pas laquelle s’applique : ls -l sur le chemin exact, puis file mon-paquet_1.2-3_amd64.deb qui doit répondre Debian binary package, tranchent en deux commandes.

N: Download is performed unsandboxed as root : le dossier parent n’est pas lisible par le compte _apt

APT copie le fichier dans son cache avant de le confier à dpkg, et cette copie est normalement faite sous l’identité du compte technique _apt. Quand le dossier qui contient le .deb n’est pas traversable par ce compte (un dossier personnel en 700, par exemple), la copie est faite directement par root et APT le signale.

N: Download is performed unsandboxed as root as file '/home/nom/mon-paquet_1.2-3_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

La ligne commence par N:, c’est un avertissement et non une erreur : l’installation aboutit malgré tout. Pour le faire disparaître, le geste le plus court consiste à déplacer le fichier dans /tmp avant de l’installer, ou à rendre le dossier traversable avec chmod o+x /home/nom, ce qui laisse le contenu du dossier illisible tout en autorisant l’accès aux fichiers dont le nom est connu.

dpkg -i échoue à la configuration quand une dépendance manque

dpkg ne télécharge rien et ne connaît que les paquets déjà présents sur la machine. Il déballe les fichiers du .deb, puis refuse de configurer le paquet et laisse le système dans un état intermédiaire assumé.

dpkg: dependency problems prevent configuration of mon-paquet:
 mon-paquet depends on libexemple1; however:
  Package libexemple1 is not installed.
dpkg: error processing package mon-paquet (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mon-paquet

La deuxième ligne nomme la dépendance exacte et la troisième indique si elle est absente ou seulement non configurée. Le paquet reste dans la base dpkg, visible en iU avec dpkg -l mon-paquet, et ses fichiers sont déjà sur le disque. Deux commandes font le diagnostic : dpkg -C, qui liste les paquets partiellement installés et propose une correction, et apt-cache policy libexemple1, dont la ligne Candidate: montre si un dépôt fournit la dépendance manquante ou affiche (none).

sudo apt –fix-broken install termine la configuration interrompue

L’option -f, écrite en clair --fix-broken, demande à APT de compléter les dépendances d’un système déjà cassé, sans qu’il soit besoin de répéter le nom du paquet sur la ligne.

  1. Demander à APT de corriger l’existant.
    sudo apt --fix-broken install

    Ce qui doit s’afficher : Building dependency tree... Done, la liste des paquets manquants sous The following additional packages will be installed:, puis la question de confirmation. Si le calcul échoue, APT s’arrête avant tout déballage et affiche les dépendances non satisfaites puis E: Unable to correct problems, you have held broken packages. — le message est alors à traiter, pas à contourner, ce qui est le cas typique d’un paquet réclamé par Depends: qu’aucun dépôt ne fournit.

  2. Si la configuration reste inachevée après l’étape 1, relancer dpkg sur tout ce qui est en attente.
    sudo dpkg --configure -a

    Ce qui doit s’afficher : Setting up nom-du-paquet (version) ... pour chaque paquet repris, puis un retour au prompt sans ligne Errors were encountered while processing:.

  3. Contrôler qu’il ne reste rien en souffrance.
    dpkg -C

    Ce qui doit s’afficher : aucune ligne. Toute ligne restante désigne un paquet à réinstaller avant d’aller plus loin. Pour un état intermédiaire isolé, sudo apt install --reinstall ./mon-paquet_1.2-3_amd64.deb reprend le même fichier et réexécute les scripts de configuration. Le fonctionnement général de ces scripts est détaillé dans la page sur l’administration Debian, et la déclaration des dépôts dans celle consacrée aux dépôts APT.

Deux .deb qui dépendent l’un de l’autre s’installent en une seule commande apt

Quand l’application et sa bibliothèque arrivent toutes les deux sous forme de fichiers, les passer ensemble à APT évite l’échec garanti de deux dpkg -i successifs, où le premier appel se plaint d’une dépendance qui n’est déballée qu’au second.

sudo apt install ./libexemple1_1.2-3_amd64.deb ./mon-paquet_1.2-3_amd64.deb

APT traite les deux fichiers dans la même transaction, choisit l’ordre de déballage et n’écrit rien tant que l’ensemble n’est pas cohérent. Les arguments peuvent mêler chemins locaux et noms de paquets provenant des dépôts dans une seule ligne.

Installation d’un fichier .deb téléchargé, apt 3.0.3 et dpkg 1.22.22 sur Debian 13
Critère apt install ./fichier.deb dpkg -i fichier.deb
Résolution des dépendances oui, d’après les dépôts configurés non
Téléchargement des dépendances manquantes oui non
État du système si une dépendance manque rien n’est déballé fichiers déballés, paquet en iU
Copie du fichier dans /var/cache/apt/archives oui non
Commande de reprise après un échec aucune, APT abandonne avant d’agir apt --fix-broken install ou dpkg --configure -a

apt 3.0 et apt-get n’affichent plus les mêmes en-têtes depuis Debian 13

Les deux outils partagent le même moteur mais pas la même version d’affichage : apt sur Debian 13 utilise le format d’APT 3.0, apt-get conserve celui des versions 2.x. Cela change les repères visuels, pas le résultat.

Sur Debian 12 (apt 2.6.1), les deux commandes affichent encore les anciens intitulés, ce qui explique les captures d’écran et les réponses de forum qui ne correspondent plus à l’écran.

Un .deb local reste dans /var/cache/apt/archives jusqu’au prochain apt clean

Un .deb installé avec apt occupe-t-il de la place en plus du paquet lui-même ?

Oui. APT recopie le fichier dans /var/cache/apt/archives avant de le confier à dpkg, ce qui double temporairement l’empreinte du paquet sur la partition qui porte /var. La commande ls -lh /var/cache/apt/archives/ liste les fichiers ainsi conservés, avec leur taille. sudo apt clean vide ce dossier et rend l’espace immédiatement, sans toucher aux paquets installés.

apt install ./fichier.deb ou dpkg -i fichier.deb : lequel choisir ?

APT dès qu’une dépendance peut manquer, c’est-à-dire dans presque tous les cas. dpkg ne télécharge rien et ne résout rien : il déballe les fichiers, puis échoue à la configuration et laisse le paquet en iU. dpkg -i garde un intérêt quand le paquet est déjà connu des dépôts et que ses dépendances sont installées : dans ce cas seulement, il va aussi vite qu’APT et ne copie pas le fichier dans le cache.

Comment installer deux .deb qui dépendent l’un de l’autre ?

En les passant dans une seule commande : sudo apt install ./libexemple1_1.2-3_amd64.deb ./mon-paquet_1.2-3_amd64.deb. APT calcule l’ordre de déballage des deux fichiers et n’écrit rien si l’ensemble reste incohérent. Deux appels successifs à dpkg -i échouent dans un cas sur deux, selon l’ordre choisi, et laissent un paquet non configuré à réparer.

Un .deb plus ancien que la version déjà installée : que fait apt ?

Il refuse la rétrogradation par défaut. Il faut ajouter --allow-downgrades, que la page de manuel d’apt-get (Debian 12, apt 2.6.1) décrit comme dangereuse et susceptible de détruire le système. Avant de s’engager, apt-cache policy nom-du-paquet affiche la version installée et la candidate : si elles diffèrent, c’est une rétrogradation, et un retour en arrière ultérieur demandera la même option.

Comment savoir s’il reste un paquet cassé après l’opération ?

dpkg -C liste les paquets partiellement installés, avec la correction suggérée, et n’affiche rien quand tout est propre. Un état iU ou iF visible dans dpkg -l se répare par sudo apt --fix-broken install, puis par sudo dpkg --configure -a si des paquets restent en attente. Le contrôle prend quelques secondes et évite qu’un paquet non configuré bloque la mise à jour suivante.

Que faire quand une dépendance du .deb n’existe dans aucun dépôt ?

APT le dit avant de toucher au système : il affiche les dépendances non satisfaites et se termine par E: Unable to correct problems, you have held broken packages. La sortie de secours consiste à récupérer aussi le .deb de la dépendance manquante puis à installer les deux fichiers ensemble. apt-cache policy nom-de-la-dependance tranche vite : une ligne Candidate: à (none) signifie qu’aucun dépôt configuré ne fournit ce paquet.

Un .deb téléchargé à la main est-il vérifié comme un paquet des dépôts ?

Non. APT authentifie les paquets des dépôts par la signature des métadonnées du dépôt ; un fichier récupéré sur un site n’est couvert par aucun contrôle de ce type et ne bénéficie que de la vérification d’intégrité interne au format .deb. dpkg-deb -f mon-paquet_1.2-3_amd64.deb Package Version Architecture affiche les trois champs à confronter à ce qu’annonce l’éditeur, et la somme de contrôle publiée se compare avec le vérificateur de checksum.