Картинка блога

Продолжая работу со стеком Django Bitnami сталкиваюсь с новыми недочетами разработчиков. Теперь это проблема перевода проектов, в частности старая версия gettext как следствие невозможность использования djangoadmin makemessages и проекта rosetta. Обычной установки gettext из репозитория недостаточно, это связанно с тем, что стек Bitnami хранит свои библиотеки и исполняемые файлы отдельно от системных. Зачем так сделано, несовсем понятно, но это реально мешает стандартному методу обновления через aptitude. Но обо всем по порядку:

1. Установка последней версии gettext для поддержки makemessages и rosetta

sudo apt-get install gettext

Тестируем:

./use_djangostack
cd projects/mysite/
django-admin.py makemessages -l ru

Получаем следующую ошибку:

processing language ru
Error: errors happened while running xgettext on __init__.py
xgettext: /opt/bitnami/common/lib/libxml2.so.2: no version information available (required by /usr/lib/libgettextlib-0.18.1.so)
xgettext: /opt/bitnami/common/lib/libxml2.so.2: no version information available (required by /usr/lib/libcroco-0.6.so.3)

Вот и несовместимость версий. Bitnami хранит свои библиотеки здесь:

ls ~/common/lib/libxml*

Видим:

lrwxrwxrwx 1 root root      16 2010-11-08 09:42 common/lib/libxml2.so -> libxml2.so.2.7.2
lrwxrwxrwx 1 root root      16 2010-11-08 09:42 common/lib/libxml2.so.2 -> libxml2.so.2.7.2
-rwxr-xr-x 1 root root 1603859 2010-11-06 20:45 common/lib/libxml2.so.2.7.2

2. Обновить пути до библиотек с новой версией.

Значит меняем версии на те что установил aptitude для каждой библиотеки, на которую будет ругатся gettext. Таких 2:

unlink common/lib/libxml2.so.2
ln /usr/lib/libxml2.so.2.7.7 /opt/bitnami/common/lib/libxml2.so.2
unlink common/lib/libz.so.1
ln /lib/libz.so.1 common/lib/libz.so.1

Все, библиотеки обновлены, можно спокойно использовать gettext.

Метки:,