Dmitry V. Levin wrote on 3/24/2006 1:18 AM: > On Fri, Mar 24, 2006 at 02:13:58AM +0300, Денис Смирнов wrote: > >> $ldd /usr/lib/libsvn_fs_base-1.so.o | grep libdb >> libdb-4.3.so => /lib/libdb-4.3.so (0x3acf3000) >> >> Почему зависимости на libdb-4.3.so не образовалсь? >> > > Потому что ldd. :) > Да-да. libdb вытаскивается по зависимостям libaprutil. Причем интересная ситуация получается. Раньше при сборке subversion прикладывался патчик, который в configure.in проставлял текущую версию libdb, соответственно приходилось следить за тем, чтобы своевременно обновлять этот патчик, потому как без него configure обламывался, когда обнаруживал, что версии желаемая и действительная не совпадают. Сейчас этот патч уже не обязателен (кажется), главное правильно рассказать как линковаться с libdb. configure пытается использовать apu-config (svn_apu_bdb_lib=["`$apu_config --link-ld --ldflags --libs`"]) для определения правильных ключей, но оттуда все было оторвано в свое время (все в той же гонке за чистоту зависимостей :) )... Справиться с этим помогает такая конструкция: LIBS="-ldb-4" ./configure Однако не хотелось, чтобы -ldb-4 появлялся так глобально (хотя при использовании ). В Makefile.in замечен зародыш в виде SVN_DB_LIBS, и при помощи небольшого патча он стал использоваться в configure, поэтому сейчас работает: SVN_DB_LIBS="-ldb-4" ./configure Но вместе с этим появилась мысль: а может стоит вернуть в apu-config [хотя бы] часть вырезанного? При использовании --as-needed все равно лишнее не будет влинковываться... По поводу зависимости на libdb4.x: для subversion необходимо использовать ту же версию libdb, с которой собрана libaprutil (полагаю, это же справедливо и для других пакетов, использующих libaprutil). Соответственно, возникает желание убрать зависимость на libdb4.x-devel из subversion и полагаться на зависимости libaprutil. Ну а в libaprutil ввести зависимость на конерктную libdb4.x-devel, а не на libdb4-devel, поскольку автоматические пересборки с новыми версиями чреваты... А пока суть да дело, еще одна вещь меня удивила сейчас: Сейчас libsvn_fs_base напрямую использует функции из libdb-4 (напр, db_create), но не слинкована с ней напрямую (отсутствует в objdump -p ..|grep NEEDED, libdb-4 загружается за счет libaprutil). Это ведь неправильно? Похоже, что упомянутый выше патчик про SVN_DB_LIBS решит эту проблему. По крайней мере, во время сборки вроде бы библиотека слинкована нормально, посмотрим, что получится, когда таки удастся получить бинарные rpm пакеты :) А потеряна такая зависимость была как раз за счет того, что apu-config не вернул необходимых ключей, а makefile на это очень расчитывал :) -- Best Regards, Sviatoslav Sviridov