dpkg no puede encontrar ldconfig / start-stop-daemon en la variable PATH

41

Estaba tratando de instalar la bsd-mailxutilidad del paquete que se instaló, sin embargo, me pregunto sobre el error.

Este es el error que obtengo:

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)
usuario87142
fuente
¿Puedes publicar la salida de echo $PATHpor favor?
caos
@ caos, ¿Cómo conseguir eso?
usuario87142
@ user87142 Simplemente escriba echo $PATHun terminal.
John WH Smith
@ caos, obtengo esto ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142
¿Y la salida de cat /etc/environment?
caos

Respuestas:

59

En primer lugar, las líneas que realmente le interesan son:

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

Estos errores han sido reportados varias veces por los usuarios de Debian y Ubuntu (en realidad puede buscarlos en Google para obtener más información). Parece que la PATHvariable no está configurada correctamente cuando el usuario intenta ejecutar un comando sudo, lo que probablemente es lo que está intentando hacer.

Solución 1: establecer sudola ruta segura predeterminada

Abrir /etc/sudoersejecutando visudoen su terminal, y asegúrese de que el archivo incluye la siguiente línea:

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

Puede encontrar más información sobre este problema aquí (Problemas y sugerencias> RUTA no establecida).

Solución 2: use la cuenta raíz directamente

No lo use sudo, simplemente cambie a rootpara ejecutar sus comandos. Ejecute uno de los siguientes comandos para hacerlo:

$ sudo -i
$ su 

Una vez que haya iniciado sesión como root, simplemente ejecute sus apt-getcomandos nuevamente:

# apt-get ...

Sin PATHembargo, es posible que primero deba establecer la raíz . Edite /root/.bashrc(con privilegios de root, por supuesto) y agregue la siguiente línea:

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

Solución 3: intente pasar la PATHvariable a sudotiempo de ejecución.

Simplemente prefija la sudollamada con la redefinición de la PATHvariable:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...
John WH Smith
fuente
1
He intentado usar el usuario root pero no funcionó. También he verificado la ruta.
usuario87142
@ user87142 Bueno, no lo verificó correctamente, ya /sbinque falta. Intente configurarlo nuevamente (soluciones 1 y / o 3). Edité la solución 2 para incluir una forma de editar la RUTA de la raíz al usar la cuenta de forma interactiva.
John WH Smith
He comprobado que ... Valores predeterminados env_reset Valores predeterminados secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142
¿Encontraste alguna solución?
Brijesh Valera
Una variación de su tercera solución es export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binprimero, luego sudo -E apt install nginxdespués de eso. El -Ecambio significa --preserve-envexportar sus envios a la sudosesión.
Mark Hudson
2

De alguna manera tuve el mismo problema.

Lea atentamente su mensaje de error y encontrará la solución. Hay una nota que dice:

Nota: la RUTA de la raíz generalmente debe contener / usr / local / sbin, / usr / sbin y / sbin.

Luego revisé mi camino y de alguna manera me faltaba el / sbin en mi camino.

echo $ RUTA

Luego agregué y el problema desapareció. :)

export PATH = "$ PATH: / sbin"

Tcharam!

Danilo Souza
fuente
Sin embargo, estoy bastante seguro de que esto ya ha sido cubierto por una respuesta existente
Jeff Schaller
1

Hoy tuve este problema y lo resolví comentando la línea (usando un #)

Defaults    exempt_group=sudo

desde mi archivo / etc / sudoers usando

# visudo

como raíz

Este cambio hará que sudo use la variable predeterminada secure_path establecida en el mismo archivo.

Cabub
fuente
Esto me lo resolvió en Ubuntu 18.04.1
sw00