Mailinglist Archive: opensuse (3666 mails)

< Previous Next >
Breaking and fixing YaST
  • From: Bob Apthorpe <apthorpe+suse@xxxxxxxxxxxx>
  • Date: Tue, 08 Mar 2005 15:54:50 -0600
  • Message-id: <422E1F2A.70106@xxxxxxxxxxxx>
Hi,

I ran into the infamous "qt frontend is installed but does not work" and
"ncurses frontend is installed but does not work" problems with YaST
today and found both the cause and cure of the problem.

The solution I've seen on this mailing list is to reboot and run the
repair tool from the CD. All well and good for desktop users but I'm
working on a server which I don't like to casually reboot. Also, since I
didn't know the cause of the problem, I was worried that the system
might not come back up if I rebooted.

I suspected a corrupted YaST file so I used:

rpm -qa | egrep -i yast | xargs -i rpm --verify {}

which verifies all the installed packages named *yast*. For
completeness, you'd want to do that to full dependency tree.

That test came back clean so if RPM could be trusted, the problem was
not in the YaST installation but somewhere else.

I ran

strace yast2 2>&1 | tee /tmp/yast_trace.txt

to see if there was any problems detected by watching system calls. I've
needed to do this when debugging problems with Apache silently dying,
traced back to missing shared libraries.

That got me nowhere, but using

file `which yast2`

I found that yast2 is just a bash script; at the top of the script
there's a call to load some common functions:

. /usr/lib/YaST2/bin/yast2-funcs

which contains the tests for ncurses and qt. Now we're getting somewhere.

The key parts of yast2-func are the tests

/usr/bin/ldd "/usr/lib/YaST2/plugin/libpy2ncurses.so.2" \
| grep "=> not found"

/usr/bin/ldd "/usr/lib/YaST2/plugin/libpy2qt.so.2" \
| grep "=> not found"

which showed that these libraries couldn't find libcurl.so.2.

It turns out that I had updated curl recently and apparently
/usr/lib/libcurl.so.2 disappeared in the process. I reverted my curl
upgrade and as if by magic YaST started working again.

Problem solved, no reboot required.

-- Bob

< Previous Next >
Follow Ups