De temps en temps, je dois installer un nouvel Ubuntu (je l'ai utilisé à la fois pour les ordinateurs de bureau et les serveurs) et j'oublie toujours quelques bibliothèques que j'aurais dû installer avant de compiler, ce qui signifie que je dois recompiler, et cela devient ennuyeux.
Je veux donc maintenant faire une liste complète de tous les paquets de bibliothèques à installer avant de compiler Python (et, de préférence, à quel point ils sont optionnels).
Voici la liste que j'ai dressée avec l'aide de ci-dessous et en creusant un peu setup.py
. Il est complet pour Ubuntu 10.04 et 11.04 au moins :
build-essential (obviously)
libz-dev (also pretty common and essential)
libreadline-dev (or the Python prompt is crap)
libncursesw5-dev
libssl-dev
libgdbm-dev
libsqlite3-dev
libbz2-dev
Pour Python 3.2 et plus :
liblzma-dev
Plus d'options :
tk-dev
libdb-dev
Ubuntu n'a pas de paquets pour la version 1.8.5 de la base de données Berkeley, ni (pour des raisons évidentes) pour le matériel audio Sun. bsddb185
y sunaudiodev
ne seront toujours pas construits sous Ubuntu, mais tous les autres modules seront construits avec les paquets ci-dessus installés.
MISE À JOUR
Dans Ubuntu 14.04, il y a encore plus de correctifs nécessaires pour Python 2.6, et 2.7, etc. Je recommanderais plutôt de vérifier pyenv . Il contient un script. python-build
(situé à plugins/python-build/bin
). Il permet d'installer des versions arbitraires de Python :
$ ./python-build 2.7.8 /opt/python27
Où 2.7.8 est la version et /opt/python27 est le chemin d'accès, il sera installé. Pyenv téléchargera la version de Python, appliquera les correctifs nécessaires et configure; make; make install
pour vous.
END UPDATE
Python 2.5 et Python 2.6 doivent également avoir LDFLAGS sur Ubuntu 11.04 et plus, pour gérer la nouvelle disposition multi-arch :
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
Pour Python 2.6, 2.7 et 3.0, vous devez également activer explicitement SSL après avoir exécuté la commande ./configure
script et avant d'exécuter make
. En Modules/Setup
il y a des lignes comme celle-ci :
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
Décommentez ces lignes et remplacez la variable SSL par /usr
:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Python 2.6 et 3.0 a également besoin de Modules/_ssl.c modifiés pour être utilisés avec OpenSSL 1.0, qui est utilisé dans Ubuntu 11.10. Aux alentours de la ligne 300, vous trouverez ceci :
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
Remplacez cela par :
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
#ifndef OPENSSL_NO_SSL2
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
#endif
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
Cela désactive le support de SSL_v2, qui a apparemment disparu dans OpenSSL1.0.
Python 2.4 (oui, j'ai encore quelques vieux projets qui ont besoin de 2.4) a besoin de ce patch pour setup.py :
--- setup.py 2006-10-08 19:41:25.000000000 +0200
+++ setup.py 2012-05-08 14:02:14.325174357 +0200
@@ -269,6 +269,7 @@
lib_dirs = self.compiler.library_dirs + [
'/lib64', '/usr/lib64',
'/lib', '/usr/lib',
+ '/usr/lib/x86_64-linux-gnu'
]
inc_dirs = self.compiler.include_dirs + ['/usr/include']
exts = []
@@ -496,7 +497,8 @@
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ '/usr/contrib/ssl/lib/',
+ 'x86_64-linux-gnu'
] )
if (ssl_incs is not None and
Et il doit être compilé avec :
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4