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 тоже продается. ;)