From a0804cd5b1d3230d3446c63260bdba1b3f651627 Mon Sep 17 00:00:00 2001 From: "root@eldersoftheinternet /dev/pts/26 141.14.28.170" Date: Tue, 28 Jun 2016 10:39:32 +0200 Subject: [PATCH 1/5] tiny bang --- ldd_bee/ldd_bee.pl | 107 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 ldd_bee/ldd_bee.pl diff --git a/ldd_bee/ldd_bee.pl b/ldd_bee/ldd_bee.pl new file mode 100755 index 0000000..ead6414 --- /dev/null +++ b/ldd_bee/ldd_bee.pl @@ -0,0 +1,107 @@ +#!/usr/bin/perl -w +use strict; +use Data::Dumper;$Data::Dumper::Sortkeys=1; + +my %ldd; +for (@ARGV) { + @_=`ldd $ARGV[0]`; + chomp @_; + map {/=>\s(\S+)/ && $ldd{$1}++} @_; +} + +#print Dumper(\%ldd); + +#my @libs = sort grep {/\S/} map {/=>\s(\S+)/ && $1} keys %ldd; +my @libs = sort keys %ldd; + +#print Dumper(\@libs); +my $k; + +my %BEEQUERY; + +for my $bee () { + next unless -e "$bee/CONTENT"; + $bee=~/.*\/(.*)/; + my $b = $1; + open I,'<',"$bee/CONTENT" or die; + while () { + if (m{:file=(.*)}) { + $_=$1; + s{//.*}{}; #unsymlink + push @{$BEEQUERY{$_}},$b; + } + } +} + +my %bee; +for my $l (@libs) { + print "# $l\n"; + if ( exists( $BEEQUERY{$l}) ) { + map { $bee{$_}{$l}++ } @{$BEEQUERY{$l}}; + } + else { + die "## $l not found in any bee file\n"; + } +} +my $b = 0; +my $lc = 0; +for my $bee ( sort keys %bee ) { + print "\n"; + my ($beefile) = ; + my $mt = (stat($beefile))[9]; + print "PKGALLPKG[$b]=$bee\n"; + print " BEEFILE[$b]=$beefile\n"; + printf " BEETIME[$b]=%d # %s (%s)\n",$mt,years(time-$mt,2),scalar(localtime($mt)); + for my $lib ( sort keys %{$bee{$bee}} ) { + print " BEELIB[$lc]=$lib\n"; + $lc++; + } + $b++; +} + +sub years { + my $s = shift; + my $n = shift; + + if ($s == 0) { + return '0 secs'; + } + my @T=(); + my $t = int($s/(365*60*60*24)); + + push @T, ($t > 0) ? $t : 0; # months + $s -= $t*int(365*60*60*24); + + $t = int($s/(30.42*60*60*24)); + push @T, ($t > 0) ? $t : 0; # months + $s -= $t*int(30.42*60*60*24); + + $t = int($s/(60*60*24)); + push @T, ($t > 0) ? $t : 0; # days + $s -= $t*(60*60*24); + + $t = int($s/(60*60)); + push @T, ($t > 0) ? $t : 0; # hrs + $s -= $t*(60*60); + + $t = int($s/(60)); + push @T, ($t > 0) ? $t : 0; # min + $s -= $t*60; + + $t = int($s); + push @T, ($t > 0) ? $t : 0; # sec + + my @L; + for my $x ('yrs','mon','days','hrs','min','secs') { + my $y = shift @T; + if ($y != 0) { + if (defined($n)) { + $n--; + last if ($n < 0); + } + push @L,"$y $x"; + } + } + return join(' ',@L); +} + From b0b37b057461e07490662f6f864539df53b960fd Mon Sep 17 00:00:00 2001 From: "root@eldersoftheinternet /dev/pts/26 141.14.28.170" Date: Tue, 28 Jun 2016 10:41:11 +0200 Subject: [PATCH 2/5] cleanup --- ldd_bee/ldd_bee.pl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ldd_bee/ldd_bee.pl b/ldd_bee/ldd_bee.pl index ead6414..57d65ca 100755 --- a/ldd_bee/ldd_bee.pl +++ b/ldd_bee/ldd_bee.pl @@ -9,12 +9,8 @@ map {/=>\s(\S+)/ && $ldd{$1}++} @_; } -#print Dumper(\%ldd); - -#my @libs = sort grep {/\S/} map {/=>\s(\S+)/ && $1} keys %ldd; my @libs = sort keys %ldd; -#print Dumper(\@libs); my $k; my %BEEQUERY; From f2bcdced656d5d36a888cf4520d7a96fce374427 Mon Sep 17 00:00:00 2001 From: Peter Marquardt Date: Tue, 28 Jun 2016 11:38:28 +0200 Subject: [PATCH 3/5] added readme stuff --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README.md b/README.md index e5d14ba..2760e24 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,29 @@ Tool von Donald. ### thomas_libusage Tool von mir. + +### ldd_bee + +## usage +``` +/project/admin/tools/ldd_bee.pl executable [executable ... ] +``` + +## output + +``` +# /lib/libXXX.so.N +# /lib/libYYY.so.M +# /usr/lib/libZZZ.so.U +PKGALLPKG[0]=beepkg-1.0.6-3.x86_64 + BEEFILE[0]=/usr/share/bee/beepkg-1.0.6-3.x86_64/beepkg--1.0.6-3.bee + BEETIME[0]=1394791086 # 2 yrs 3 mon (Fri Mar 14 10:58:06 2014) + BEELIB[0]=/usr/lib/libXXX.so.1.0 + +PKGALLPKG[1]=beedep-0.98.5-0.x86_64 + BEEFILE[1]=/usr/share/bee/beedep-0.98.5-0.x86_64/beedep-0.98.5-0.bee + BEETIME[1]=1417173467 # 1 yrs 6 mon (Fri Nov 28 12:17:47 2014) + BEELIB[1]=/usr/lib/libYYY.so.6 + +``` + From e9033fc58e492259f9e83e97adeb3375dafdf24a Mon Sep 17 00:00:00 2001 From: Peter Marquardt Date: Tue, 28 Jun 2016 11:38:28 +0200 Subject: [PATCH 4/5] added readme stuff --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README.md b/README.md index e5d14ba..a64aff6 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,29 @@ Tool von Donald. ### thomas_libusage Tool von mir. + +### ldd_bee + +#### usage +``` +/project/admin/tools/ldd_bee.pl executable [executable ... ] +``` + +#### output + +``` +# /lib/libXXX.so.N +# /lib/libYYY.so.M +# /usr/lib/libZZZ.so.U +PKGALLPKG[0]=beepkg-1.0.6-3.x86_64 + BEEFILE[0]=/usr/share/bee/beepkg-1.0.6-3.x86_64/beepkg--1.0.6-3.bee + BEETIME[0]=1394791086 # 2 yrs 3 mon (Fri Mar 14 10:58:06 2014) + BEELIB[0]=/usr/lib/libXXX.so.1.0 + +PKGALLPKG[1]=beedep-0.98.5-0.x86_64 + BEEFILE[1]=/usr/share/bee/beedep-0.98.5-0.x86_64/beedep-0.98.5-0.bee + BEETIME[1]=1417173467 # 1 yrs 6 mon (Fri Nov 28 12:17:47 2014) + BEELIB[1]=/usr/lib/libYYY.so.6 + +``` + From dcb3ae016aefbb10be31542f9392f921ec3a3ba7 Mon Sep 17 00:00:00 2001 From: Peter Marquardt Date: Tue, 28 Jun 2016 11:44:10 +0200 Subject: [PATCH 5/5] docs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a64aff6..866bcea 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ Tool von mir. ### ldd_bee +Dump all `bee` packages, which contain `.so` libs used by executable. + #### usage ``` /project/admin/tools/ldd_bee.pl executable [executable ... ]