[devel] Оверхед в зависимостях

Igor Zubkov icesik на mail.ru
Пн Мар 19 14:18:04 MSK 2007


Привет, Всем!

Пока тут likostis@ ругается с sbolshakov@ по поводу mar и propagator, я тут 
покопался в очередной раз в rpmlint. В инкаминг уже ушёл свежий 
rpmlint-0.79-alt1 со следующими изменениями:
* Вск Мар 18 2007 Igor Zubkov <icesik на altlinux.org> 0.79-alt1

- 0.71 -> 0.79
- update Patch0 for old rpm
- add manpage
- enable all checks in rpmlint

Итого, первое что я поймал интересного...
[icesik на iceberg ice]$ [icesik на iceberg 20070318]$ cat 
unused-direct-shlib-dependency.installed
W: liberuby 
unused-direct-shlib-dependency /usr/lib/liberuby.so.1.0.3 /lib/libdl.so.2
W: liberuby 
unused-direct-shlib-dependency /usr/lib/liberuby.so.1.0.3 /lib/libcrypt.so.1
W: liberuby 
unused-direct-shlib-dependency /usr/lib/liberuby.so.1.0.3 /lib/libm.so.6
W: libportaudio 
unused-direct-shlib-dependency /usr/lib/libportaudio.so.0.0.18 /lib/libm.so.6
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvutils-4.0.so /usr/lib/libxplc-0.3.so
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvutils-4.0.so /usr/lib/libxplc-cxx-0.3.so
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvutils-4.0.so /lib/libdl.so.2
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvstreams-4.0.so /usr/lib/libxplc-0.3.so
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvstreams-4.0.so /lib/libdl.so.2
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvbase-4.0.so /usr/lib/libxplc-0.3.so
W: libwvstreams 
unused-direct-shlib-dependency /usr/lib/libwvbase-4.0.so /lib/libdl.so.2
W: libqca 
unused-direct-shlib-dependency /usr/lib/libqca.so.1.0.0 /lib/libpthread.so.0
W: libqca 
unused-direct-shlib-dependency /usr/lib/libqca.so.1.0.0 /lib/libm.so.6
W: libmesa-devel 
unused-direct-shlib-dependency /usr/lib/libGL.so /lib/libm.so.6
W: t1lib 
unused-direct-shlib-dependency /usr/lib/libt1x.so.5.0.2 /usr/lib/libSM.so.6
W: t1lib 
unused-direct-shlib-dependency /usr/lib/libt1x.so.5.0.2 /usr/lib/libICE.so.6
W: t1lib 
unused-direct-shlib-dependency /usr/lib/libt1x.so.5.0.2 /usr/lib/libXext.so.6
W: libmpeg4ip 
unused-direct-shlib-dependency /usr/lib/libmpeg4ip_fposrec.so.0.0.0 /usr/lib/libstdc++.so.6
W: libmpeg4ip 
unused-direct-shlib-dependency /usr/lib/libhttp.so.0.0.0 /usr/lib/libstdc++.so.6
W: libldap 
unused-direct-shlib-dependency /usr/lib/libldap_r-2.2.so.7.0.20 /lib/libkrb5.so.3
W: libldap 
unused-direct-shlib-dependency /usr/lib/libldap_r-2.2.so.7.0.20 /lib/libk5crypto.so.3
W: libldap 
unused-direct-shlib-dependency /usr/lib/libldap_r-2.2.so.7.0.20 /lib/libkrb5support.so.0
W: libldap 
unused-direct-shlib-dependency /usr/lib/libldap_r-2.2.so.7.0.20 /lib/libcom_err.so.2
W: libldap 
unused-direct-shlib-dependency /lib/libldap-2.2.so.7.0.20 /lib/libkrb5.so.3
W: libldap 
unused-direct-shlib-dependency /lib/libldap-2.2.so.7.0.20 /lib/libk5crypto.so.3
W: libldap 
unused-direct-shlib-dependency /lib/libldap-2.2.so.7.0.20 /lib/libkrb5support.so.0
W: libldap 
unused-direct-shlib-dependency /lib/libldap-2.2.so.7.0.20 /lib/libcom_err.so.2
W: libldap 
unused-direct-shlib-dependency /lib/liblber-2.2.so.7.0.20 /lib/libkrb5.so.3
W: libldap 
unused-direct-shlib-dependency /lib/liblber-2.2.so.7.0.20 /lib/libk5crypto.so.3
W: libldap 
unused-direct-shlib-dependency /lib/liblber-2.2.so.7.0.20 /lib/libkrb5support.so.0
W: libldap 
unused-direct-shlib-dependency /lib/liblber-2.2.so.7.0.20 /lib/libcom_err.so.2
W: libldap 
unused-direct-shlib-dependency /lib/liblber-2.2.so.7.0.20 /lib/libresolv.so.2
W: libldap 
unused-direct-shlib-dependency /usr/lib/libslapi-2.2.so.7.0.20 /lib/libkrb5.so.3
W: libldap 
unused-direct-shlib-dependency /usr/lib/libslapi-2.2.so.7.0.20 /lib/libk5crypto.so.3
W: libldap 
unused-direct-shlib-dependency /usr/lib/libslapi-2.2.so.7.0.20 /lib/libkrb5support.so.0
W: libldap 
unused-direct-shlib-dependency /usr/lib/libslapi-2.2.so.7.0.20 /lib/libcom_err.so.2
W: libldap 
unused-direct-shlib-dependency /usr/lib/libslapi-2.2.so.7.0.20 /lib/libresolv.so.2
W: libgpm 
unused-direct-shlib-dependency /usr/lib/libgpm.so.1.19.0 /lib/libm.so.6
W: libungif 
unused-direct-shlib-dependency /usr/lib/libungif.so.4.1.4 /usr/lib/libSM.so.6
W: libungif 
unused-direct-shlib-dependency /usr/lib/libungif.so.4.1.4 /usr/lib/libICE.so.6
W: libxplc 
unused-direct-shlib-dependency /usr/lib/libxplc-cxx-0.3.so /lib/libm.so.6
W: libxplc 
unused-direct-shlib-dependency /usr/lib/libxplc-cxx-0.3.so /lib/libgcc_s.so.1
W: libxplc 
unused-direct-shlib-dependency /usr/lib/libxplc-0.3.so /lib/libm.so.6
W: libxplc 
unused-direct-shlib-dependency /usr/lib/libxplc-0.3.so /lib/libgcc_s.so.1
W: libstartup-notification 
unused-direct-shlib-dependency /usr/lib/libstartup-notification-1.so.0.0.0 /usr/lib/libSM.so.6
W: libstartup-notification 
unused-direct-shlib-dependency /usr/lib/libstartup-notification-1.so.0.0.0 /usr/lib/libICE.so.6
W: libgiblib 
unused-direct-shlib-dependency /usr/lib/libgiblib.so.1.0.6 /usr/lib/libfreetype.so.6
W: libgiblib 
unused-direct-shlib-dependency /usr/lib/libgiblib.so.1.0.6 /lib/libz.so.1
W: libgiblib 
unused-direct-shlib-dependency /usr/lib/libgiblib.so.1.0.6 /lib/libdl.so.2
W: libgiblib 
unused-direct-shlib-dependency /usr/lib/libgiblib.so.1.0.6 /usr/lib/libXext.so.6
W: libgiblib 
unused-direct-shlib-dependency /usr/lib/libgiblib.so.1.0.6 /usr/lib/libX11.so.6
W: libgiblib 
unused-direct-shlib-dependency /usr/lib/libgiblib.so.1.0.6 /lib/libm.so.6
W: libxml++ 
unused-direct-shlib-dependency /usr/lib/libxml++-1.0.so.1.0.4 /lib/libz.so.1
W: libxml++ 
unused-direct-shlib-dependency /usr/lib/libxml++-1.0.so.1.0.4 /lib/libm.so.6
W: libsigc++2.0 
unused-direct-shlib-dependency /usr/lib/libsigc-2.0.so.0.0.0 /lib/libm.so.6
W: libstdc++3.3 
unused-direct-shlib-dependency /usr/lib/libstdc++.so.5.0.7 /lib/libm.so.6
W: libXTrap 
unused-direct-shlib-dependency /usr/lib/libXTrap.so.6.4.0 /usr/lib/libSM.so.6
W: libXTrap 
unused-direct-shlib-dependency /usr/lib/libXTrap.so.6.4.0 /usr/lib/libICE.so.6
W: libopenal 
unused-direct-shlib-dependency /usr/lib/libopenal.so.0.0.8 /usr/lib/libvorbis.so.0
[icesik на iceberg 20070318]$ 

Теперь rpmlint умеет ловить такие вещи:
[icesik на iceberg ~]$ rpm -q libopenal
libopenal-0.0.8-alt1.1
[icesik на iceberg ~]$ rpm -ql libopenal | grep lib
/usr/lib/libopenal.so.0
/usr/lib/libopenal.so.0.0.8
[icesik на iceberg ~]$ ldd -u -r /usr/lib/libopenal.so.0.0.8
Unused direct dependencies:

        /usr/lib/libvorbis.so.0
[icesik на iceberg ~]$

Это классно, но... rpmlint сейчас может искать такие зависимости только в 
установленных пакетах. Надо бы попргобовать разобратся, может получится 
сделать такой же поиск по срезу Сизифа без установки пакетов.

На всякий случай, приведу список пакетов:
liberuby
libportaudio
libwvstreams
libqca
libmesa-devel
t1lib
libmpeg4ip
libldap
libgpm
libungif
libxplc
libstartup-notification
libgiblib
libxml++
libsigc++2.0
libstdc++3.3
libXTrap
libopenal

Что бы получить такой список в домашних условиях, нужен свежий rpmlint и
rpmlint -a | grep unused-direct-shlib-dependency > 
unused-direct-shlib-dependency.installed

Ну и на последок вопрос. Что будем делать с этими пакетами? Проще всего, 
отправить эти пакеты на автоматическую пересборку. Или я ошибаюсь? Ваши 
предложения?

Продолжение следует...

-- 
icesik


Подробная информация о списке рассылки Devel