Hin und wieder muss ich ein neues Ubuntu installieren (ich habe es sowohl für den Desktop als auch für die Server verwendet) und vergesse immer ein paar Bibliotheken, die ich vor dem Kompilieren hätte installieren sollen, was bedeutet, dass ich neu kompilieren muss und es nervt.
Jetzt möchte ich eine vollständige Liste aller zu installierenden Bibliothekspakete erstellen, bevor Python kompiliert wird (und am besten, wie optional sie sind).
Dies ist die Liste, die ich mit der folgenden Hilfe und durch Eingraben zusammengestellt habe setup.py
. Es ist mindestens für Ubuntu 10.04 und 11.04 vollständig:
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
Für Python 3.2 und höher:
liblzma-dev
Mehr optional:
tk-dev
libdb-dev
Ubuntu hat keine Pakete für v1.8.5 der Berkeley - Datenbank, noch (aus offensichtlichen Gründen) die Sun Audio - Hardware, so dass die bsddb185
und sunaudiodev
Module immer noch nicht auf Ubuntu gebaut werden, sondern auch alle anderen Module sind mit den oben genannten Pakete installiert gebaut.
AKTUALISIEREN
In Ubuntu 14.04 werden noch mehr Patches für Python 2.6 und 2.7 usw. benötigt. Ich würde empfehlen, stattdessen pyenv auszuprobieren . Es enthält ein Skript python-build
(befindet sich in plugins/python-build/bin
). Damit können Sie beliebige Python-Versionen wie folgt installieren:
$ ./python-build 2.7.8 /opt/python27
Wobei 2.7.8 die Version ist und / opt / python27 der Pfad, unter dem es installiert wird. Pyenv lädt die Python-Version herunter und wendet die erforderlichen Patches configure; make; make install
für Sie an.
END UPDATE
Für Python 2.5 und Python 2.6 muss außerdem LDFLAGS unter Ubuntu 11.04 und höher festgelegt sein, damit das neue Layout mit mehreren Archiven verwendet werden kann:
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
Für Python 2.6, 2.7 und 3.0 müssen Sie SSL nach dem Ausführen des ./configure
Skripts und vor dem Ausführen explizit aktivieren make
. Darin Modules/Setup
gibt es Zeilen wie diese:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
Kommentieren Sie diese Zeilen aus und ändern Sie die SSL-Variable in /usr
:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Für Python 2.6 und 3.0 muss auch Modules / _ssl.c geändert werden, damit es mit OpenSSL 1.0 verwendet werden kann, das in Ubuntu 11.10 verwendet wird. Um die Linie 300 finden Sie Folgendes:
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 */
Ändern Sie das in:
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 */
Dies deaktiviert die SSL_v2-Unterstützung, die anscheinend in OpenSSL1.0 weg ist.
Python 2.4 (ja, ich habe noch einige alte Projekte, die 2.4 benötigen) benötigt diesen Patch für 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
Und es muss kompiliert werden mit:
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4