[devel] list of libraries within binaries (for sale or rent!)
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Окт 8 16:00:26 MSD 2005
On Sat, Oct 08, 2005 at 02:08:42PM +0400, Alexey Tourbin wrote:
> $ head product
> libgcj3.3 /usr/lib/libgcj.so.4.0.0 libgcj3.3-debug /usr/lib/debug/libgcj.so.4.0.0 B A
> libgcj3.3 /usr/lib/libgcj.so.4.0.0 libgcj3.4 /usr/lib/libgcj.so.5.0.0 B A
> libgcj3.3 /usr/lib/libgcj.so.4.0.0 libgcj3.4-debug /usr/lib/debug/libgcj.so.5.0.0 B A
> libgcj3.4 /usr/lib/libgcj.so.5.0.0 libgcj3.3 /usr/lib/libgcj.so.4.0.0 B A
> libgcj3.4 /usr/lib/libgcj.so.5.0.0 libgcj3.3-debug /usr/lib/debug/libgcj.so.4.0.0 B A
> libgcj3.4 /usr/lib/libgcj.so.5.0.0 libgcj3.4-debug /usr/lib/debug/libgcj.so.5.0.0 B A
> libinn /usr/lib/libstorage.so.2.0.0 inn /usr/bin/nnrpd B ACTIVE
> libinn /usr/lib/libstorage.so.2.0.0 inn /usr/bin/tdx-util B ACTIVE
> libfreewrl /usr/lib/libFreeWRLFunc.so freewrl /usr/lib/perl5/vendor_perl/i386-linux/auto/VRML/VRMLFunc/VRMLFunc.so D AC_LastDuration
> libfreewrl /usr/lib/libFreeWRLFunc.so freewrl /usr/lib/perl5/vendor_perl/i386-linux/auto/VRML/VRMLFunc/libFreeWRLFunc.so D AC_LastDuration
> $
>
> Ну ясно, что получается. Слева -- системная библиотека, справа --
> бинарь (возможно, другая системная библиотека), которая предоставляет
> такой же символ.
Теперь ничего не стоит получить список бинарей, которые подозреваются
в том, что статически слинкованы с библиотеками.
$ cut -f2,4 product |sort |uniq -cd >suspect
$ du -hs suspect
816K suspect
$ head suspect
51 /lib/libaal-1.0.so.5.0.0 /lib/libaal-minimal.so.0.0.0
2 /lib/libaal-1.0.so.5.0.0 /usr/lib/libgift.so.0.0.0
2 /lib/libaal-1.0.so.5.0.0 /usr/lib/libmpfc-1.3.5.so
51 /lib/libaal-minimal.so.0.0.0 /lib/libaal-1.0.so.5.0.0
4 /lib/libanl-2.3.5.so /usr/lib/debug/libanl-2.3.5.so
12 /lib/libattr.so.1.1.0 /lib/libc-2.3.5.so
12 /lib/libattr.so.1.1.0 /usr/lib/debug/libc-2.3.5.so
2 /lib/libattr.so.1.1.0 /usr/lib/libncurses.so.5.4
24 /lib/libbz2.so.1.0.3 /usr/lib/R/bin/R.bin
24 /lib/libbz2.so.1.0.3 /usr/lib/R/bin/libR.so
$
В первой колонке здесь число совпадающих символов, которые предоставляют
два эти (во второй и тертьей колонке) бинаря. `uniq -d' исключает
одиночные случайные совпадения.
Опять проверяем, где у нас zlib.
$ fgrep libz.so suspect
17 /lib/libz.so.1.2.3 /usr/bin/Xvnc
2 /lib/libz.so.1.2.3 /usr/bin/pose
29 /lib/libz.so.1.2.3 /usr/bin/xmule
41 /lib/libz.so.1.2.3 /usr/games/scorched3d
41 /lib/libz.so.1.2.3 /usr/lib/OpenOffice.org1.1.4/program/libmozz.so
48 /lib/libz.so.1.2.3 /usr/lib/R/bin/R.bin
48 /lib/libz.so.1.2.3 /usr/lib/R/bin/libR.so
31 /lib/libz.so.1.2.3 /usr/lib/erlang/erts-5.4/bin/beam
31 /lib/libz.so.1.2.3 /usr/lib/erlang/erts-5.4/bin/beam.shared
13 /lib/libz.so.1.2.3 /usr/lib/firefox-1.0.6/install/mozilla-installer-bin
13 /lib/libz.so.1.2.3 /usr/lib/firefox-1.0.6/mozilla-installer-bin
21 /lib/libz.so.1.2.3 /usr/lib/j2se1.3-sun/jre/lib/i386/libzip.so
19 /lib/libz.so.1.2.3 /usr/lib/libphysfs-1.0.so.0.0.0
2 /lib/libz.so.1.2.3 /usr/lib/perl5/vendor_perl/i386-linux/auto/Math/Pari/Pari.so
19 /usr/lib/libphysfs-1.0.so.0.0.0 /lib/libz.so.1.2.3
$
Следущие две строчки:
19 /lib/libz.so.1.2.3 /usr/lib/libphysfs-1.0.so.0.0.0
19 /usr/lib/libphysfs-1.0.so.0.0.0 /lib/libz.so.1.2.3
означают, что нельзя определить, кто из библиотек "главнее", поэтому
показано и так и сяк. На самом деле ясно, что libphysfs статически
слинкован с libz, а не наоборот.
Вот довольно актуальный экстракт из списка.
$ awk '$1>9&&$2~"^/lib/"&&$3~"bin/"' suspect
24 /lib/libbz2.so.1.0.3 /usr/lib/R/bin/R.bin
24 /lib/libbz2.so.1.0.3 /usr/lib/R/bin/libR.so
25 /lib/libc-2.3.5.so /usr/bin/wine-kthread
68 /lib/libdb-4.2.so /usr/bin/berkeley_db_svc
46 /lib/libdb-4.2.so /usr/bin/db_printlog
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_archive
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_checkpoint
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_deadlock
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_dump
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_load
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_printlog
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_recover
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_stat
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_upgrade
112 /lib/libdb-4.2.so /usr/lib/kdevbdb/bin/db_verify
541 /lib/libdb-4.2.so /usr/sbin/mysqld
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_archive
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_checkpoint
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_deadlock
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_dump
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_load
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_printlog
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_recover
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_stat
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_upgrade
76 /lib/libdb-4.3.so /usr/lib/kdevbdb/bin/db_verify
491 /lib/libdb-4.3.so /usr/sbin/mysqld
14 /lib/libgcc_s.so.1 /usr/bin/glaxium
14 /lib/libgcc_s.so.1 /usr/lib/j2se1.3-sun/bin/i386/native_threads/java_vm
14 /lib/libgcc_s.so.1 /usr/lib/j2se1.3-sun/jre/bin/i386/native_threads/java_vm
20 /lib/libglib-1.2.so.0.0.10 /usr/bin/sfidl
14 /lib/libhistory.so.4.3 /bin/bash
44 /lib/libhistory.so.4.3 /usr/bin/m68k-palmos-gdb
27 /lib/libhistory.so.4.3 /usr/sbin/asterisk
13 /lib/libiptables.so.0.0 /usr/sbin/fetchipac
29 /lib/libiptc.so.0.0 /usr/sbin/fetchipac
13 /lib/liblvm-10.so.1.0 /usr/sbin/lvm
21 /lib/libnetlink.so /sbin/tc
19 /lib/libnfsidmap.so.0.1.0 /sbin/rpc.idmapd
16 /lib/libnss_winbind.so /usr/bin/net
16 /lib/libnss_winbind.so /usr/bin/nmblookup
16 /lib/libnss_winbind.so /usr/bin/ntlm_auth
16 /lib/libnss_winbind.so /usr/bin/pdbedit
32 /lib/libnss_winbind.so /usr/bin/rpcclient
16 /lib/libnss_winbind.so /usr/bin/smbcacls
16 /lib/libnss_winbind.so /usr/bin/smbclient
16 /lib/libnss_winbind.so /usr/bin/smbcontrol
16 /lib/libnss_winbind.so /usr/bin/smbcquotas
32 /lib/libnss_winbind.so /usr/bin/smbfilter
16 /lib/libnss_winbind.so /usr/bin/smbget
16 /lib/libnss_winbind.so /usr/bin/smbmount
16 /lib/libnss_winbind.so /usr/bin/smbpasswd
16 /lib/libnss_winbind.so /usr/bin/smbsh
16 /lib/libnss_winbind.so /usr/bin/smbspool
16 /lib/libnss_winbind.so /usr/bin/smbstatus
16 /lib/libnss_winbind.so /usr/bin/smbtree
16 /lib/libnss_winbind.so /usr/bin/smbwrapper.so
16 /lib/libnss_winbind.so /usr/bin/testparm
16 /lib/libnss_winbind.so /usr/bin/testprns
16 /lib/libnss_winbind.so /usr/bin/vfstest
16 /lib/libnss_winbind.so /usr/bin/wbinfo
16 /lib/libnss_winbind.so /usr/sbin/nmbd
16 /lib/libnss_winbind.so /usr/sbin/smbd
16 /lib/libnss_winbind.so /usr/sbin/swat
16 /lib/libnss_winbind.so /usr/sbin/winbindd
18 /lib/libnss_wins.so /usr/bin/gkrellm
1718 /lib/libnss_wins.so /usr/bin/net
1328 /lib/libnss_wins.so /usr/bin/nmblookup
1455 /lib/libnss_wins.so /usr/bin/ntlm_auth
1279 /lib/libnss_wins.so /usr/bin/pdbedit
3436 /lib/libnss_wins.so /usr/bin/rpcclient
1718 /lib/libnss_wins.so /usr/bin/smbcacls
1718 /lib/libnss_wins.so /usr/bin/smbclient
1284 /lib/libnss_wins.so /usr/bin/smbcontrol
1718 /lib/libnss_wins.so /usr/bin/smbcquotas
3436 /lib/libnss_wins.so /usr/bin/smbfilter
1718 /lib/libnss_wins.so /usr/bin/smbget
1718 /lib/libnss_wins.so /usr/bin/smbmount
1718 /lib/libnss_wins.so /usr/bin/smbpasswd
1228 /lib/libnss_wins.so /usr/bin/smbsh
1718 /lib/libnss_wins.so /usr/bin/smbspool
1284 /lib/libnss_wins.so /usr/bin/smbstatus
1718 /lib/libnss_wins.so /usr/bin/smbtree
1724 /lib/libnss_wins.so /usr/bin/smbwrapper.so
30 /lib/libnss_wins.so /usr/bin/sweep
34 /lib/libnss_wins.so /usr/bin/tdbbackup
30 /lib/libnss_wins.so /usr/bin/tdbdump
30 /lib/libnss_wins.so /usr/bin/tdbtool
1279 /lib/libnss_wins.so /usr/bin/testparm
1233 /lib/libnss_wins.so /usr/bin/testprns
1718 /lib/libnss_wins.so /usr/bin/vfstest
1279 /lib/libnss_wins.so /usr/bin/wbinfo
12 /lib/libnss_wins.so /usr/bin/xemacs-mule
12 /lib/libnss_wins.so /usr/bin/xemacs-mule-nextaw
12 /lib/libnss_wins.so /usr/bin/xemacs-nox-mule
1718 /lib/libnss_wins.so /usr/sbin/nmbd
14 /lib/libnss_wins.so /usr/sbin/pppd
1718 /lib/libnss_wins.so /usr/sbin/smbd
1718 /lib/libnss_wins.so /usr/sbin/swat
1718 /lib/libnss_wins.so /usr/sbin/winbindd
22 /lib/libpopt.so.0.0.0 /usr/bin/botti
22 /lib/libpopt.so.0.0.0 /usr/bin/irssi
22 /lib/libpopt.so.0.0.0 /usr/bin/orbit-idl
13 /lib/libproc-3.2.5.so /usr/bin/free
11 /lib/libproc-3.2.5.so /usr/bin/top
11 /lib/libproc-3.2.5.so /usr/bin/vmstat
65 /lib/libpthread-0.10.so /usr/bin/wine-kthread
30 /lib/libreadline.so.4.3 /bin/bash
17 /lib/libreadline.so.4.3 /usr/bin/gdb
16 /lib/libreadline.so.4.3 /usr/bin/lftp
387 /lib/libreadline.so.4.3 /usr/bin/m68k-palmos-gdb
30 /lib/libreadline.so.4.3 /usr/sbin/asterisk
17 /lib/libz.so.1.2.3 /usr/bin/Xvnc
29 /lib/libz.so.1.2.3 /usr/bin/xmule
48 /lib/libz.so.1.2.3 /usr/lib/R/bin/R.bin
48 /lib/libz.so.1.2.3 /usr/lib/R/bin/libR.so
31 /lib/libz.so.1.2.3 /usr/lib/erlang/erts-5.4/bin/beam
31 /lib/libz.so.1.2.3 /usr/lib/erlang/erts-5.4/bin/beam.shared
$
> Нужно теперь подумать, что делать с этим списком.
> Я бы его кому-нибудь продал. Всего ничего, доллар за мегабайт. :)
Список suspect тоже продается. ;)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20051008/b75f9ef6/attachment-0001.bin>
Подробная информация о списке рассылки Devel