O dpkg não pode encontrar o ldconfig / start-stop-daemon na variável PATH


41

Eu estava tentando instalar o bsd-mailxutilitário, o pacote foi instalado, no entanto, estou me perguntando sobre o erro.

Este é o erro que recebo:

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)

Você pode postar a saída de eco, $PATHpor favor?
caos

@ caos, como conseguir isso?
user87142

@ user87142 Basta digitar echo $PATHum terminal.
John WH Smith

@ caos, eu recebo este ... / usr / / bin local: / usr / bin: bin /: / usr / games
user87142

E a saída de cat /etc/environment?
caos

Respostas:


59

Primeiro de tudo, as linhas pelas quais você está realmente interessado são:

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

Esses erros foram relatados várias vezes pelos usuários do Debian e Ubuntu (você pode pesquisá-los no Google para obter mais informações). Parece que a PATHvariável não está definida corretamente quando o usuário tenta executar um comando sudo, o que provavelmente é o que você está tentando fazer.

Solução 1: sudocaminho seguro padrão do conjunto

Abra /etc/sudoersexecutando visudono seu terminal e verifique se o arquivo inclui a seguinte linha:

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

Mais informações sobre esse problema podem ser encontradas aqui (Problemas e dicas> CAMINHO não definido).

Solução 2: use a conta raiz diretamente

Não use sudo, basta alternar para rootpara executar seus comandos. Execute um dos seguintes comandos para fazer isso:

$ sudo -i
$ su 

Depois de fazer login como root, basta executar seus apt-getcomandos novamente:

# apt-get ...

Talvez você precise definir o PATHprimeiro da raiz . Edite /root/.bashrc(com privilégios de root, é claro) e adicione a seguinte linha:

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

Solução 3: tente passar a PATHvariável sudono tempo de execução.

Apenas prefixe a sudochamada com a redefinição da PATHvariável:

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

11
Eu tentei usar o usuário root, mas não funcionou. Verifiquei o caminho também.
user87142

@ user87142 Bem, você não verificou corretamente, pois /sbinestá faltando. Tente configurá-lo novamente (soluções 1 e / ou 3). Editei a solução 2 para incluir uma maneira de editar o PATH da raiz ao usar a conta interativamente.
John WH Smith

Verifiquei que ...... Padrões env_reset Padrões secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142

Você encontrou alguma solução?
Brijesh Valera

Uma variação de sua terceira solução é export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binprimeiro, depois sudo -E apt install nginxdepois. A -Eopção significa --preserve-envexportar seus envios para a sudosessão.
21818 Mark Hudson

2

de alguma forma eu tive o mesmo problema.

Por favor, leia sua mensagem de erro com atenção e você encontrará a solução. Há uma nota que diz:

Nota: o PATH do root geralmente deve conter / usr / local / sbin, / usr / sbin e / sbin.

Depois verifiquei meu caminho e, de alguma forma, estava faltando o / sbin no meu caminho.

eco $ PATH

então eu adicionei e o problema se foi. :)

exportar PATH = "$ PATH: / sbin"

Tcharam!


Certeza que isso já foi coberto por uma resposta existente , embora
Jeff Schaller

1

Eu tive esse problema hoje e o resolvi comentando a linha (usando um #)

Defaults    exempt_group=sudo

do meu arquivo / etc / sudoers usando

# visudo

como raiz

Essa alteração fará com que o sudo use a variável secure_path padrão definida no mesmo arquivo.


Isso resolveu para mim no Ubuntu 18.04.1
sw00
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.