Установка чистого Python 2.6 на SuSE (SLES) 11 с использованием общесистемных библиотек
Я провел большую часть дня на этом, и это сводит меня с ума. На всех других Unixes, которые я использовал, это прогулка по парку, но 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
Сначала я попытался просто использовать установленный YaST Python 2.6. Я также установил 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 не повезло.
Любая помощь с благодарностью!
Мартин
4 ответа
После ужасной боли пропущенный фрагмент был таким: /usr/lib64/libpython2.6.so отсутствовал. Это должна быть символическая ссылка на /usr/lib64/libpython2.6.so.1.0, но каким-то образом она потерялась или не была установлена.
Пользовательский Python по-прежнему не смог найти определенные библиотеки (например, libgcrypto или libopenssl), но мне удалось получить хороший Python, используя предоставленный SuSE, в сочетании с virtualenv --no-site-packages, чтобы получить нетронутую среду.
Спасибо всем, кто помог, особенно Wichert на IRC, который объяснил.so символическую ссылку.;-)
Ну да ладно, получаю СТАРЫЙ, я думаю:) думал, что у вас есть.so в /usr/lib64?
Рад, что разбирается, вспоминаю 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
Загрузите readline, скомпилируйте из исходного кода, а затем заново скомпилируйте python из исходного кода.
мир
Asigottech
PS - Gentoo твой друг:)