dpkg non riesce a trovare ldconfig / start-stop-daemon nella variabile PATH


41

Stavo cercando di installare l' bsd-mailxutility, il pacchetto è stato installato, ma mi chiedo l'errore.

Questo è l'errore che ottengo:

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)

Puoi pubblicare l'output di eco per $PATHfavore?
caos

@ caos, come ottenerlo?
user87142

@ user87142 Basta digitare echo $PATHun terminale.
John WH Smith,

@ caos, ottengo questo ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142

E l'output di cat /etc/environment?
caos,

Risposte:


59

Prima di tutto, le linee a cui sei veramente interessato sono:

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

Questi errori sono stati segnalati più volte dagli utenti Debian e Ubuntu (puoi effettivamente cercarli su Google per ulteriori informazioni). Sembra che la PATHvariabile non sia impostata correttamente quando l'utente tenta di eseguire un comando attraverso sudo, che è probabilmente quello che stai cercando di fare.

Soluzione 1: impostare sudoil percorso sicuro predefinito

Apri /etc/sudoerseseguendo visudonel tuo terminale e assicurati che il file includa la seguente riga:

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

Ulteriori informazioni su questo problema sono disponibili qui (Problemi e suggerimenti> PERCORSO non impostato).

Soluzione 2: utilizzare direttamente l'account root

Non usare sudo, basta passare a rootper eseguire i comandi. Esegui uno dei seguenti comandi per farlo:

$ sudo -i
$ su 

Una volta effettuato l'accesso come root, esegui apt-getnuovamente i comandi:

# apt-get ...

Potrebbe essere necessario impostare PATHprima il root . modificare/root/.bashrc (con i privilegi di root ovviamente) e aggiungi la seguente riga:

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

Soluzione 3: provare a passare il PATH variabile a sudoal momento dell'esecuzione.

Basta prefissare la sudochiamata con la ridefinizione della PATHvariabile:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...

1
Ho provato a utilizzare l'utente root ma non ha funzionato. Ho controllato anche il percorso.
user87142

@ user87142 Beh, non hai controllato correttamente, poiché /sbinmanca. Prova a configurarlo di nuovo (soluzioni 1 e / o 3). Ho modificato la soluzione 2 per includere un modo per modificare il PERCORSO di root quando si utilizza l'account in modo interattivo.
John WH Smith,

Ho verificato che ...... Predefiniti env_reset Predefiniti secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142

Ne hai trovato una soluzione?
Brijesh Valera,

Una variante della sua terza soluzione è export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binprima di tutto, poi sudo -E apt install nginxdopo. Lo -Eswitch significa --preserve-envquindi esportare i tuoi parametri ambientali nella sudosessione.
Mark Hudson,

2

in qualche modo ho avuto lo stesso problema.

Leggi attentamente il tuo messaggio di errore e troverai la soluzione. C'è una nota che dice:

Nota: il PATH di root dovrebbe contenere normalmente / usr / local / sbin, / usr / sbin e / sbin.

Poi ho controllato il mio percorso e in qualche modo mi mancava / sbin nel mio percorso.

echo $ PATH

poi ho aggiunto e il problema era sparito. :)

export PATH = "$ PATH: / sbin"

Tcharam!


Abbastanza sicuro, questo è già stato coperto da una risposta esistente , comunque
Jeff Schaller

1

Ho avuto questo problema oggi e l'ho risolto commentando la riga (usando un #)

Defaults    exempt_group=sudo

dal mio file / etc / sudoers usando

# visudo

come radice

Questa modifica farà sì che sudo utilizzi la variabile default secure_path impostata nello stesso file.


Questo mi ha risolto per me su Ubuntu 18.04.1
sw00 il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.