Quebrado minha instalação Debian: 'sh' não encontrado no PATH

4

Estou executando uma compilação personalizada de Debian buster/sid . Eu quebrei um monte de coisas aparentemente executando incorretamente apt-get dist-upgrade (acho que foi isso que aconteceu). Portanto, o ambiente de desktop manager \ desktop não carrega mais e acabo de obter um shell de linha de comando.

O Aptitude e o apt-get estão quebrados, assim como o dpkg.

apt update, aptitude update e apt-get update falha e dá muitos erros ao tentar rodar, no entanto meu /etc/apt/sources.list parece bem

deb http://ftp.ie.debian.org/debian unstable main contrib non-free
deb-src http://ftp.ie.debian.org/debian unstable main contrib non-free
deb http://ftp.ie.debian.org/debian experimental main contrib non-free
deb-src http:// ftp.ie.debian.org/debian experimental main contrib non free
deb https://dl.winehq.org/wine-builds/debian sid main
deb https://dl.winehq.org/wine-builds/ubuntu sid main

erros na atualização como este:

Err:2 http://ftp.ie.debian.org/debian unstable InRelease
Couldn't execute /usr/bin/apt-key to check /var/lib/apt/lists/partial/ftp.ie.debian.org_debian_dists_experimental_InRelease

e

E: Problem executing scripts APT::Update::Post-Invoke-Success '/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null'

E: Sub-process returned an error code

atualização do aptitude, apt upgrade ou apt-get upgrade parecem estar quebrados devido ao dpkg estar quebrado

O dpkg apresenta este erro:

dpkg: warning: 'sh' not found in PATH or not executable
dpkg: error: 1 expected

no entanto echo $PATH retorna, o que parece bem para mim

/home/ferg/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

se eu tentar sh , obtenho

The program 'sh' is currently not installed. To run 'sh' please ask your administrator to install the package 'dash'

Se eu tentar sudo apt-get install dash

diz-me dash is already the newest version (0.5.8-2.6)

e se eu continuar

E: Sub-process /usr/sbin/dpkg-preconfigure --apt || true returned an error code (100)
E: Failure running script /usr/sbin/dpkg/preconfigure --apt || true

Se eu executar sudo nano /etc/apt/apt.conf.d/70debconf e comentar a linha DPkg::Pre-Install-Pkgs {"/usr/sbian/dpkg-preconfigure --apt || true";};

então o aptitude falha com

dpkg: warning: 'sh' not found in PATH or not executable
dpkg: error: 1 expected

Portanto, não posso reinstalar os pacotes necessários para restaurar o sistema porque o dpkg (e, portanto, aptitude, apt-get, apt) está quebrado, aparentemente porque sh não está no meu PATH. No entanto, todos os diretórios corretos estão no meu PATH. Eu estou supondo que corrigir este problema com sh permitiria que o dpkg e o aptitude funcionem novamente, mas eu estou querendo saber qual é precisamente o problema com sh?

Agradeço antecipadamente por qualquer ajuda.

Atualização:

ls -l /bin/bash

retorna

-rwxr-xr-x 1 root root 1099016 May 15  2017 /bin/bash

ls -l /bin/sh retorna

lrwxrwxrwx 1 root root 4 Jun 28  2017 /bin/sh -> dash

ls -l /bin/dash retorna

ls: cannot access 'bin/dash': No such file or directory

Então / bin / sh parece redirecionar para / bin / dash que foi deletado de alguma forma?

sudo apt-get install --reinstall dash falha com:

1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.    
E: Internal Error, No file name for dash:amd64

A execução de sudo ln -sf bash /bin/sh e, em seguida, sudo apt-get install --reinstall dash falha com o mesmo erro acima.

Procurando por esse problema e suas variantes no Google, encontrei várias soluções relacionadas ao PATH e às permissões do usuário. Verifiquei os arquivos relacionados a ele, incluindo /etc/sudoers /root/.bashrc e /root/.profile e% código%. Na maioria desses casos, os usuários conseguiram resolver o problema simplesmente definindo seu caminho corretamente (geralmente faltavam os diretórios /etc/profile ou /sbin ). Como dito acima, meu PATH parece conter todos os diretórios relevantes, quer eu execute /usr/sbin normalmente ou como root ou echo $PATH . Alguns usuários também estavam tendo problemas com permissões ou com sudo echo $PATH . Eu também tentei executar vários comandos sudo aptitude e apt e apt-get como root usando dpkg , o que sugere que meu problema é diferente.

    
por Fearg 27.01.2018 / 02:48

2 respostas

2

Como afirmado pelo @Stephen Kitt, eu encontrei este bug em dash que tinha quebrado sh (o shell Bourne) como /bin/sh é um link simbólico para /bin/dash/ na minha distribuição particular.

A execução de sudo ln -sf bash /bin/sh para apontar sh para bash e, em seguida, a execução de sudo apt-get update seguido de sudo apt-get install --reinstall dash seguido de sudo apt-get full-upgrade resolveu o problema.

    
por 30.01.2018 / 04:37
9

Você foi mordido por um erro desagradável em dash que causou /bin/sh a ser removido. Isso já foi corrigido, e é por isso que outros apt update e apt full-upgrade corrigiram o problema (depois de restaurar /bin/sh para apontar para bash , presumivelmente, seus comentários não estão claros sobre isso).

    
por 27.01.2018 / 09:35