#!/bin/sh
#################################################################
# This script is a very basic method of testing the libraries
# and executables installed in certain locations for missing
# libraries / dependencies
# This is totally amatuer, but maybe useful. As a result of
# running this script I found one or two issues on my machine
# which had been running its O/S for 18mths and having had
# loads of packages installed from source over that time.
#################################################################
# Set the locations of the files to contain the search results
# ldd1 is a staging area eg /tmp/ldd1.txt
# ldd2 is the actual results eg /tmp/ldd2.txt
# EDIT THIS
ldd1="/tmp/ldd1.txt"
ldd2="/tmp/ldd2.txt"
# Firefox.bin is run from firefox which exports the lib path
# For ldd to work correctly the same thing needs to happen.
# Thanks to Pat Volkerding for pointing this out :)
# Add any other exports needed below
# EDIT THIS
LD_LIBRARY_PATH=/usr/lib/firefox
export LD_LIBRARY_PATH
##################################################################
# Should not need to edit the below for it to work.
# No debugging
set +x
# Reset the counter
count=0
echo
echo "This may take several minutes..."
echo
# Remove old files if they exist
if [ -e $ldd1 ]
then
rm $ldd1
fi
if [ -e $ldd2 ]
then
rm $ldd2
fi
# Loop through system directories, test files to see if they are executable or directories.
# If they are directories, then cd to them.
# If they are executable then ldd them and send the output to $ldd1
for i in /bin/* /lib/* /sbin/* /usr/lib/* /usr/sbin/* /usr/local/bin/* /usr/local/lib/* /usr/local/sbin/* /usr/X11R6/bin/* /usr/X11R6/lib/* /opt/kde/bin/* /opt/kde/lib/*; do
if [ -d $i ]
then
cd $i;
for ii in *; do
if [ -x $ii -a -f $ii ]
then
echo $ii >> $ldd1; ldd $ii | grep "not found" >> $ldd1;
((count=count+1));
printf "\r%d " $count;
fi; done
elif [ -x $i -a -f $i ]
then
echo $i >> $ldd1; ldd $i | grep "not found" >> $ldd1;
((count=count+1));
printf "\r%d " $count;
fi; done
# Export the result to screen along with suggestions
echo
cat $ldd1 | grep -B1 "not found" >> $ldd2
echo
cat $ldd2
echo
echo "Done, results stored in $ldd2 and displayed above"
echo
echo "You may want to search the installed packages to find where a file has come from"
echo "for i in /var/log/packages/*; do cat \$1 | grep filename; done"
echo