가끔 새 Ubuntu를 설치해야합니다 (데스크톱과 서버 모두에 사용했습니다). 컴파일하기 전에 설치해야하는 라이브러리 몇 개를 항상 잊어 버렸습니다. 다시 컴파일해야하므로 성 가실 것입니다.
이제 파이썬을 컴파일하기 전에 설치할 모든 라이브러리 패키지의 전체 목록을 만들고 싶습니다.
이것은 아래 도움말과에서 파헤쳐 서 작성한 목록입니다 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
Python 3.2 이상의 경우 :
liblzma-dev
더 옵션 :
tk-dev
libdb-dev
Ubuntu에는 Berkeley 데이터베이스 v1.8.5 용 패키지가 없으며 Sun 오디오 하드웨어 (명백한 이유로) bsddb185
및 sunaudiodev
모듈은 여전히 Ubuntu에서 빌드되지 않지만 다른 모든 모듈은 위 패키지가 설치된 상태로 빌드됩니다.
최신 정보
Ubuntu 14.04에는 Python 2.6 및 2.7 등에 더 많은 패치가 필요합니다 . 대신 pyenv 를 확인하는 것이 좋습니다 . 스크립트가 포함되어 있습니다 python-build
(에 있음 plugins/python-build/bin
). 그것으로 당신은 다음과 같이 임의의 파이썬 버전을 설치할 수 있습니다 :
$ ./python-build 2.7.8 /opt/python27
여기서 2.7.8은 버전이고 / opt / python27은 설치 될 경로입니다. Pyenv는 Python 버전을 다운로드하고 필요한 패치를 적용합니다 configure; make; make install
.
업데이트 종료
파이썬 2.5와 파이썬 2.6은 또한 새로운 멀티 아키텍처 레이아웃을 처리하기 위해 Ubuntu 11.04 이상에서 LDFLAGS를 설정해야합니다.
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
Python 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
Python 2.6 및 3.0은 Ubuntu 11.10에서 사용되는 OpenSSL 1.0과 함께 사용되도록 Modules / _ssl.c를 수정해야합니다. 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 */
이것은 OpenSSL1.0에서 사라진 SSL_v2 지원을 비활성화합니다.
Python 2.4 (예, 여전히 2.4가 필요한 오래된 프로젝트가 있음)에는 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
그리고 다음과 같이 컴파일해야합니다.
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4