dpkg ne trouve pas ldconfig / start-stop-daemon dans la variable PATH

41

J'essayais d'installer l' bsd-mailxutilitaire, le paquet a été installé, mais je m'interroge sur l'erreur.

C'est l'erreur que j'obtiens:

Preconfiguring packages ...
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
utilisateur87142
la source
Pouvez-vous poster la sortie de echo $PATHs'il vous plaît?
chaos
@ chaos, comment l'obtenir?
user87142
@ user87142 Tapez simplement echo $PATHun terminal.
John WH Smith
@ chaos, j'obtiens ceci ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142
Et la sortie de cat /etc/environment?
chaos

Réponses:

59

Tout d’abord, les lignes qui vous intéressent vraiment sont:

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.

Ces erreurs ont été signalées à plusieurs reprises par les utilisateurs de Debian et Ubuntu (vous pouvez en fait les rechercher sur Google pour plus d'informations). Il semble que la PATHvariable ne soit pas correctement définie lorsque l'utilisateur essaie d'exécuter une commande sudo, ce que vous essayez probablement de faire.

Solution 1: sudole chemin sécurisé par défaut de l'ensemble

Ouvrez /etc/sudoersen exécutant visudodans votre terminal et assurez-vous que le fichier comprend la ligne suivante:

Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Vous trouverez plus d'informations sur ce problème ici (Problèmes et astuces> PATH non défini).

Solution 2: utilisez directement le compte root

N'utilisez pas sudo, passez simplement rootà exécuter vos commandes. Exécutez l'une des commandes suivantes pour le faire:

$ sudo -i
$ su 

Une fois que vous êtes connecté en tant que root, exécutez à apt-getnouveau vos commandes:

# apt-get ...

Vous devrez peut-être définir d' PATHabord la racine . Éditez /root/.bashrc(avec les privilèges root bien sûr), et ajoutez la ligne suivante:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Solution 3: essayez de transmettre la PATHvariable sudoau moment de l'exécution.

Préfixez simplement l' sudoappel avec la redéfinition de la PATHvariable:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...
John WH Smith
la source
1
J'ai essayé d'utiliser l'utilisateur root mais je n'ai pas fonctionné. J'ai vérifié le chemin aussi.
user87142
@ user87142 Eh bien, vous n'avez pas vérifié correctement, car il /sbinmanque. Essayez de le configurer à nouveau (solutions 1 et / ou 3). J'ai modifié la solution 2 pour inclure un moyen de modifier le chemin d'accès de la racine lorsque vous utilisez le compte de manière interactive.
John WH Smith
J'ai vérifié que les paramètres par défaut ...... env_reset Valeurs par défaut s = "/ usr / local / sbin: / usr / bin local /: / usr / sbin: / usr / bin: / sbin: / bin"
user87142
Avez-vous trouvé une solution?
Brijesh Valera
Une variante de sa 3ème solution consiste à d' export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binabord, puis ensuite sudo -E apt install nginx. Le -Ecommutateur signifie --preserve-envdonc exporter vos env vars vers la sudosession.
Mark Hudson
2

de toute façon j'ai eu le même problème.

Veuillez lire attentivement votre message d'erreur et vous trouverez la solution. Il y a une note qui dit:

Remarque: le chemin PATH de la racine devrait normalement contenir / usr / local / sbin, / usr / sbin et / sbin.

Ensuite, j'ai vérifié mon chemin et quelque part, il me manquait le / sbin dans mon chemin.

echo $ PATH

puis j'ai ajouté et le problème avait disparu. :)

export PATH = "$ PATH: / sbin"

Tcharam!

Danilo Souza
la source
Assez sûr que cela a déjà été couvert par une réponse existante , mais
Jeff Schaller
1

J'ai eu ce problème aujourd'hui et je l'ai résolu en commentant la ligne (en utilisant un #)

Defaults    exempt_group=sudo

depuis mon fichier / etc / sudoers en utilisant

# visudo

comme racine

Cette modification amènera sudo à utiliser la variable secure_path définie dans le même fichier.

Cabub
la source
Cela a résolu pour moi sur Ubuntu 18.04.1
sw00