Instalando um Python 2.6 limpo no SuSE (SLES) 11 usando bibliotecas do sistema

1

Eu passei a maior parte do dia nisto, e isso está me deixando absolutamente insano. Em todos os outros Unixes que usei, este é um passeio no parque, mas o SLES 11 me deixa perplexa.

Eu preciso construir o Zope no SLES 11 de 64 bits:

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

Primeiro tentei usar o Python 2.6 instalado pelo YaST. Eu também instalei python-devel, libjpeg-devel, readline-devel, libopensl-devel, libz2-devel, zlib-devel e libgcrypt-devel.

O python2.6 global tem muitos problemas, e parece executar coisas em / etc / pythonstart quando eu o uso, o que não ajuda. No entanto, o erro que recebo é o seguinte:

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.

Eu não sei o que "incompatível" está se referindo aqui; meu palpite seria a arquitetura de hardware, mas não tenho certeza do que é incompatível com o que na declaração acima.

Eu tive problemas com o Python instalado pelo sistema antes, então eu tentei compilar o meu próprio (daí a lista de pacotes -devel acima), baixando o tarball do Python 2.6 e rodando:

./configure --disable-tk --prefix=${HOME}/python
make
make install

Isso é instalado, mas parece não conseguir encontrar nenhuma biblioteca do sistema. Aqui está uma sessão de intérprete de amostra:

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

Tanto readline quanto hashlib (via libgrypt) devem ser instalados, e os pacotes de nível relevantes também são instalados. No Ubuntu ou OS X, isso funciona muito bem. No SuSE, sem sorte.

Qualquer ajuda muito apreciada!

Martin

    
por optilude 29.03.2010 / 11:24

4 respostas

2

Depois de muita dor, a peça que faltava era a seguinte: /usr/lib64/libpython2.6.so estava faltando. Deve ser um link simbólico para /usr/lib64/libpython2.6.so.1.0, mas de alguma forma ele se perdeu ou nunca foi instalado.

Um python customizado ainda não conseguiu encontrar certas bibliotecas (por exemplo, libgcrypto ou libopenssl), mas eu consegui um bom python usando o fornecido pelo SuSE, junto com virtualenv --no-site-packages para obter um pristine ambiente.

Obrigado a todos aqueles que ajudaram, especialmente Wichert no IRC, que explicou a coisa .so symlink. ; -)

    
por 30.03.2010 / 11:06
0

Martin, tentei Tweetar, mas é claro que o meu não mostra no seu, coloque o python libs em um diretório (ou symlink) que você adiciona ao seu caminho python IE PYTHONPATH "/ home / osc / pythonstuff / extra_python_lib_15. 6,3 "

Ou # ajustar conforme necessário você pode adicionar / adicionar a $ HOME / .bashrc ou $ HOME / .profile
PYTHONPATH = $ PYTHONPATH = / usr / lib64 / python2.6 / somelib /

export $ PYTHONPATH

ele então os encontrará.

Usar o YuM também é uma boa idéia, já que o Yast pode ser uma droga, mas você precisa baixar e instalar usando estas instruções (um bom arquivo .spec transferido do Fedora) link como o pacote OPenSuse não é compatível com 2.6.

Estou apostando que uma instalação limpa usando o YuM funcionará bem, o YasT pode ser um pouco estranho assim e também notei que / lib e / lib64 foram misturados resolvidos simplesmente através de symlinking / usr / lib64 para / usr / lib ou apro localização

Paz

Asigottech

    
por 30.03.2010 / 05:36
0

Faça o download da linha de leitura, compile o código-fonte e compile o python a partir do código-fonte.

Paz

Asigottech

link

PS - Gentoo é seu amigo:)

    
por 30.03.2010 / 08:18
0

Oh, bem, ficando OLD, eu acho que:) pensei que você tinha isso. então sob / usr / lib64 embora?

Fico feliz com o fato de o Gentoo ser classificado e lembrado ser coooler

    
por 30.03.2010 / 11:33