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

# はじめに

Application Stream(AppStream)を利用してRHEL8にPython 3.8をインストール
参考：[RHEL8のパッケージ構成 - BaseOSとApplication Stream - 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux 8 Application Streams Life Cycle - Red Hat Customer Portal](https://access.redhat.com/node/4079021)より、2023-05がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

```shell-session
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)

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

### 各種確認

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

# ll /usr/bin/python*
lrwxrwxrwx. 1 root root   25 May  1 15:00 /usr/bin/python3 -> /etc/alternatives/python3
-rwxr-xr-x. 1 root root 7648 Mar  9 14:05 /usr/bin/python3.8

# python3 -V
Python 3.8.0

# yum module info python38
Updating Subscription Management repositories.
Last metadata expiration check: 0:17:37 ago on Fri 01 May 2020 02:47:14 PM EDT.
Name             : python38
Stream           : 3.8 [d][e][a]
Version          : 8020020200309184510
Context          : bbc63041
Architecture     : x86_64
Profiles         : build, common [d]
Default profiles : common
Repo             : rhel-8-for-x86_64-appstream-rpms
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+5234+f98739b6.src
                 : Cython-debugsource-0:0.29.14-4.module+el8.2.0+5234+f98739b6.x86_64
                 : PyYAML-0:5.1.2-6.module+el8.2.0+5234+f98739b6.src
                 : PyYAML-debugsource-0:5.1.2-6.module+el8.2.0+5234+f98739b6.x86_64
                 : babel-0:2.7.0-10.module+el8.2.0+5234+f98739b6.src
                 : mod_wsgi-0:4.6.8-3.module+el8.2.0+5234+f98739b6.src
                 : numpy-0:1.17.3-5.module+el8.2.0+5978+503155c0.src
                 : numpy-debugsource-0:1.17.3-5.module+el8.2.0+5978+503155c0.x86_64
                 : python-PyMySQL-0:0.9.3-3.module+el8.2.0+5234+f98739b6.src
                 : python-asn1crypto-0:1.2.0-3.module+el8.2.0+5234+f98739b6.src
                 : python-cffi-0:1.13.2-3.module+el8.2.0+5234+f98739b6.src
                 : python-cffi-debugsource-0:1.13.2-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python-chardet-0:3.0.4-19.module+el8.2.0+5234+f98739b6.src
                 : python-cryptography-0:2.8-3.module+el8.2.0+5234+f98739b6.src
                 : python-cryptography-debugsource-0:2.8-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python-idna-0:2.8-6.module+el8.2.0+5234+f98739b6.src
                 : python-jinja2-0:2.10.3-4.module+el8.2.0+5234+f98739b6.src
                 : python-lxml-0:4.4.1-4.module+el8.2.0+5234+f98739b6.src
                 : python-lxml-debugsource-0:4.4.1-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python-markupsafe-0:1.1.1-6.module+el8.2.0+5234+f98739b6.src
                 : python-markupsafe-debugsource-0:1.1.1-6.module+el8.2.0+5234+f98739b6.x86_64
                 : python-ply-0:3.11-8.module+el8.2.0+5234+f98739b6.src
                 : python-psutil-0:5.6.4-3.module+el8.2.0+5234+f98739b6.src
                 : python-psutil-debugsource-0:5.6.4-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python-psycopg2-0:2.8.4-4.module+el8.2.0+5234+f98739b6.src
                 : python-psycopg2-debugsource-0:2.8.4-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python-pycparser-0:2.19-3.module+el8.2.0+5234+f98739b6.src
                 : python-pysocks-0:1.7.1-4.module+el8.2.0+5234+f98739b6.src
                 : python-requests-0:2.22.0-9.module+el8.2.0+5234+f98739b6.src
                 : python-six-0:1.12.0-9.module+el8.2.0+5234+f98739b6.src
                 : python-urllib3-0:1.25.7-4.module+el8.2.0+5234+f98739b6.src
                 : python-wheel-0:0.33.6-5.module+el8.2.0+5978+503155c0.src
                 : python38-0:3.8.0-6.module+el8.2.0+5978+503155c0.src
                 : python38-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-Cython-0:0.29.14-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-Cython-debuginfo-0:0.29.14-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-PyMySQL-0:0.9.3-3.module+el8.2.0+5234+f98739b6.noarch
                 : python38-asn1crypto-0:1.2.0-3.module+el8.2.0+5234+f98739b6.noarch
                 : python38-babel-0:2.7.0-10.module+el8.2.0+5234+f98739b6.noarch
                 : python38-cffi-0:1.13.2-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-cffi-debuginfo-0:1.13.2-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-chardet-0:3.0.4-19.module+el8.2.0+5234+f98739b6.noarch
                 : python38-cryptography-0:2.8-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-cryptography-debuginfo-0:2.8-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-debug-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-debuginfo-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-debugsource-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-devel-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-idle-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-idna-0:2.8-6.module+el8.2.0+5234+f98739b6.noarch
                 : python38-jinja2-0:2.10.3-4.module+el8.2.0+5234+f98739b6.noarch
                 : python38-libs-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-lxml-0:4.4.1-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-lxml-debuginfo-0:4.4.1-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-markupsafe-0:1.1.1-6.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-markupsafe-debuginfo-0:1.1.1-6.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-mod_wsgi-0:4.6.8-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-numpy-0:1.17.3-5.module+el8.2.0+5978+503155c0.x86_64
                 : python38-numpy-debuginfo-0:1.17.3-5.module+el8.2.0+5978+503155c0.x86_64
                 : python38-numpy-doc-0:1.17.3-5.module+el8.2.0+5978+503155c0.noarch
                 : python38-numpy-f2py-0:1.17.3-5.module+el8.2.0+5978+503155c0.x86_64
                 : python38-pip-0:19.2.3-5.module+el8.2.0+5979+f9f0b1d2.noarch
                 : python38-pip-wheel-0:19.2.3-5.module+el8.2.0+5979+f9f0b1d2.noarch
                 : python38-ply-0:3.11-8.module+el8.2.0+5234+f98739b6.noarch
                 : python38-psutil-0:5.6.4-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-psutil-debuginfo-0:5.6.4-3.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-psycopg2-0:2.8.4-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-psycopg2-debuginfo-0:2.8.4-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-psycopg2-doc-0:2.8.4-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-psycopg2-tests-0:2.8.4-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-pycparser-0:2.19-3.module+el8.2.0+5234+f98739b6.noarch
                 : python38-pysocks-0:1.7.1-4.module+el8.2.0+5234+f98739b6.noarch
                 : python38-pytz-0:2019.3-3.module+el8.2.0+5234+f98739b6.noarch
                 : python38-pyyaml-0:5.1.2-6.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-pyyaml-debuginfo-0:5.1.2-6.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-requests-0:2.22.0-9.module+el8.2.0+5234+f98739b6.noarch
                 : python38-rpm-macros-0:3.8.0-6.module+el8.2.0+5978+503155c0.noarch
                 : python38-scipy-0:1.3.1-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-scipy-debuginfo-0:1.3.1-4.module+el8.2.0+5234+f98739b6.x86_64
                 : python38-setuptools-0:41.6.0-4.module+el8.2.0+5978+503155c0.noarch
                 : python38-setuptools-wheel-0:41.6.0-4.module+el8.2.0+5978+503155c0.noarch
                 : python38-six-0:1.12.0-9.module+el8.2.0+5234+f98739b6.noarch
                 : python38-test-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-tkinter-0:3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
                 : python38-urllib3-0:1.25.7-4.module+el8.2.0+5234+f98739b6.noarch
                 : python38-wheel-0:0.33.6-5.module+el8.2.0+5978+503155c0.noarch
                 : python38-wheel-wheel-0:0.33.6-5.module+el8.2.0+5978+503155c0.noarch
                 : python3x-pip-0:19.2.3-5.module+el8.2.0+5979+f9f0b1d2.src
                 : python3x-setuptools-0:41.6.0-4.module+el8.2.0+5978+503155c0.src
                 : pytz-0:2019.3-3.module+el8.2.0+5234+f98739b6.src
                 : scipy-0:1.3.1-4.module+el8.2.0+5234+f98739b6.src
                 : scipy-debugsource-0:1.3.1-4.module+el8.2.0+5234+f98739b6.x86_64

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