You are not logged in.
When readline5 came out I decided to write a quick shell script to find any binary that references readline4. Then I generalized it:
#!/bin/bash
# 2004/08/22 K. Piche Find missing library references.
ifs=$IFS
IFS=':'
libdirs="/lib:/usr/lib:/usr/X11R6/lib:/opt/gnome/lib:/opt/qt/lib:/opt/mozilla/lib/mozilla-1.7:/opt/kde/lib"
extras=
# Check ELF binaries in the PATH and specified dir trees.
for tree in $PATH $libdirs $extras
do
echo DIR $tree
# Get list of files in tree.
files=$(find $tree -type f)
IFS=$ifs
for i in $files
do
if [ `file $i | grep -c 'ELF'` -ne 0 ]; then
# Is an ELF binary.
if [ `ldd $i 2>/dev/null | grep -c 'not found'` -ne 0 ]; then
# Missing lib.
echo "$i:"
ldd $i 2>/dev/null | grep 'not found'
fi
fi
done
done
exit
I successfully used it to find readline4 usage by guile and jack, and other older library references in other packages. Hope the devs or somebody finds it useful. And yeah it could pull the lib dirs from ld.so.conf or search the whole system but it is quick and dirty...
PS. Without the /dev/null redirects ldd reports tons of libraries without the exec bit set. Take it out if you want to see that stuff.
Offline
so simple and SOOO USEFULL!!!!!!!
thanx a lot, for this script :-)
i detected also some more trouble:
e.g.:
/usr/bin/xml2ps:
libgtkmm-2.0.so.1 => not found
libgdkmm-2.0.so.1 => not found
libatkmm-1.0.so.1 => not found
libpangomm-1.0.so.1 => not found
libglibmm-2.0.so.1 => not found
/usr/bin/passepartout:
libgtkmm-2.0.so.1 => not found
libgdkmm-2.0.so.1 => not found
libatkmm-1.0.so.1 => not found
libpangomm-1.0.so.1 => not found
libglibmm-2.0.so.1 => not found
/opt/kde/bin/khangman:
libknewstuff.so.1 => not found
/opt/kde/bin/kpalmdoc:
libreadline.so.4 => not found
/opt/kde/bin/kpilot:
libreadline.so.4 => not found
/opt/kde/bin/kstars:
libknewstuff.so.1 => not found
/opt/kde/bin/klettres:
libknewstuff.so.1 => not found
/opt/kde/bin/kpilotDaemon:
libreadline.so.4 => not found
/opt/kde/bin/korganizer:
libknewstuff.so.1 => not found
libknewstuff.so.1 => not found
/opt/gnome/bin/gnome-pilot-make-password:
libreadline.so.4 => not found
libreadline.so.4 => not found
libreadline.so.4 => not found
/opt/gnome/bin/gpilot-install-file:
libreadline.so.4 => not found
libreadline.so.4 => not found
libreadline.so.4 => not found
/opt/gnome/bin/gpilotd-session-wrapper:
libreadline.so.4 => not found
libreadline.so.4 => not found
libreadline.so.4 => not found
/opt/gnome/bin/ssconvert:
libssl.so.0.9.6 => not found
libcrypto.so.0.9.6 => not found
/opt/gnome/bin/gnumeric:
libssl.so.0.9.6 => not found
libcrypto.so.0.9.6 => not found
/opt/gnome/bin/gpilotd-control-applet:
libreadline.so.4 => not found
libreadline.so.4 => not found
libreadline.so.4 => not found
/usr/lib/xine/plugins/xineplug_inp_dvdnav.so:
libdvdnav.so.1 => not found
libdvdread.so.2 => not found
libxineutils.so.0 => not found
libxine.so.0 => not found
/usr/lib/ruby/1.8/i686-linux/readline.so:
libreadline.so.4 => not found
/usr/lib/newpg/gpg-protect-tool:
libgcrypt.so.1 => not found
/usr/lib/avifile-0.7/xvid.so:
libxvidcore.so.2 => not found
/usr/lib/libpisock.so.8.0.5:
libreadline.so.4 => not found
-> for sure broken:
jack, pilot-link, gnumeric, ruby, passepartout, xine-dvdnav, kde (games, edu, pim, maybe lib and others)
the script is still running - takes long to check 5GB of bins :-)
EDIT: finished - list updated - going to post bugs
The impossible missions are the only ones which succeed.
Offline
posted bugs 1337 - 1341
The impossible missions are the only ones which succeed.
Offline
Glad you like it! Hopefully someone with ALL packages installed can run it...
I thought of adding a missing library check to namcap but I don't know python so I gave up.
Offline
I have a similar script that I run on the actual repos. I will use yours as a reference to see if I need to add anything else to mine.
I have discovered that all of mans unhappiness derives from only one source, not being able to sit quietly in a room
- Blaise Pascal
Offline