Я потратил на это большую часть дня, и это сводит меня с ума. На всех других Unix, которые я использовал, это прогулка по парку, но SLES 11 ошеломил меня.
Мне нужно собрать Zope на SLES 11 64 бит:
Linux <name> 2.6.27.45-0.1-default #1 SMP 2010-02-22 16:49:47 +0100 x86_64 x86_64 x86_64 GNU/Linux
Сначала я попытался использовать Python 2.6, установленный YaST. Я также установил python-devel, libjpeg-devel, readline-devel, libopenssl-devel, libz2-devel, zlib-devel и libgcrypt-devel.
Глобальный python2.6 имеет много беспорядка и, кажется, выполняет что-то в / etc / pythonstart, когда я его использую, что не помогает. Однако я получаю следующую ошибку:
Getting distribution for 'Zope2==2.12.3'.
src/AccessControl/cAccessControl.c:596: warning: initialization from incompatible pointer type
src/AccessControl/cAccessControl.c:598: warning: ‘intargfunc’ is deprecated
src/AccessControl/cAccessControl.c:598: warning: initialization from incompatible pointer type
src/AccessControl/cAccessControl.c:599: warning: ‘intargfunc’ is deprecated
src/AccessControl/cAccessControl.c:599: warning: initialization from incompatible pointer type
src/AccessControl/cAccessControl.c:600: warning: ‘intintargfunc’ is deprecated
src/AccessControl/cAccessControl.c:600: warning: initialization from incompatible pointer type
src/AccessControl/cAccessControl.c:601: warning: initialization from incompatible pointer type
src/AccessControl/cAccessControl.c:602: warning: initialization from incompatible pointer type
src/AccessControl/cAccessControl.c:606: warning: ‘intargfunc’ is deprecated
src/AccessControl/cAccessControl.c:606: warning: initialization from incompatible pointer type
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libpython2.6.so when searching for -lpython2.6
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lpython2.6
collect2: ld returned 1 exit status
error: Setup script exited with error: command 'gcc' failed with exit status 1
An error occured when trying to install Zope2 2.12.3. Look above this message for any errors that were output by easy_install.
Я не знаю, что здесь имеется в виду «несовместимое»; я предполагаю, что это аппаратная архитектура, но я не уверен, что несовместимо с тем, что в заявлении выше.
У меня раньше были проблемы с установленными системой Pythons, поэтому я попытался скомпилировать свой собственный (отсюда и список пакетов -devel выше), загрузив tarball Python 2.6 и запустив:
./configure --disable-tk --prefix=${HOME}/python
make
make install
Он устанавливается, но, похоже, не удается найти общесистемные библиотеки. Вот пример сеанса интерпретатора:
Python 2.6.5 (r265:79063, Mar 29 2010, 17:04:12)
[GCC 4.3.2 [gcc-4_3-branch revision 141291]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
File "/etc/pythonstart", line 7, in <module>
import readline
ImportError: No module named readline
>>> from hashlib import md5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/osc/python-2.6/lib/python2.6/hashlib.py", line 136, in <module>
md5 = __get_builtin_constructor('md5')
File "/home/osc/python-2.6/lib/python2.6/hashlib.py", line 63, in __get_builtin_constructor
import _md5
ImportError: No module named _md5
Должны быть установлены как readline, так и hashlib (через libgrypt), а также установлены соответствующие пакеты -devel. В Ubuntu или OS X это отлично работает. На SuSE не повезло.
Любая помощь очень ценится!
Мартин
После ужасной боли недостающий фрагмент был следующим: /usr/lib64/libpython2.6.so отсутствовал. Это должна быть символическая ссылка на /usr/lib64/libpython2.6.so.1.0, но каким-то образом она потерялась или не была установлена.
Собранный на заказ python все еще не смог найти определенные библиотеки (например, libgcrypto или libopenssl), но мне удалось получить хороший питон, используя предоставленный SuSE, в сочетании с virtualenv --no-site-packages, чтобы получить первозданную среду.
Спасибо всем, кто помогал, особенно Уичерту из IRC, который объяснил, что такое символическая ссылка .so. ;-)
Ну да ладно, СТАРЫЙ, я думаю :) думал, что у вас есть этот .so в / usr / lib64?
Рад, что его отсортировали, помните, что Gentoo круче
Загрузите строку чтения, скомпилируйте из исходного кода, затем повторно скомпилируйте python из исходного кода.
Мир
Asigottech
PS - Gentoo - ваш друг :)
Мартин, попытался написать об этом в Твиттере, но, конечно, мои не отображаются на вашем, поместите ваши библиотеки python в каталог (или символическую ссылку), который вы затем добавите в свой путь python IE PYTHONPATH "/home/osc/pythonstuff/extra_python_lib_15.6.3"
Или #adjust, как необходимо, вы можете добавить / добавить в $ HOME / .bashrc или $ HOME / .profile
PYTHONPATH = $ PYTHONPATH = / usr / lib64 / python2.6 / somelib /
экспорт $ PYTHONPATH
затем он их найдет.
Использование YuM также является хорошей идеей, поскольку Yast может быть отстойным, но вам необходимо загрузить и установить, используя эти инструкции (хороший файл .spec перенесен из Fedora) http://ivan.kartik.sk/ поскольку пакет OPenSuse несовместим с 2.6.
Я держу пари, что чистая установка с использованием YuM будет работать нормально, YasT может быть немного странным, и я также заметил, что / lib и / lib64 смешиваются, что решается простой символической ссылкой / usr / lib64 на / usr / lib или apro location
Мир
Asigottech