codice:
Ora ci occorre uno script che dato come argomento un nome di
pacchetto ci restituisca le dipendenze dagli altri...
Lo script prendera' uno ad uno i pacchetti li scomprimera' cerchera'
all'interno la presenza di binari compilati linkati siano essi
eseguibili o librerie a loro volta e li testera' con il comando ldd,
cerchera' poi nei vari pacchetti scorrendo i file MANIFEST e
MANIFESTLINK chi fornisce quelle librerie e creera' una lista
ordinata...
Lo script che useremo si chiamera' "pkgdep.sh" ed e' questo:


#!/bin/bash 
#copyleft 2004 Pierluigi Previtali bashing for fun
#pkgdep.sh
PACK=$(echo "$(basename $1)" | sed 's/.tgz//g')
W_DIR="./"
CHECK_PATH="./$PACK"
LOG_FILE="/tmp/$PACK"
TMP_CHECK="/tmp/TmP_ChEcK"
MANIFEST_FILE="/tmp/MANIFEST"
MANIFEST_LINK="/tmp/MANIFESTLINK"
mkdir "$CHECK_PATH"
tar xvzf $1 -C $CHECK_PATH &> /dev/null
RESULTS="$(find ${CHECK_PATH}/* -type f -perm +111 -xdev -print| \
	    xargs file |grep ELF|awk '{print $1 }'|sed 's/://g')"
for i in $RESULTS; do
output="`ldd \"$i\" 2> /dev/null | \
		cut -d' ' -f1 | sed -e 's/^[[:space:]*]//'`"
NOT_FOUND_LIST=""
for k in $output ; do
k="$(basename $k)"
cat $MANIFEST_FILE | awk '
BEGIN {
  starting = 1
}

/^\|\|   Package:  / {
  if( starting == 1 )
    starting = 0
  else
    printf( "\n" )
  printf( "%s ", $3 )
}  

/^[-bcdlps][-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT][[:space:]]/ {
  printf( "%s ", $6 )
}  

END {
  printf( "\n" )
}  
' | fgrep "${k}" | cut -d' ' -f1 | grep -v "${PACK}" | tee -a $LOG_FILE > $TMP_CHECK

TEST_FILE=$(cat $TMP_CHECK)
if [ -z "$TEST_FILE" ]; then
#inner loop	
	cat $MANIFEST_LINK | awk '
BEGIN {
  starting = 1
}

/^\|\|   Package:  / {
  if( starting == 1 )
    starting = 0
  else
    printf( "\n" )
  printf( "%s ", $3 )
}  

/^[-bcdlps][-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT][[:space:]]/ {
  printf( "%s ", $6 )
}  

END {
  printf( "\n" )
}  
'| fgrep "${k}"| cut -d' ' -f1 |sort |uniq |\
sed 's/\/mnt\/cdrom\/slackware/./g' \
| grep -v "${PACK}" | tee -a $LOG_FILE > $TMP_CHECK

TEST_FILE=$(cat $TMP_CHECK)
if [ -z "$TEST_FILE" ]; then
	NOT_FOUND_LIST="$NOT_FOUND_LIST $k"
fi
#inner loop
fi
done
done
REALLY_NOT=$(echo "$NOT_FOUND_LIST"| grep -v linux-gate)
RESULT=$(cat $LOG_FILE | sort | uniq)

echo -e "\n\
++========================================\n\
||\n\
||   Package:  $(basename $1)\n\
||\n\
++========================================" 

if [  -z "$RESULT" ]; then
	
	echo "No libs deps"
else
	for i in $RESULT ;do
		echo $i
	done
fi
if [ ! -z $REALLY_NOT ]; then
	echo "Not found in any packages: $REALLY_NOT"
fi
echo " "
rm -fr $CHECK_PATH $LOG_FILE $TMP_CHECK &> /dev/null
segue...