Sesekali saya perlu menginstal Ubuntu baru (saya menggunakannya baik untuk desktop dan server) dan saya selalu lupa beberapa perpustakaan yang harus saya instal sebelum kompilasi, artinya saya harus mengkompilasi ulang, dan itu semakin menjengkelkan.
Jadi sekarang saya ingin membuat daftar lengkap dari semua paket perpustakaan untuk diinstal sebelum mengkompilasi Python (dan lebih disukai bagaimana opsional mereka).
Ini adalah daftar yang saya susun dengan bantuan di bawah ini dan dengan menggali setup.py
. Ini lengkap untuk Ubuntu 10.04 dan 11.04 setidaknya:
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
Untuk Python 3.2 dan yang lebih baru:
liblzma-dev
Lebih opsional:
tk-dev
libdb-dev
Ubuntu tidak memiliki paket untuk v1.8.5 dari database Berkeley, juga (untuk alasan yang jelas) perangkat keras audio Sun, sehingga modul bsddb185
dan sunaudiodev
masih tidak akan dibangun di Ubuntu, tetapi semua modul lainnya dibangun dengan paket-paket di atas diinstal.
MEMPERBARUI
Ada di Ubuntu 14,04 bahkan lebih banyak tambalan yang diperlukan untuk Python 2.6, dan 2.7 dll. Saya akan merekomendasikan untuk checkout checkout pyenv . Ini berisi skrip python-build
(terletak di plugins/python-build/bin
). Dengannya Anda dapat menginstal versi Python sewenang-wenang seperti ini:
$ ./python-build 2.7.8 /opt/python27
Di mana 2.7.8 adalah versi dan / opt / python27 adalah path yang akan diinstal. Pyenv akan mengunduh versi Python, menerapkan tambalan yang diperlukan dan configure; make; make install
untuk Anda.
AKHIR PEMBARUAN
Python 2.5 dan Python 2.6 juga perlu memiliki LDFLAGS ditetapkan pada Ubuntu 11.04 dan yang lebih baru, untuk menangani tata letak multi-lengkungan yang baru:
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
Untuk Python 2.6, 2.7 dan 3.0 Anda juga perlu mengaktifkan SSL secara eksplisit setelah menjalankan ./configure
skrip dan sebelum menjalankan make
. Di Modules/Setup
sana ada baris seperti ini:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
Batalkan komentar pada baris ini dan ubah variabel SSL ke /usr
:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Python 2.6 dan 3.0 juga membutuhkan Modul / _ssl.c yang dimodifikasi untuk digunakan dengan OpenSSL 1.0, yang digunakan di Ubuntu 11.10. Di sekitar garis 300 Anda akan menemukan ini:
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 */
Ubah itu menjadi:
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 */
Ini menonaktifkan dukungan SSL_v2, yang tampaknya hilang di OpenSSL1.0.
Python 2.4 (ya, saya masih memiliki beberapa proyek lama yang perlu 2.4) membutuhkan tambalan ini untuk 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
Dan itu perlu dikompilasi dengan:
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4