I'm running a custom build of Debian buster/sid
. I have broken a lot of things seemingly by mistakenly running apt-get dist-upgrade
(I think that's what did it). So the desktop manager\desktop environment no longer loads at all and I just get a command-line shell.
Aptitude and apt-get are broken as is dpkg.
apt update, aptitude update and apt-get update fails and gives a lot of errors when attempted to run, however my /etc/apt/sources.list looks fine
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
errors on update like this:
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
and
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
aptitude upgrade, apt upgrade or apt-get upgrade appear to be broken due to dpkg being broken
Dpkg gives this error:
dpkg: warning: 'sh' not found in PATH or not executable
dpkg: error: 1 expected
however echo $PATH
returns, which looks fine to me
/home/ferg/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
if I try sh
I get
The program 'sh' is currently not installed. To run 'sh' please ask your administrator to install the package 'dash'
If I try sudo apt-get install dash
it tells me dash is already the newest version (0.5.8-2.6)
and if I continue
E: Sub-process /usr/sbin/dpkg-preconfigure --apt || true returned an error code (100)
E: Failure running script /usr/sbin/dpkg/preconfigure --apt || true
If I run sudo nano /etc/apt/apt.conf.d/70debconf
and comment out the line DPkg::Pre-Install-Pkgs {"/usr/sbian/dpkg-preconfigure --apt || true";};
then aptitude fails with
dpkg: warning: 'sh' not found in PATH or not executable
dpkg: error: 1 expected
So I can't reinstall necessary packages to restore the system because dpkg (and therefore aptitude, apt-get, apt) are broken, seemingly because sh is not in my PATH. However all the correct directories are in my PATH. I'm assuming that fixing this issue with sh would allow dpkg and aptitude to work again but I'm wondering what precisely is the problem with sh?
Thank you in advance for any help.
Update:
ls -l /bin/bash
returns
-rwxr-xr-x 1 root root 1099016 May 15 2017 /bin/bash
ls -l /bin/sh
returns
lrwxrwxrwx 1 root root 4 Jun 28 2017 /bin/sh -> dash
ls -l /bin/dash
returns
ls: cannot access 'bin/dash': No such file or directory
So /bin/sh seems to redirect to /bin/dash which has been deleted somehow?
sudo apt-get install --reinstall dash
fails with:
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
Running sudo ln -sf bash /bin/sh
and then sudo apt-get install --reinstall dash
fails with the same error as above.
Searching for this issue and variants of it on Google I've found numerous solutions related to the user's PATH and permissions, I've checked the files which relate to that including /etc/sudoers
/root/.bashrc
and /root/.profile
and /etc/profile
. In most of those cases the users were able to solve their issue by simply defining their path correctly (usually the /sbin
or /usr/sbin
directories were missing). As stated above my PATH seems to contain all the relevant directories whether I run echo $PATH
normally or as root or sudo echo $PATH
. Some users were also having issues with permissions or with sudo
itself. I've also tried executing various aptitude
apt
and apt-get
and dpkg
commands as root using sudo -i
which suggests that my issue is different.
Best Answer
You were bitten by a nasty bug in
dash
which caused/bin/sh
to be removed. This has since been fixed, which is why anotherapt update
andapt full-upgrade
fixed it (after restoring/bin/sh
to point tobash
presumably, your comments aren’t clear about that).