У меня есть две установки python на моем сервере RHEL, одна с версией 2.4.x (это обычная установка RHEL, обновленная с использованием yum
) и версии 2.6.x, которую я использую для Django, а также для обычных сценариев (устанавливается из исходников).
Я бы хотел, чтобы библиотека rsvg работала на Python 2.6.x. Он уже присутствует в Python 2.4.x и хранится здесь /usr/lib64/python2.4/site-packages/gtk-2.0/rsvg.so
.
Моя вторая установка Python здесь /opt/python2.6
.
В идеале я бы хотел сделать это без полной переустановки Python 2.6!
Пытался установить весь пакет gnome-python-desktop и получил
checking for PYGTK... configure: error: Package requirements (pygtk-2.0 >= 2.4.0) were not met.
Серьезно, все, что мне нужно, это python-rsvg. Это должно быть возможно без установки всех пакетов в мире.
Я запустил это, чтобы получить, как я понимаю, необходимые зависимости:
$ yum install pygobject2 pygobject2-devel librsvg2 librsvg2-devel pygtk2 pygtk2-devel
Бег ./configure --disable-allbindings --enable-rsvg
возвращается с сообщением, что единственный модуль, который будет построен, это metacity
.
Попытка установить gnome-python-desktop, используя предоставленные параметры конфигурации. Бег make
приводит к ошибке:
metacity.c: In function 'pymetacity_add_constants':
metacity.c:955: error: 'META_CURSOR_MOVE_WINDOW' undeclared (first use in this function)
metacity.c:955: error: (Each undeclared identifier is reported only once
metacity.c:955: error: for each function it appears in.)
metacity.c:956: error: 'META_CURSOR_RESIZE_WINDOW' undeclared (first use in this function)
make[2]: *** [metacity_la-metacity.lo] Error 1
make[2]: Leaving directory `/tmp/gnome-python-desktop-2.13.3/metacity'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/gnome-python-desktop-2.13.3'
make: *** [all] Error 2
Бег configure
на pygobject 2.26.0 (последняя стабильная версия?):
checking for GLIB - version >= 2.22.4... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.
configure: error: maybe you want the pygobject-2-4 branch?
Бег make
в glib 2.26.0:
/usr/bin/msgfmt -o test.mo ./de.po; \
/bin/mkdir -p de/LC_MESSAGES; \
cp -f test.mo de/LC_MESSAGES
./de.po:15: keyword "msgctxt" unknown
./de.po:15:8: parse error
/usr/bin/msgfmt: found 2 fatal errors
cp: cannot stat `test.mo': No such file or directory
make[4]: *** [test.mo] Error 1
make[4]: Leaving directory `/tmp/glib-2.26.0/gio/tests'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/glib-2.26.0/gio'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/tmp/glib-2.26.0/gio'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/glib-2.26.0'
make: *** [all] Error 2
Это довольно неприятно! Есть ли способ сделать это без установки всего?
export PYTHONPATH=/opt/python2.6
export PATH=/opt/python2.6/bin:$PATH
А потом configure
/ make
/ make install
модуль python-rsvg (из gnome-python-desktop), и он должен просто работать.
Если вам нужен только модуль rsvg без остальных, вы можете использовать ./configure --disable-allbindings --enable-rsvg
.
И убедитесь, что у вас есть librsvg2-devel
пакет установлен, иначе модуль не будет собран независимо от того, сколько --enables вы укажете. :)
Обновить:
Ясно, что что-то не так на этапе обновления №2 выше, где ./configure
говорит вам, что он делает что-то, кроме того, что он собирается делать. В частности, в справке по настройке упоминаются привязки метасильности как плохо обслуживаемые.
Я не совсем уверен, что не так - есть ли что-то полезное в (длинном) выводе configure? В качестве альтернативы вы можете попробовать использовать waf
вместо configure / make. Бегать:
./waf configure --enable-modules=rsvg
./waf
./waf install
(Отмечая, что --disable-allbindings не требуется.)
Первая строка должна сказать вам, что будет построен только rsvg.
Дальнейшее обновление:
При таком подходе вам понадобятся pygtk и pycairo, встроенные в ваш /opt/python2.6
дерево. Это может быть причиной сбоя конфигурации.