Fixing OpenSUSE

I fixed my dad's OpenSUSE tumbleweed install last night. It was interesting enough that I figure I can write a short story on it.

Disclaimer: This blogpost has a few malpractices, such as hoping an update will fix broken packages and not doing a backup before messing with the operating system. Please be smarter than me when doing such things.

The whole ordeal started around 9pm, when my dad turned his PC on after a powercut we had earlier in the day. Somehow, his network connection had disappeared, as well as the shutdown, hibernate, and sleep buttons in the start menu (KDE Plasma by the way).

First thing I tried was a restart sudo reboot now which worked, but not before throwing an error "Failed to connect to bus: file or directory not found". I thought that was interesting, so upon the next reboot, I ran systemctl to see the services which are running, as well as those which might have failed. I was slightly familiar with this as I had installed Cloudflare Warp a few days ago, and had to check on the 'dbus' service. I thought it might be related.

I was a bit more panicked to see that as the normal user, I couldn't run systemctl, receiving the same error as before. I chalked this up to the fact everything in this case was relying on systemd or dbus which was failing somehow. After all, even the shutdown command is a systemd thing.
I was able to sudo su my way into the root account, where systemctl was still functional. And unsurprisingly the dbus service, as well as the logind and network-related services were failed.

So, what do you do in this situation? The thing you should do is make a backup before doing anything further. Anyway, after not doing a backup, I got my handy Linux Mint USB which would give me a functional Linux environment to chroot into the OpenSUSE installation and booted into it. Then I had to set the DNS in /etc/resolv.conf because there was no configured DNS and it was just trying 127.0.0.1:53 which returned nothing.

I decided to try an update, hoping it would fix any broken files. zypper dup to the rescue. As my dad hadn't updated OpenSUSE in a while, I waited for some 2200 packages to be installed. On a side note, thank you Ish for the local OpenSUSE mirror, it made everything go much faster!
Tragically, zypper failed mid-way with a script returning an error about a missing/empty file. Just to be sure it was not a one-time issue, I ran zypper again. Just this time, zypper itself failed: libprotobuf-litex.x.x.x was not found. So now I managed to muck up zypper, yipee.

Now I try booting back into OpenSUSE, just to see if there's any progress. And, well, there is! The internet is back. But on the flip side, Plasma is having a stroke, Firefox will not open, and I can't even move windows around. Well... Let's try running another update!

To fix the libprotobuf-lite not being found, I went and installed it manually using rpm -ivh <package url>. Then I had some other dependencies to update as well. My conclusion is that this happened because of the huge jump in versions, and resulting incompatibilities, particularly with zypper. I also had to install libzypp and then update zypper itself. I was lucky there weren't more dependencies to fix.

Eventually, zypper completed it's upgrade so I restarted the computer and was greeted by a fully-functional OpenSUSE install!