Установка чистого 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

http://www.linuxforums.org/forum/suse-linux-help/156619-python-error-sles-no-module-name-readline.html

PS - Gentoo твой друг:)

Другие вопросы по тегам