एक बार जब मुझे एक नया उबंटू स्थापित करने की आवश्यकता होती है (मैंने इसे डेस्कटॉप और सर्वर दोनों के लिए उपयोग किया है) और मैं हमेशा कुछ ऐसे पुस्तकालयों को भूल जाता हूं जिन्हें मुझे संकलित करने से पहले स्थापित करना चाहिए था, जिसका अर्थ है कि मुझे पुनर्मिलन करना होगा, और यह कष्टप्रद हो रहा है।
इसलिए अब मैं पायथन को संकलित करने से पहले स्थापित करने के लिए सभी लाइब्रेरी पैकेजों की एक पूरी सूची बनाना चाहता हूं (और अधिमानतः वे कितने वैकल्पिक हैं)।
यह वह सूची है जिसे मैंने नीचे की मदद से और खोदकर संकलित किया है setup.py
। यह Ubuntu 10.04 और 11.04 के लिए कम से कम पूरा हो गया है:
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
पायथन 3.2 के लिए और बाद में:
liblzma-dev
अधिक वैकल्पिक:
tk-dev
libdb-dev
उबंटू के बर्कले डेटाबेस के v1.8.5 के लिए कोई पैकेज नहीं है, न ही (स्पष्ट कारणों के लिए) सन ऑडियो हार्डवेयर, इसलिए bsddb185
और sunaudiodev
मॉड्यूल अभी भी उबंटू पर नहीं बनाए जाएंगे, लेकिन अन्य सभी मॉड्यूल स्थापित उपरोक्त पैकेज के साथ बनाए गए हैं।
अपडेट करें
उबंटू 14.04 में पायथन 2.6 के लिए और भी अधिक पैच की आवश्यकता है, और 2.7 आदि। मैं इसके बजाय चेकआउट पाइनेव की सिफारिश करूंगा । इसमें एक स्क्रिप्ट python-build
(स्थित plugins/python-build/bin
) होती है। इसके साथ आप इस तरह के मनमाने पायथन संस्करण स्थापित कर सकते हैं:
$ ./python-build 2.7.8 /opt/python27
जहां 2.7.8 संस्करण है और / ऑप्ट / python27 वह पथ है जिसे इसे स्थापित किया जाएगा। पायनेव पायथन संस्करण को डाउनलोड करेगा, आवश्यक पैच लागू करेगा और configure; make; make install
आपके लिए।
अंत अद्यतन
पायथन 2.5 और पायथन 2.6 को भी उबंटू 11.04 पर और बाद में नए मल्टी-आर्क लेआउट को संभालने के लिए LDFLAGS सेट करना होगा:
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
पायथन 2.6, 2.7 और 3.0 के लिए आपको ./configure
स्क्रिप्ट चलाने से पहले और दौड़ने से पहले SSL को स्पष्ट रूप से सक्षम करना होगा make
। में Modules/Setup
वहाँ इस तरह पंक्तियां हैं:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
इन लाइनों को हटाएं और SSL चर को इसमें बदलें /usr
:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
पायथन 2.6 और 3.0 को भी ओपनएसएसएल 1.0 के साथ उपयोग किए जाने के लिए संशोधित मॉड्यूल / _ssl.c की आवश्यकता होती है, जिसका उपयोग Ubuntu 11.10 में किया जाता है। लगभग 300 लाइन पर आपको यह मिल जाएगा:
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 */
उस में बदलें:
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 */
यह SSL_v2 समर्थन को अक्षम करता है, जो जाहिरा तौर पर OpenSSL1.0 में चला गया है।
अजगर 2.4 (हाँ, मेरे पास अभी भी कुछ पुरानी परियोजनाएं हैं जिनकी 2.4 की आवश्यकता है) को सेटअप पैच के लिए इस पैच की आवश्यकता है:
--- 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
और इसके साथ संकलित करने की आवश्यकता है:
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4