FreeBSD — Ошибка при обновлении nginx

После бинарного обновления с FreeBSD 8.3 до FreeBSD 8.4 решил обновить portupgrade-ом порты и нарвался на вот такую ошибку при сборке nginx

........
gd_webp.lo gd_tiff.lo gd_tga.lo gd_bmp.lo gd_xbm.lo  gd_color_match.lo  -ljpeg -lz -lm  -L/usr/local/lib -lpng15   -L/usr/local/lib -lfreetype   -L/usr/local/lib -ltiff
grep: /usr/local/lib/liblzma.la: No such file or directory
sed: /usr/local/lib/liblzma.la: No such file or directory
libtool: link: `/usr/local/lib/liblzma.la' is not a valid libtool archive
*** Error code 1
1 error
*** Error code 2
1 error
*** Error code 1
1 error
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop in /usr/ports/graphics/gd.
*** Error code 1

Stop in /usr/ports/graphics/gd.
*** Error code 1

Stop in /usr/ports/www/nginx.
*** Error code 1

Stop in /usr/ports/www/nginx.

Проблема была в отсутствии файлика /usr/local/lib/liblzma.la который требовался для сборки порта graphics/gd и еще нескольких портов по зависимостям nginx. Как гласит /usr/ports/UPDATING порт archivers/lzmautils удален и вместо него рекомендуют использовать обычный lzma, но то было давно и я давным давно сделал все как просили в UPDATING но вот неожиданно нарвался на такой бок.
Скажу сразу гуглить пришлось долго, как ни странно, с такой проблемой мало кто сталкивался, но тем, кто все-таки на подобные грабли наступал, великие Гуру советовали брать в руки 2 инструмента:

root@gw:~# fgrep -e lzma -nHr /usr/local/lib --include='*.la'

смотрим в выхлопе какие библиотеки имеют зависимость с интересующей нас библиотекой. В моем случае /usr/local/lib/liblzma.la

root@gw:~# pkg_info -W _имя_библиотеки_из_выхлопа_выше

Это для того чтобы определить какому пакету принадлежит эта библиотека. Это нужно знать для того чтобы пересобрать данный пакет. Это мол, по мнению великих Гуру, решит мою проблему. Итак, я сделал как советовали:

root@gw:~# fgrep -e lzma -nHr /usr/local/lib --include='*.la'
/usr/local/lib/libxslt.la:20:dependency_libs=' -L/usr/local/lib /usr/local/lib/libxml2.la -L/usr/lib -llzma -lz /usr/local/lib/libiconv.la -lm'
/usr/local/lib/libxml2.la:20:dependency_libs=' -lz -L/usr/lib -llzma -L/usr/local/lib /usr/local/lib/libiconv.la -lm'
/usr/local/lib/libexslt.la:20:dependency_libs=' -R/usr/local/lib -L/usr/local/lib /usr/local/lib/libxslt.la -L/usr/lib /usr/local/lib/libxml2.la -llzma -lz -lm /usr/local/lib/libgcrypt.la /usr/local/lib/libgpg-error.la /usr/local/lib/libintl.la /usr/local/lib/libiconv.la'
/usr/local/lib/python2.7/site-packages/libxml2mod.la:20:dependency_libs=' -L/usr/local/lib /usr/local/lib/libxml2.la -lz /usr/local/lib/liblzma.la /usr/local/lib/libiconv.la -L/usr/local/lib/python2.7/config -lutil -lm -lpython2.7'
root@gw:~#

Тут нас интересует первый столбик, скармливаем следующей команде по очереди /usr/local/lib/libxslt.la, /usr/local/lib/libxml2.la, /usr/local/lib/libexslt.la, /usr/local/lib/python2.7/site-packages/libxml2mod.la и смотрим каким пакетам они принадлежат:

root@gw:~# pkg_info -W /usr/local/lib/libxslt.la
/usr/local/lib/libxslt.la was installed by package libxslt-1.1.28_1
root@gw:~#

После этого пересобираем данный порт, и так по циклу, следующая библиотека … определили порт -> пересобрали, до последнего.
После этого у меня прекрасно отработал portupgrade и уже ни на что не ругался.
Удачи!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?