Arada bir yeni bir Ubuntu kurmam gerekiyor (hem masaüstü hem de sunucular için kullandım) ve derlemeden önce kurmam gereken bir kaç kütüphaneyi unutuyorum, yani yeniden derlemem gerekiyor ve can sıkıcı oluyor.
Şimdi Python'u derlemeden önce kurulacak kütüphane paketlerinin tam bir listesini yapmak istiyorum (ve tercihen ne kadar isteğe bağlı olduklarını).
Bu, aşağıdaki yardım ile derlediğim ve topladığım liste setup.py
. En azından Ubuntu 10.04 ve 11.04 için tamamlanmıştır:
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
Python 3.2 ve sonrası için:
liblzma-dev
Daha fazla isteğe bağlı:
tk-dev
libdb-dev
Ubuntu’nun Berkeley veri tabanının v1.8.5’i için paketleri yoktur (açık nedenlerden ötürü) Sun ses donanımı da vardır, bu nedenle bsddb185
ve sunaudiodev
modüller hala Ubuntu’da kurulmayacaktır, fakat diğer tüm modüller yukarıdaki paketlerle kuruludur.
GÜNCELLEME
Ubuntu 14.04'te Python 2.6 ve 2.7 vb. İçin daha da fazla yama gerekli. Bunun yerine pyenv'i kontrol etmenizi öneririm . İçinde bir komut dosyası python-build
bulunur plugins/python-build/bin
. Bununla beraber keyfi Python sürümlerini yükleyebilirsiniz:
$ ./python-build 2.7.8 /opt/python27
2.7.8 sürümünde ve / opt / python27 ise kurulacak yoldur. Pyenv, Python sürümünü indirecek, gerekli yamaları uygulayacak ve configure; make; make install
sizin için.
SON GÜNCELLEME
Python 2.5 ve Python 2.6'nın, yeni çoklu kemer düzenini işlemek için Ubuntu 11.04 ve sonrasında ayarlanmış LDFLAGS'a sahip olmaları gerekir:
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
Python 2.6, 2.7 ve 3.0 için ayrıca ./configure
betiği çalıştırdıktan sonra ve çalıştırmadan önce SSL'yi açıkça etkinleştirmeniz gerekir make
. İçinde Modules/Setup
böyle çizgiler var:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
Bu satırların komutunu kaldırın ve SSL değişkenini şu şekilde değiştirin /usr
:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Python 2.6 ve 3.0 ayrıca, Ubuntu 11.10'da kullanılan OpenSSL 1.0 ile kullanılmak üzere değiştirilmiş Modül / _ssl.c'ye ihtiyaç duyar. Satır 300 civarında bunu bulacaksınız:
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 */
Şunu değiştir:
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 */
Bu, görünüşe göre OpenSSL1.0'da görünen SSL_v2 desteğini devre dışı bırakır.
Python 2.4 (evet, hala 2.4 olan bazı eski projelerim var) setup.py için bu yamaya ihtiyaç duyuyor:
--- 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
Ve bununla derlenmesi gerekiyor:
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4