FreeBSD : Shared object «libicui18n.so.38» not found


Tagged , , ,

После обновления icu отвалились некоторые пакеты. При запуске просили версию 3.8 с которой они были слинкованы при сборке.
Пример ошибки mplayer’а (
$ mplayer ./File.mpg
/libexec/ld-elf.so.1: Shared object «libicui18n.so.38» not found, required by «libgtk-x11-2.0.so.0»
)

Последняя собранная версия — 4.6. Для того чтобы временно решить проблему создал линки с названиями от версии 3.8 на установленные уже либы 4.6:
Пример:

# ln -s /usr/local/lib/libicui18n.so.46.0 /usr/local/lib/libicui18n.so.38

Для того чтобы немного автоматизировать написал скрипт, пользуйтесь:

#!/usr/bin/sh

chdir «/usr/local/lib»
if [ «`pwd`» = «/usr/local/lib» ];
then
ln -s libicudata.so.46.0 libicudata.so.38
ln -s libicui18n.so.46.0 libicui18n.so.38
ln -s libicuio.so.46.0 libicuio.so.38
ln -s libicule.so.46.0 libicule.so.38
ln -s libiculx.so.46.0 libiculx.so.38
ln -s libicutest.so.46.0 libicutest.so.38
ln -s libicutu.so.46.0 libicutu.so.38
ln -s libicuuc.so.46.0 libicuuc.so.38
else
echo Dir not changed
fi

немного изменив цифры версий можно создавать симлинки с любых на любые версии. Данный скрипт создает симлинки только на icu.

Мой блог находят по следующим фразам

Share:

4 комментария

RSS / trackback

Respond

  1. Nemo

    on 21.12.2010 at 04:34

    А обновить эти пакеты не пробовал?
    Например так: portupgrade -rf icu-\*

  2. Человек_Разумный

    on 21.12.2010 at 11:07

    На момент написания, порты были обновлены до последней версии. Пакеты обновлялись через portupgrade -Rr

  3. Человек_Разумный

    on 25.12.2010 at 04:58

    Заглянул в /usr/ports/UPDATING
    за 14 декабря написано что надо пересобирать все порты 🙁
    все верно, пересобрать надо командой # portupgrade -fr devel/icu

  4. vitek

    on 11.01.2011 at 05:59

    А не пробовали сделать:
    ldconfig -m /usr/local/lib/
    Лично мне помогло и без симлинков.