SUSE Yast No such client module sw_single

I have been running openSUSE on my primary desktop machine since December last year, and upgraded recently from openSUSE 10.2 to openSUSE 10.3. The Yast control center is a good piece of software, but the software management part of it seems to get slower and slower with each new release so I have been looking at using Yum instead.

After installing some software using Yum this morning, which was much faster than using the Yast software installer, I went to install something else this evening and got the following error message when I clicked on the “Software Management” icon in Yast:

Error loading language plugin /usr/lib64/YaST2/plugin/libpy2lang_perl.so: libboost_filesystem.so.1.33.1: cannot open shared object file: No such file or directory
No such client module sw_single

That was an odd sort of message. I had installed something to do with Yast this morning, so perhaps yum had managed to break it. I’m fairly sick of SUSE’s package management so nothing really surprises me when things go wrong with it these days.

I checked, and the libboost_filesystem.so.1.33.1 file was present on the file system. However, doing an ldd on ldd /usr/lib64/YaST2/plugin/libpy2lang_perl.so showed up some interesting information. ldd is a tool which lets you work out which library dependencies there are for an executable file.

ldd /usr/lib64/YaST2/plugin/libpy2lang_perl.so
...
librpm-4.4.so => not found
...

ldd was telling me that librpm-4.4.so did not exist. I did a quick locate librpm-4.4.so to find out where the file was, and then ls -l /usr/lib/librpm-4.4.so to confirm the file really was there. And of course it was, so something was really messed up.

I popped the installation DVD into the drive and located the rpm file by doing this:

find /media/dvd. -name "rpm*"

This returned:

/media/dvd/x86_64/rpm-4.4.2-140.x86_64.rpm
/media/dvd/x86_64/rpm-devel-4.4.2-140.x86_64.rpm
/media/dvd/x86_64/rpm-python-4.4.2-164.x86_64.rpm

So I installed the pm-4.4.2-140.x86_64.rpm RPM file like so, using the –ignorearch and –force flags because I’d been having some issues installing other files while I was trying to work out the problem:

rpm --ignorearch --force -ivh ./x86_64/rpm-4.4.2-140.x86_64.rpm

An ldd on /usr/lib64/YaST2/plugin/libpy2lang_perl.so now revealed

ldd /usr/lib64/YaST2/plugin/libpy2lang_perl.so
...
libboost_filesystem.so.1.33.1 => not found
...

So another quick search and install…

$ find /media/dvd -name "boost*"
/media/dvd/x86_64/boost-1.33.1-108.x86_64.rpm
/media/dvd/x86_64/boost-devel-1.33.1-108.x86_64.rpm
/media/dvd/x86_64/boost-doc-1.33.1-108.x86_64.rpm
/media/dvd/x86_64/boost-jam-3.1.14-14.x86_64.rpm
$ rpm -ivh /media/dvd/x86_64/boost-1.33.1-108.x86_64.rpm

ldd now showed all the dependencies were available (never mind that they were there all along), and I could now run the software management function from yast without any further issues.

Update November 24th 2007: I have posted instructions for installing Yum on SUSE and some screenshots of the KYum graphical frontend for Yum, having successfully run Yum for a few weeks now.