CentOS (Community Enterprise Operating System) は、コミュニティがサポートするフリーでオープンソースのコンピュータプラットフォームで、その上流のソース、Red Hat Enterprise Linux(RHEL)と機能的に互換性があります。
CentOS 8 は 8.5.2111 が最後のリリースになり、開発およびサポートが終了(正式な終了は 2021 年 12 月 31 日)しましたが、CentOS 7 の方は 2024 年 6 月 30 日までメンテナンスアップデートが続けられます。
とある事情で CentOS 7 上で、どうしても最新の Python 3.11.x を使いたい状況になり、/usr/local 以下に、ソースからコンパイルして使うことにしましたので、その顛末を備忘録としてまとめました。
全面的に下記の記事を参考にさせていただきました。
- CentOS7.9(2009)に対してPython3.11のインストール手順メモ - Qiita [2022-11-28]
今回は下記を GNOME Desktop が使えるオプションでインストール、アップデートした環境を使います。
OS | CentOS 7.9-2009 (x86_64) |
準備
インストールするソフトウェアの入手
ソースからコンパイル、インストールするソフトウェアは、下記の2つです。それぞれをダウンロードしておきます。
Python 3.11 をビルドするためには OpenSSL 1.1.1 以上のバージョンが必要になりますが、CentOS 7 で使用している OpenSSL のバージョンは 1.0.2k であるため、より新しい OpenSSL をインストールします。
コンパイル環境
まず、基本的なコンパイル環境を整えます。
[bitwalk@centos7 ~]$ sudo yum group install "Development Tools"
...
次に、OpenSSL と Python をビルドするのに必要な rpm パッケージをインストールします(不要なパッケージがあるかもしれません)。
[bitwalk@centos7 ~]$ sudo yum install bluez-libs-devel bzip2-devel libtirpc-devel libffi-devel ncurses-devel perl-Test-Harness perl-Test-Simple readline-devel sqlite-devel tcl-devel tk-devel tkinter xz-devel zlib-devel
OpenSSL のビルド
まず、ソースを解凍してビルドします。
[bitwalk@centos7 ~]$ cd Downloads [bitwalk@centos7 Downloads]$ ls openssl-1.1.1s.tar.gz Python-3.11.1.tar.xz [bitwalk@centos7 Downloads]$ tar xvf openssl-1.1.1s.tar.gz [bitwalk@centos7 Downloads]$ cd openssl-1.1.1s [bitwalk@centos7 openssl-1.1.1s]$ ls ACKNOWLEDGEMENTS Configurations external NOTES.ANDROID README.ENGINE apps Configure FAQ NOTES.DJGPP README.FIPS appveyor.yml CONTRIBUTING fuzz NOTES.PERL ssl AUTHORS crypto include NOTES.UNIX test build.info demos INSTALL NOTES.VMS tools CHANGES doc LICENSE NOTES.WIN util config engines ms os-dep VMS config.com e_os.h NEWS README wycheproof [bitwalk@centos7 openssl-1.1.1s]$ ./config Operating system: x86_64-whatever-linux2 Configuring OpenSSL version 1.1.1s (0x1010113fL) for linux-x86_64 Using os-specific seed configuration Creating configdata.pm Creating Makefile ********************************************************************** *** *** *** OpenSSL has been successfully configured *** *** *** *** If you encounter a problem while building, please open an *** *** issue on GitHub <https://github.com/openssl/openssl/issues> *** *** and include the output from the following command: *** *** *** *** perl configdata.pm --dump *** *** *** *** (If you are new to OpenSSL, you might want to consult the *** *** 'Troubleshooting' section in the INSTALL file first) *** *** *** ********************************************************************** [bitwalk@centos7 openssl-1.1.1s]$ make ... ... [bitwalk@centos7 openssl-1.1.1s]$ make test ... ... ../test/recipes/99-test_fuzz.t ..................... ok All tests successful. Files=158, Tests=2648, 89 wallclock secs ( 2.71 usr 0.20 sys + 71.28 cusr 28.29 csys = 102.48 CPU) Result: PASS make[1]: Leaving directory `/home/bitwalk/Downloads/openssl-1.1.1s' [bitwalk@centos7 openssl-1.1.1s]$ sudo make install [sudo] password for bitwalk: ... /usr/local/share/doc/openssl/html/man7/x509.html [bitwalk@centos7 openssl-1.1.1s]$
共有ライブラリの検索パスを追加し、システムが OpenSSL 1.1.1s の共有ライブラリを検索できるようにします。
[bitwalk@centos7 openssl-1.1.1s]$ sudo ldconfig -p | grep libssl.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 [bitwalk@centos7 openssl-1.1.1s]$ ldd /usr/local/bin/openssl linux-vdso.so.1 => (0x00007ffecb7d9000) libssl.so.1.1 => not found libcrypto.so.1.1 => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007f3154d41000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3154b25000) libc.so.6 => /lib64/libc.so.6 (0x00007f3154757000) /lib64/ld-linux-x86-64.so.2 (0x00007f3154f45000) [bitwalk@centos7 openssl-1.1.1s]$ sudo sh -c 'echo /usr/local/lib64 > /etc/ld.so.conf.d/local.conf' [bitwalk@centos7 openssl-1.1.1s]$ ls /etc/ld.so.conf.d bind-export-x86_64.conf libiscsi-x86_64.conf dyninst-x86_64.conf local.conf kernel-3.10.0-1160.71.1.el7.x86_64.conf mariadb-x86_64.conf kernel-3.10.0-1160.83.1.el7.x86_64.conf tix-x86_64.conf [bitwalk@centos7 openssl-1.1.1s]$ cat /etc/ld.so.conf.d/local.conf /usr/local/lib64 [bitwalk@centos7 openssl-1.1.1s]$ sudo ldconfig [bitwalk@centos7 openssl-1.1.1s]$ sudo ldconfig -p | grep libssl.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 libssl.so.1.1 (libc6,x86-64) => /usr/local/lib64/libssl.so.1.1 libssl.so (libc6,x86-64) => /usr/local/lib64/libssl.so [bitwalk@centos7 openssl-1.1.1s]$ ldd /usr/local/bin/openssl linux-vdso.so.1 => (0x00007ffd587c4000) libssl.so.1.1 => /usr/local/lib64/libssl.so.1.1 (0x00007f69eccf4000) libcrypto.so.1.1 => /usr/local/lib64/libcrypto.so.1.1 (0x00007f69ec809000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f69ec605000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f69ec3e9000) libc.so.6 => /lib64/libc.so.6 (0x00007f69ec01b000) /lib64/ld-linux-x86-64.so.2 (0x00007f69ecf87000) [bitwalk@centos7 openssl-1.1.1s]$ /usr/local/bin/openssl version OpenSSL 1.1.1s 1 Nov 2022
既存の OpenSSL を依存関係を無視してアンインストールし、ビルドした OpenSSL 1.1.1s のリンクを /usr/bin 以下に貼ります。ただし、既存の openssl-libs は残しておきます。
[bitwalk@centos7 openssl-1.1.1s]$ sudo rpm -e --nodeps openssl [bitwalk@centos7 openssl-1.1.1s]$ sudo ln -s /usr/local/bin/openssl /usr/bin/openssl [bitwalk@centos7 openssl-1.1.1s]$ openssl version OpenSSL 1.1.1s 1 Nov 2022 [bitwalk@centos7 openssl-1.1.1s]$ cd ..
Python のビルド
Python も同様に、ソースを解凍してビルドします。なお、configure に --enable-optimizations オプションを付けると make でエラーが出たので外しました。
[bitwalk@centos7 Downloads]$ ls openssl-1.1.1s openssl-1.1.1s.tar.gz Python-3.11.1.tar.xz [bitwalk@centos7 Downloads]$ tar Jxvf Python-3.11.1.tar.xz ... [bitwalk@centos7 Downloads]$ cd Python-3.11.1 [bitwalk@centos7 Python-3.11.1]$ ls aclocal.m4 Doc LICENSE Objects pyconfig.h.in config.guess Grammar Mac Parser Python config.sub Include Makefile.pre.in PC README.rst configure install-sh Misc PCbuild setup.py configure.ac Lib Modules Programs Tools [bitwalk@centos7 Python-3.11.1]$ ./configure ... configure: creating Makefile configure: If you want a release build with all stable optimizations active (PGO, etc), please run ./configure --enable-optimizations [bitwalk@centos7 Python-3.11.1]$ make ... [bitwalk@centos7 Python-3.11.1]$ make test ... 0:06:18 load avg: 3.38 [434/434] test_concurrent_futures passed (2 min 23 sec) == Tests result: SUCCESS == 413 tests OK. 21 tests skipped: test_dbm_gnu test_dbm_ndbm test_devpoll test_gdb test_idle test_ioctl test_kqueue test_launcher test_msilib test_ossaudiodev test_startfile test_tcl test_tix test_tk test_ttk_guionly test_ttk_textonly test_turtle test_winconsoleio test_winreg test_winsound test_zipfile64 Total duration: 6 min 18 sec Tests result: SUCCESS [bitwalk@centos7 Python-3.11.1]$ sudo make install ... Installing collected packages: setuptools, pip WARNING: The scripts pip3 and pip3.11 are installed in '/usr/local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed pip-22.3.1 setuptools-65.5.0 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [bitwalk@centos7 Python-3.11.1]$
/usr/local/bin にインストールされた python3.11 と pip3.11 のリンクを /usr/bin 以下に貼ります。
[bitwalk@centos7 Python-3.11.1]$ sudo ln -s /usr/local/bin/python3.11 /usr/bin/python3 [bitwalk@centos7 Python-3.11.1]$ sudo ln -s /usr/local/bin/pip3.11 /usr/bin/pip3 [bitwalk@centos7 Python-3.11.1]$ python3 --version Python 3.11.1 [bitwalk@centos7 Python-3.11.1]$ pip3 --version pip 22.3.1 from /usr/local/lib/python3.11/site-packages/pip (python 3.11) [bitwalk@centos7 Python-3.11.1]$
OpenSSL の2つのバージョン 1.0.2k と 1.1.1s がシステムに混在しているので気持ちが悪いのですが、とりあえず Python 3.11.x が動作するようになりました。
そろそろ Python 3.11.2 がリリースされると思いますので、Python のビルドをやり直します。
参考サイト
- /index.html (OpenSSL)
- Welcome to Python.org
にほんブログ村
#オープンソース
0 件のコメント:
コメントを投稿