まず、OpenSSLのインストール。
tar zxvf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l
./config –prefix=/usr/local/openssl1.1.1l –openssldir=/usr/local/openssl1.1.1l -rpath=/usr/local/openssl1.1.1l
make
make test
make install
でさくっと入るが、
/usr/local/openssl1.1.1l/bin/openssl version -a
でバージョン確認をすると、libssl.so.1.1が無いと表示される。しかし、/usr/local/openssl1.1.1l/lib の下に、libssl.so.1.1 はちゃんとある。
実行時だけしのげればいいなら、
setenv LD_LIBRARY_PATH /usr/local/openssl1.1.1l/lib
でエラーは出なくなる。
次にcurlを入れる。この時点で一番新しいバージョンをインストール。
tar zxvf curl-7.80.0.tar.gz
cd curl-7.80.0
./configure –prefix=/usr/local/curl7.80.0 –with-ssl=/usr/local/openssl1.1.1l/ –enable-libcurl-option
make
make install
動作確認は、
/usr/local/curl7.80.0/bin/curl -V
>
で、こちらも、LD_LIBRARY_PATHの設定前はSSLエラーが出たが設定後は動くようになった。
ド嵌まりしたのがPython。Python-3.10.0.tgz をダウンロード
tar zxvf Python-3.10.0.tgz
cd Python-3.10.0.tgz
./configure –prefix /usr/local/python3.10.0/ –with-pydebug –with-openssl=/usr/local/src/openssl-1.1.1l –with-ssl
このとき、–with-openssl=のディレクトリは、インストール先つまり配下にincludeやlibのあるディレクトリを指定したのでは動かない。インストール前にソースを解凍したディレクトリで、openssl.pcのある場所を書かないと、
checking for openssl/ssl.h in /usr/local/openssl-1.1.1l… no
checking whether compiling and linking against OpenSSL works… no
というエラーが出る。これが出ている間はコンパイルしてもOpenSSLは使えない。ここをクリアすると、一応チェックでOpenSSLまわりがyesになってコンパイルはできる。
しかし、
/usr/local/python3.10.0/bin/pip3.10 list
を実行すると、
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
と出て、外部にパッケージを取りに行く接続でコケるし、pip自体のアップグレードもできない。
環境変数かな、と思って、
setenv PATH “${PATH}:/usr/local/openssl-1.1.1l/bin”
setenv LD_LIBRARY_PATH /usr/local/openssl-1.1.1l/lib
setenv LDFLAGS “-L /usr/local/openssl-1.1.1l/lib -Wl,-rpath,/usr/local/openssl-1.1.1l/lib”
などとやってみたけど結果は変わらず。
コンパイルオプションかなと思って
./configure –prefix /usr/local/python3.10.0/ –with-pydebug –with-openssl=/usr/local/src/openssl-1.1.1l –with-ssl CFLAGS=”-I/usr/local/openssl-1.1.1l/include” LDFLAGS=”-L/usr/local/openssl-1.1.1l/”
などとあからさまにやってみたけどダメ。
結局、Python-3.10.0/Modules/Setupを編集。コメントアウトを外して、
OPENSSL=/usr/local/openssl1.1.1l
# To statically link OpenSSL:
_ssl _ssl.c \
-I$(OPENSSL)/include -L$(OPENSSL)/lib \
-l:libssl.a -Wl,–exclude-libs,libssl.a \
-l:libcrypto.a -Wl,–exclude-libs,libcrypto.a
_hashlib _hashopenssl.c \
-I$(OPENSSL)/include -L$(OPENSSL)/lib \
-l:libcrypto.a -Wl,–exclude-libs,libcrypto.a
のように、staticリンクさせてから、すぐ上のオプションで./configureして、make celanしてmakeしてmake installで、やっとOpenSSLを見失わずに実行できるようになった。
ウェブサイトを見ても、OpenSSLをインストールしましょうとか、Macで同様のことになったのでhomebrewでPytionとOpenSSLを最インストールとか、いろんなやり方がいっぱい出てくるのだけど、Setupを直接いじってみては、と指摘していた人を一人だけ海外で見つけた。