CentOS 8にPython 3.8をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してCentOS8にPython 3.8をインストール
参考：[RHEL8のパッケージ構成 - BaseOSとApplication Stream - 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)
　　　[基本的なシステム設定の構成 Red Hat Enterprise Linux 8 \| Red Hat Customer Portal](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html-single/configuring_basic_system_settings/index#installing-and-using-python_using-python3)

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux 8 Application Streams Life Cycle - Red Hat Customer Portal](https://access.redhat.com/node/4079021)より、2023-05がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。
なおCentOS Linux 8が2021-12にEOLを迎えるため、それ以降の更新を受けるためにはCentOS Stream8を含めた他ディストリビューションへの移行が必要。

## LOG

### インストール

```shell-session
# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

# yum install -y python38
... 略
```

### 各種確認

```shell-session
# which python{,2,3}
which: no python in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
which: no python2 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
/usr/bin/python3

# ls -al /usr/bin/python*
lrwxrwxrwx. 1 root root   25 Jun 16 10:18 /usr/bin/python3 -> /etc/alternatives/python3
-rwxr-xr-x. 1 root root 7656 May  7 02:54 /usr/bin/python3.8

# python3 -V
Python 3.8.0

# yum module info python38
Last metadata expiration check: 0:04:39 ago on Tue 16 Jun 2020 10:14:42 AM UTC.
Name             : python38
Stream           : 3.8 [d][e][a]
Version          : 8020020200507003655
Context          : bbc63041
Architecture     : x86_64
Profiles         : build, common [d]
Default profiles : common
Repo             : AppStream
Summary          : Python programming language, version 3.8
Description      : This module gives users access to the internal Python 3.8 in RHEL8, as
                 : well as provides some additional Python packages the users might need.
                 : In addition to these you can install any python3-* package available
                 : in RHEL and use it with Python from this module.
Requires         : platform:[el8]
Artifacts        : Cython-0:0.29.14-4.module_el8.2.0+317+61fa6e7d.src
                 : PyYAML-0:5.1.2-6.module_el8.2.0+317+61fa6e7d.src
                 : babel-0:2.7.0-10.module_el8.2.0+317+61fa6e7d.src
                 : mod_wsgi-0:4.6.8-3.module_el8.2.0+317+61fa6e7d.src
                 : numpy-0:1.17.3-5.module_el8.2.0+317+61fa6e7d.src
                 : python-PyMySQL-0:0.9.3-3.module_el8.2.0+317+61fa6e7d.src
                 : python-asn1crypto-0:1.2.0-3.module_el8.2.0+317+61fa6e7d.src
                 : python-cffi-0:1.13.2-3.module_el8.2.0+317+61fa6e7d.src
                 : python-chardet-0:3.0.4-19.module_el8.2.0+317+61fa6e7d.src
                 : python-cryptography-0:2.8-3.module_el8.2.0+317+61fa6e7d.src
                 : python-idna-0:2.8-6.module_el8.2.0+317+61fa6e7d.src
                 : python-jinja2-0:2.10.3-4.module_el8.2.0+317+61fa6e7d.src
                 : python-lxml-0:4.4.1-4.module_el8.2.0+317+61fa6e7d.src
                 : python-markupsafe-0:1.1.1-6.module_el8.2.0+317+61fa6e7d.src
                 : python-ply-0:3.11-8.module_el8.2.0+317+61fa6e7d.src
                 : python-psutil-0:5.6.4-3.module_el8.2.0+317+61fa6e7d.src
                 : python-psycopg2-0:2.8.4-4.module_el8.2.0+317+61fa6e7d.src
                 : python-pycparser-0:2.19-3.module_el8.2.0+317+61fa6e7d.src
                 : python-pysocks-0:1.7.1-4.module_el8.2.0+317+61fa6e7d.src
                 : python-requests-0:2.22.0-9.module_el8.2.0+317+61fa6e7d.src
                 : python-six-0:1.12.0-9.module_el8.2.0+317+61fa6e7d.src
                 : python-urllib3-0:1.25.7-4.module_el8.2.0+317+61fa6e7d.src
                 : python-wheel-0:0.33.6-5.module_el8.2.0+317+61fa6e7d.src
                 : python38-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.src
                 : python38-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-Cython-0:0.29.14-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-Cython-debuginfo-0:0.29.14-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-PyMySQL-0:0.9.3-3.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-asn1crypto-0:1.2.0-3.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-babel-0:2.7.0-10.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-cffi-0:1.13.2-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-cffi-debuginfo-0:1.13.2-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-chardet-0:3.0.4-19.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-cryptography-0:2.8-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-cryptography-debuginfo-0:2.8-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-debug-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-debuginfo-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-debugsource-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-devel-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-idle-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-idna-0:2.8-6.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-jinja2-0:2.10.3-4.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-libs-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-lxml-0:4.4.1-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-lxml-debuginfo-0:4.4.1-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-markupsafe-0:1.1.1-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-markupsafe-debuginfo-0:1.1.1-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-mod_wsgi-0:4.6.8-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-numpy-0:1.17.3-5.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-numpy-debuginfo-0:1.17.3-5.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-numpy-doc-0:1.17.3-5.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-numpy-f2py-0:1.17.3-5.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-pip-0:19.2.3-5.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-pip-wheel-0:19.2.3-5.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-ply-0:3.11-8.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-psutil-0:5.6.4-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-psutil-debuginfo-0:5.6.4-3.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-psycopg2-0:2.8.4-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-psycopg2-debuginfo-0:2.8.4-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-psycopg2-doc-0:2.8.4-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-psycopg2-tests-0:2.8.4-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-pycparser-0:2.19-3.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-pysocks-0:1.7.1-4.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-pytz-0:2019.3-3.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-pyyaml-0:5.1.2-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-pyyaml-debuginfo-0:5.1.2-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-requests-0:2.22.0-9.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-rpm-macros-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-scipy-0:1.3.1-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-scipy-debuginfo-0:1.3.1-4.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-setuptools-0:41.6.0-4.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-setuptools-wheel-0:41.6.0-4.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-six-0:1.12.0-9.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-test-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-tkinter-0:3.8.0-6.module_el8.2.0+317+61fa6e7d.x86_64
                 : python38-urllib3-0:1.25.7-4.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-wheel-0:0.33.6-5.module_el8.2.0+317+61fa6e7d.noarch
                 : python38-wheel-wheel-0:0.33.6-5.module_el8.2.0+317+61fa6e7d.noarch
                 : python3x-pip-0:19.2.3-5.module_el8.2.0+317+61fa6e7d.src
                 : python3x-setuptools-0:41.6.0-4.module_el8.2.0+317+61fa6e7d.src
                 : pytz-0:2019.3-3.module_el8.2.0+317+61fa6e7d.src
                 : scipy-0:1.3.1-4.module_el8.2.0+317+61fa6e7d.src

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
```