[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