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

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

Eu estava tentando instalar bsd-mailxo utilitário, o pacote foi instalado, mas estou pensando 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)

Responder1

Em primeiro lugar, as linhas que realmente lhe interessam 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 por 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: definir sudoo caminho seguro padrão

Abra /etc/sudoersexecutando visudoem seu terminal e certifique-se de que o arquivo inclua 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 este problema podem ser encontradasaqui(Problemas e dicas > PATH não definido).

Solução 2: use a conta root diretamente

Não use sudo, apenas mude 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 ...

Você pode ter que definir o root PATHprimeiro. 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 para sudoem tempo de execução.

Basta prefixar 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 ...

Responder2

de alguma forma eu tive o mesmo problema.

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.

Então verifiquei meu caminho e de alguma forma estava faltando o /sbin no meu caminho.

echo $PATH

então adicionei e o problema desapareceu. :)

exportar PATH="$PATH:/sbin"

Tcharam!

Responder3

A falta de descrição na pergunta torna difícil identificar o problema exato nesta situação, mas recentemente enfrentei o mesmo problema:

user@debian:su
Password: 
root@debian:/home/user/Downloads# dpkg -i [Some package]
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

A solução foi usar su -em vez de su(o que geralmente é melhor, conforme detalhado emas respostas para esta pergunta):

user@debian:su -
Password: 
root@debian:~# cd /home/user/Downloads/
root@debian:/home/user/Downloads# dpkg -i [Some package]

Responder4

Nenhuma das soluções mostradas aqui me ajudou, então vou explicar o que aconteceu comigo e o que fiz para consertar:

Eu estava tentando instalar o Insync no meu sistema Q4OS e não consegui porque o aplicativo requer libc6 >= 2.32 e o Q4OS usa 2.31. Encontrei um deb libc6 de 2,32 e então o pesadelo começou. Todo o meu sistema foi quebrado. apt-getparou de funcionar e diz que o sistema precisa do libc6 2.31 para funcionar corretamente. Naquela época eu não sabia como fazer o downgrade da versão. Então, após reiniciar, o sistema simplesmente não iniciou e desligou com a mensagem na inicialização:

A start job is running for Hold until boot process finishes up (Xmin Xs/no limit)

Tentei mudar o terminal sem sucesso. Espero que meu Linux esteja rodando no VMWare e eu consiga me conectar na máquina usando o SSH.VM -> SSH -> Connect to SSH...

Depois disso, tentei muitas coisas sem sucesso. Tentei atualizar com:

sudo apt install upgrade

e a mensagem diz que eu tive que correr:

sudo apt --fix-broken install

Mas quando tentei rodar isso, ele disse que muitos pacotes seriam removidos, inclusive q4os-desktopele próprio. Bem, aceito as condições e tentei. O que mais eu poderia perder?

Depois disso, a coisa fica muito pior. Não consegui executar nada. Recebi um erro semelhante da pergunta:

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)

Mas o problema não era o PATH em si, mas o ldconfig faz parte do libc6 e foi removido. Não pude fazer nada porque quase tudo depende de libc6 e ldconfig. Tentei compilar a libc6 a partir do código-fonte, mas sem sucesso. Tem muitas dependências e quando tentei instalar uma dependência, a lib tentou usar algo da libc6. Uma espécie de loop de dependência.

Então, eu reinicio o sistema com o live CD do Q4OS e apenas copio o binário ldconfig para /usr/sbin/ldconfig. Multar! Agora, apt-getcomeçou a funcionar novamente (não perfeitamente, mas...). Então descobri como fazer o downgrade da lib:

sudo apt install libc6=2.31-13+deb11u3

Se você não tiver certeza de qual versão usar, execute:

apt list --installed | grep libc6

dentro do CD ao vivo. A saída deve ser algo como:

libc6/stable,now 2.31-13+deb11u3 amd64 [installed]

Depois disso, consegui instalar o Q4OS novamente:

sudo apt install q4os-desktop

Após uma reinicialização, tudo voltou ao normal!

Mas agora, quando executo o Insync, o aplicativo trava após 5 segundos.

informação relacionada