#!/bin/bash # Find dependency of files in /usr/lib and /usr/bin of a port by looking at # the output of ldd # # Johannes Winkelmann # awk stuff by Juergen Daubert version=1.9.1 pkgdb="/var/lib/pkg/db" export LD_LIBRARY_PATH=/lib:/usr/lib:/lib32:/usr/lib32:$LD_LIBRARY_PATH function printDep() { deps=() files=(`awk -v p="$1" -v RS="" '$1==p' $pkgdb | awk '/(sbin|bin|lib|lib32|libexec)\//'`) for f in ${files[*]}; do if [ -f "/$f" ]; then deps=(${deps[*]} `ldd /$f 2> /dev/null | awk '!/(linux-gate)|( dynamic)|(not found)/ {print $3}'`) fi done deps=(`for t in ${deps[*]}; do realpath $t; done|sort|uniq`) for d in ${deps[*]}; do awk -v s="$d" -v RS="" '$0 ~ substr(s,2) {print $1}' $pkgdb done } if [ "$1" = "" ]; then echo "Usage: ${0##*/} " exit -1 fi pkgName=${1##*/} prt-get isinst $pkgName &> /dev/null if [ $? -ne 0 ]; then echo "$pkgName is not installed" exit -3 fi depPkg=`printDep $pkgName |sort|uniq|grep -v "\<$pkgName\>"` for p in $depPkg; do echo -n $p coll=`prt-get printf "%p" --filter=$p|sed -e 's|.*/||'` if [ "$coll" != "" ]; then echo -n " ($coll)" fi echo "" done|sort -k 2