Chris@378
|
1 #!/bin/bash
|
Chris@378
|
2
|
Chris@378
|
3 target=$1
|
Chris@378
|
4
|
Chris@378
|
5 if [ ! -f "$target" ]; then
|
Chris@378
|
6 echo "Usage: $0 target-executable"
|
Chris@378
|
7 exit 1
|
Chris@378
|
8 fi
|
Chris@378
|
9
|
Chris@378
|
10 pfile=/tmp/packages_$$
|
Chris@378
|
11 rfile=/tmp/redundant_$$
|
Chris@378
|
12
|
Chris@378
|
13 trap "rm -f $pfile $rfile" 0
|
Chris@863
|
14 echo 1>&2
|
Chris@378
|
15
|
Chris@460
|
16 ldd "$target" | awk '{ print $3; }' | grep '^/' | while read lib; do
|
Chris@378
|
17 if test -n "$lib" ; then
|
Chris@378
|
18 dpkg-query -S "$lib"
|
Chris@378
|
19 fi
|
Chris@378
|
20 done | grep ': ' | awk -F: '{ print $1 }' | sort | uniq > $pfile
|
Chris@378
|
21
|
Chris@863
|
22 echo "Packages providing required libraries:" 1>&2
|
Chris@863
|
23 cat $pfile 1>&2
|
Chris@863
|
24 echo 1>&2
|
Chris@378
|
25
|
Chris@378
|
26 for p in `cat $pfile`; do
|
Chris@460
|
27 echo Looking at $p 1>&2
|
Chris@378
|
28 apt-cache showpkg "$p" | grep '^ ' | grep ',' | awk -F, '{ print $1; }' | \
|
Chris@378
|
29 while read d; do
|
Chris@378
|
30 if grep -q '^'$d'$' $pfile; then
|
Chris@865
|
31 echo $p
|
Chris@378
|
32 fi
|
Chris@378
|
33 done
|
Chris@378
|
34 done | sort | uniq > $rfile
|
Chris@378
|
35
|
Chris@863
|
36 echo "Packages that can be eliminated because other packages depend on them:" 1>&2
|
Chris@863
|
37 cat $rfile 1>&2
|
Chris@863
|
38 echo 1>&2
|
Chris@378
|
39
|
Chris@2402
|
40 cat $pfile $rfile | sort | uniq -u | sed 's/$/,/' | fmt -1000 | sed 's/^/Depends: /' | sed 's/,$/, libc6/' | sed 's/ libjack0,//'
|
Chris@378
|
41
|
Chris@863
|
42
|