Linux vine6.5にPython3をインストールしてみた。
インストールを試みたのはPython3,7,2である。ソースからのインストールであるがまず現状のvine6.5でのインストールを試みた。
インストールはできるがインストールされたPythonは大きな二つの不都合を持っていることが判明した:
(1)モジュールtkinterはtcl/tkのヴァージョン8.5以上を必要とする。vine6.5のtcl/tkのヴァージョンは8.4である。
(2)モジュールsslはopensslの比較的新しいヴァージョンを必要とするがvine6,5のものは”too old”として拒否される。
これらの不都合を解消するため以下のことを実行した。
(1)実はvine6,5にはtcl/tkのヴァージョン8.5が用意されているが、このパッケージは8.4へのアップグレードではなく8.4と平行して使えるようになっている。パッケージは:
tk85-8.5.15-1vl6.i686
tcl85-8.5.15-1vl6.i686
tk85-devel-8.5.15-1vl6.i686
tcl85-devel-8.5.15-1vl6.i686
これらを通常の通りインストールする。
(2)インストールされた8.5を使えるようにする:
/usr/binの中にあるtclsh, wishのリンク先をtcl/tk8.4からtcl/tk8.5に変える:
ln -s -d tcl8.5 tclsh
ln -s -d tk8.5 wish
dオプションをつけて8.4用のバックアップを取っておく。
同様に/usr/includeにあるtcl.h, tk.hを8.5用に変更する。
mv tcl.h tcl.8.4
ln -s ./tcl8.5/tcl.h tcl.h
mv tk.h tk.h.8.4
ln -s ./tk8.5/tk.h tk.h
必ず8.4用のバックアップを取っておく。
(3)opensslをソースからインストールする。
最新のヴァージョン1.1.1aをインストールする。インストール先は/usr/localとする。
opensslの動的ライブラリーをPythonは必要とするので/usr/local/libを/etc/ld.so.confに追加。コマンドldconfigで変更をシステムに通知する。
(4)以上で準備ができたが配布されているPythonのソースではそのままではsslモジュールがインストールされないことが判明(ここを参照せよ。このような正確な情報は大変にありがたい)。
ソースを展開して
./configureで
ModulesフォルダーにSetupというモジュール設定のファイルができるが、これを編集する。編集個所は
# Socket module helper for socket(2)
#_socket socketmodule.c
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
赤色の部分にあったコメント(#)を外し、変数SSLの値をopensslのインストール先にする。これでsslモジュールもインストールされる。
後はmake, make installで終わり。以上でPython3がインストール(インストール先は/usr/localである)される。
(5)確認は
Python 3.7.2 (default, Jan 31 2019, 20:16:31)
[GCC 4.9.3] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import tkinter as tk
>>> root=tk.Tk()
で正常にtkの窓がでること。
Python 3.7.2 (default, Jan 31 2019, 20:16:31)
[GCC 4.9.3] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import ssl
>>>
でsslモジュールがインポートされることで分る。