Through a stupid user error, I managed to mess up my Ubuntu 16.04 LTS installation -- it boots to a black screen.
Fortunately, the filesystem is intact, and I can get to a console session without difficulty. I attempted to undo my damage (reversing the last set of changes in the log), and with a friend's heroic help, we managed to get to a graphical session using the xfce4 desktop (which I had installed as an experiment back in 14.04 days).
I am attempting to follow the steps in this answer to restore my system to proper working order (I use Unity), but when I get to "step 3", sudo debsums -cs
, it stalls. Very quickly I get some missing fonts listed (I deleted some Noto fonts -- I know about that), and then the process goes quiet.
I let it run for 18 hours first time, and got no new results after the first couple minutes. I closed that down, re-ran debsums_init
, and tried again ... with exactly the same outcome. Checking top
on the process, it shows me this:
So, should I expect this debsums -cs
to finish its work and exit to prompt? Or is it hanging? or has it told me everything it's going to tell me, and I should just kill it?
Update - solved following diagnostics and suggestions from @muru (see accepted answer, below):
This is the output of lsof -p PID
:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
debsums 14678 root cwd DIR 8,2 4096 13369346 /home/user
debsums 14678 root rtd DIR 8,2 4096 2 /
debsums 14678 root txt REG 8,2 1907192 8475875 /usr/bin/perl
debsums 14678 root mem REG 8,2 27168 8651816 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/File/Glob/Glob.so
debsums 14678 root mem REG 8,2 10368 10493560 /usr/lib/x86_64-linux-gnu/perl5/5.22/auto/File/FnMatch/FnMatch.so
debsums 14678 root mem REG 8,2 14480 9859421 /usr/lib/x86_64-linux-gnu/perl5/5.22/auto/Locale/gettext/gettext.so
debsums 14678 root mem REG 8,2 35328 8654166 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Encode/Encode.so
debsums 14678 root mem REG 8,2 102064 8524369 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/POSIX/POSIX.so
debsums 14678 root mem REG 8,2 18704 8658188 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Digest/MD5/MD5.so
debsums 14678 root mem REG 8,2 18768 8654260 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/IO/IO.so
debsums 14678 root mem REG 8,2 18696 8524352 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Fcntl/Fcntl.so
debsums 14678 root mem REG 8,2 47696 8658199 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/List/Util/Util.so
debsums 14678 root mem REG 8,2 14608 8524357 /usr/lib/x86_64-linux-gnu/perl/5.22.1/auto/Cwd/Cwd.so
debsums 14678 root mem REG 8,2 2981280 8389721 /usr/lib/locale/locale-archive
debsums 14678 root mem REG 8,2 39224 7078564 /lib/x86_64-linux-gnu/libcrypt-2.23.so
debsums 14678 root mem REG 8,2 1864888 7078561 /lib/x86_64-linux-gnu/libc-2.23.so
debsums 14678 root mem REG 8,2 138696 7078570 /lib/x86_64-linux-gnu/libpthread-2.23.so
debsums 14678 root mem REG 8,2 1088952 7078569 /lib/x86_64-linux-gnu/libm-2.23.so
debsums 14678 root mem REG 8,2 14608 7078560 /lib/x86_64-linux-gnu/libdl-2.23.so
debsums 14678 root mem REG 8,2 162632 7078534 /lib/x86_64-linux-gnu/ld-2.23.so
debsums 14678 root mem REG 8,2 1719 9999141 /usr/share/locale-langpack/en_GB/LC_MESSAGES/dpkg-dev.mo
debsums 14678 root 0u CHR 136,0 0t0 3 /dev/pts/0
debsums 14678 root 1u CHR 136,0 0t0 3 /dev/pts/0
debsums 14678 root 2u CHR 136,0 0t0 3 /dev/pts/0
debsums 14678 root 3r REG 8,2 307 2915907 /var/lib/dpkg/info/libfm-extra4:amd64.md5sums
It is preceded by this warning:
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
The output of watch lsof -p PID
is static, and hasn't changed since it started:
Running watch
with the | tail
pipe gives:
That is, the same last 10 lines at the screenshot above. FWIW, the libfm-extra4:amd64.md5sums
file (307 bytes) lists out this way:
-rw-r--r-- 1 root root 307 Jul 12 2016 /var/lib/dpkg/info/libfm-extra4:amd64.md5sums
The output of sudo strace -p PID
gave the following five lines endlessly looping:
readlink("/usr/share/doc/libfm-extra4", "libfm4", 4095) = 6
lstat("/usr/share/doc/libfm4", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/share/doc/libfm4/changelog.Debian.gz", {st_mode=S_IFLNK|0777, st_size=35, ...}) = 0
readlink("/usr/share/doc/libfm4/changelog.Debian.gz", "../libfm-extra4/changelog.Debian"..., 4095) = 35
lstat("/usr/share/doc/libfm-extra4", {st_mode=S_IFLNK|0777, st_size=6, ...}) = 0
Investigating the /usr/share/doc/libfm-extra4
dir led to the discovery that the changelog.Debian.gz
file was a symbolic link, and the target couldn't be found. Deleting that file allowed the debsums -cs
process to continue.
If it helps: I damaged my system through putting a Debian source in my sources.list
and running an update, instead of using the GDebi package manager. I've lost access to unity, though I'm now working on the same machine with an xcfe session started from console via xstart
. I cannot start a Unity session this way.
sudo strace -p PID
, which will show which system calls debsums is executing (if none, then it is almost certainly stuck on some internal code) – muru Feb 09 '17 at 16:50debsums -c libfm-extra4
on my 16,04 VM, and it did not do areadlink(2)
/usr/share/doc/libfm-extra4
(which is a directory in my case). Maybe examine that directory and its contents. – muru Feb 09 '17 at 17:09changelog.Debian.gz
is a symbolic link which points I don't know where. The properties panel isn't giving me enough information; when I click on in file-manager, I don't move. – Dɑvïd Feb 09 '17 at 17:15debsums
is moving -- looks like you cracked it! I don't think my problems are over, but I'm certianly moving ahead. Thanks so much! – Dɑvïd Feb 09 '17 at 17:20