On Sat, Oct 08, 2005 at 04:00:26PM +0400, Alexey Tourbin wrote: > Теперь ничего не стоит получить список бинарей, которые подозреваются > в том, что статически слинкованы с библиотеками. > > $ 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' исключает > одиночные случайные совпадения. Получен полный product (def x def). Кто в танке, можно смотреть: /raid/at/qa/qa-robot/dup_elf_symbols mash:~at/.qa-robot/dup_elf_symbols/product mash:~at/.qa-robot/dup_elf_symbols/suspect То есть теперь можно искать совпадения символов между двумя произвольно взятыми elf'ами (здесь есть много тонкостей, но в целом утверждение верно). Большое число совпадающих символов чаще всего означает дублирование кода.