次のディレクトリ構造があります。
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la
2to3 cpp-5.3.0 gcov-5.3.0 grmid-5.3.0 objcopy-2.25.1 python3.5-config .sources
2to3-3.5 elfedit-2.25.1 gcov-tool-5.3.0 grmiregistry-5.3.0 objdump-2.25.1 python3.5m strings-2.25.1
addr2line-2.25.1 g++-5.3.0 gfortran-5.3.0 gserialver-5.3.0 pydoc python3.5m-config strip-2.25.1
aot-compile-5.3.0 gappletviewer-5.3.0 gij-5.3.0 gtnameserv-5.3.0 pydoc3 python3-config x86_64-unknown-linux-gnu-c++-5.3.0
ar-2.25.1 gc-analyze-5.3.0 gjar-5.3.0 idle pydoc3.5 python-config x86_64-unknown-linux-gnu-g++-5.3.0
.archives gcc-5.3.0 gjarsigner-5.3.0 idle3 python pyvenv x86_64-unknown-linux-gnu-gcc-5.3.0
as-2.25.1 gcc-ar-5.3.0 gjavah-5.3.0 idle3.5 python2 pyvenv-3.5 x86_64-unknown-linux-gnu-gcc-ar-5.3.0
bash gcc-nm-5.3.0 gkeytool-5.3.0 jcf-dump-5.3.0 python2.7 ranlib-2.25.1 x86_64-unknown-linux-gnu-gcc-nm-5.3.0
.binaries gcc-ranlib-5.3.0 gnative2ascii-5.3.0 jv-convert-5.3.0 python2.7-config readelf-2.25.1 x86_64-unknown-linux-gnu-gcc-ranlib-5.3.0
.build gcj-5.3.0 gorbd-5.3.0 ld-2.25.1 python2-config rebuild-gcj-db-5.3.0 x86_64-unknown-linux-gnu-gcj-5.3.0
c++-5.3.0 gcj-dbtool-5.3.0 gprof-2.25.1 ld.bfd-2.25.1 python3 size-2.25.1 x86_64-unknown-linux-gnu-gfortran-5.3.0
c++filt-2.25.1 gcjh-5.3.0 grmic-5.3.0 nm-2.25.1 python3.5 smtpd.py
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la .sources/
bash-4.4-beta binutils-2.25.1 boost_1_60_0 gcc-5.3.0 Python-2.7.11 Python-3.5.1
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la .build/
bash-4.4-beta binutils-2.25.1 boost_1_60_0 gcc-5.3.0 Python-2.7.11 Python-3.5.1
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la .binaries/
bash-4.4-beta binutils-2.25.1 boost_1_60_0 gcc-5.3.0 Python-2.7.11 Python-3.5.1
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$
一般的に言えば、タールボールが入り.archives
、解凍されたソースが入り.sources
、ビルドが行われ.build
、最終バイナリが保存されます.binaries
。その後、バイナリを$ PATH.binaries
にシンボリックリンクしました。~/mini-bin
私はこれが奇妙なワークフローであることを知っていますが、それは私にとって効果的です。とにかく、ソースからpython-2.7.11(および3.4.0、2.7.11から始まる)を再構築したいと思います。私のシステムではうまく構築されていますが、ncurses、readline、SSLなどをサポートして構築するために必要です。これらのライブラリをソースからコンパイルする必要がありますか?それでは、図書館はどこに置くべきですか? Pythonでビルドするように指示するにはどうすればよいですか?ありがとうございます。良い一日になろう!
答え1
私はUbuntu 20.10から3.9.1を構築しようとしてきました。
ここの依存関係のヒントに従ってください。
https://devguide.python.org/setup/#install-dependents
具体的には、リポジトリから3.9.0をインストールし、ソースリポジトリを有効にした後、次のことを行いました。
sudo apt-get build-dep python3.9
次に、構成フェーズにこれを使用します。
LDFLAGS="-L/usr/lib/x86_64-linux-gnu" ./configure --enable-optimizations
SSLエラーなしでPythonをビルドすることは意味があります。
LDFLAGS プレフィックスがないと、SSL のためビルドが失敗します。
しかし、
make test
モジュールをインポートしたにもかかわらず、SSLテストにはまだ失敗が表示されます。
答え2
SSLにのみ焦点を当てると、多くの答えがあります。
https://serverfault.com/questions/353128/recompiling-python-with-ssl-support-on-ubuntu
https://mail.python.org/pipermail/python-ideas/2014-May/027866.html
https://stackoverflow.com/questions/5937337/installing-python-with-ssl-support-in-local
https://bugs.python.org/issue21541
いいえ、元のSSLソースは必要なく、「apt-get install libssl-dev」のみが必要です。