python36uとは一体なんなのか調べてみた。

Dockerを使ってCentOS7+python3.6+Django+uWSGI+Nginx+PostgreSQLな環境を作ろうとしていて色々調べていたら

```shell
$ sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
$ sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
```
みたいな導入方法が書いてあって「ん？python36uってなんぞ？python36にuってなんぞ？？？」と思ったので調べてみた

ius-releaseについては公式でも見てください

[IUS](https://ius.io/)


## 既存情報

[KUSANAGI on ConoHaにPython3を入れる！ - Qiita](https://qiita.com/yamazaki/items/3d9675600ebd42b0408d)

>34-36まであったので、36で良さそうだけど`python36.x86_64`と`python36u.x86_64`で、`u`が付いている36とそうでないのがある... この違いは？

>う...ん... 軽く調べたけれど、`u`のあるなしがよくわからない...

> - [さくらVPS(CentOS7)　yumでPythonをインストール - naritoブログ](https://torina.top/detail/359/)
>  - Pythonは標準で、仮想環境が作れるの？今度詳しく調べよっ
> - [【Python】【CentOS7】Python 3.6.2 を「yum からインストールする手順」と「ソースからインストールする手順」 | 100%レンタルサーバーを使いこなすサイト](https://go-journey.club/archives/4426#yum_Python-2)
> - [CentOS6.7 に Python3系, pip3, virtualenv, Flask をインストールする - まえちゃんろぐ](https://blog.seiyamaeda.com/11501)
>
>検索すると、どこも全て`36u`でインストールしているので、そちらが正しいのでしょう。理由はわからないけれど、とりあえず、それでインストール。


わからんでスルーしたんかーーーーーい！！！！みたいなツッコミを一人で入れつつこれ以外にめぼしい情報が無かったので自分で色々トライしてみた

## yum info

兎にも角にもyumでインストールできるのだからinfoいけば情報が書いてあるだろう。

```shell
$ sudo yum info python36u

Loaded plugins: fastestmirror, ovl
epel/x86_64/metalink                                                          | 7.3 kB  00:00:00
epel                                                                          | 4.7 kB  00:00:00
ius                                                                           | 2.3 kB  00:00:00
(1/4): epel/x86_64/group_gz                                                   | 266 kB  00:00:00
(2/4): ius/x86_64/primary_db                                                  | 250 kB  00:00:01
(3/4): epel/x86_64/updateinfo                                                 | 908 kB  00:00:01
(4/4): epel/x86_64/primary_db                                                 | 6.3 MB  00:00:06
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.iij.ad.jp
 * ius: mirrors.kernel.org
 * updates: ftp.iij.ad.jp
Available Packages
Name        : python36u
Arch        : x86_64
Version     : 3.6.4
Release     : 1.ius.centos7
Size        : 56 k
Repo        : ius/x86_64
Summary     : Interpreter of the Python programming language
URL         : https://www.python.org/
License     : Python
Description : Python is an accessible, high-level, dynamically typed, interpreted programming
            : language, designed with an emphasis on code readibility.
            : It includes an extensive standard library, and has a vast ecosystem of
            : third-party libraries.
            :
            : The python36u package provides the "python3.6" executable: the reference
            : interpreter for the Python language, version 3.
            : The majority of its standard library is provided in the python36u-libs package,
            : which should be installed automatically along with python36u.
            : The remaining parts of the Python standard library are broken out into the
            : python36u-tkinter and python36u-test packages, which may need to be installed
            : separately.
            :
            : Documentation for Python is provided in the python36u-docs package.
            :
            : Packages containing additional libraries for Python are generally named with
            : the "python36u-" prefix.

```
とりあえずえいごわかんないなのでDescriptionをGoogle翻訳に投げた

```
Pythonは、アクセス可能な、高度な、動的に型付けされたインタプリタ型プログラミングです
コードの読みやすさに重点を置いて設計されています。
豊富な標準ライブラリを含み、幅広いエコシステムを備えています
サードパーティのライブラリ。
python36uパッケージは "python3.6"実行可能ファイルを提供します：参照
バージョン3のPython言語のインタプリタです。
標準ライブラリの大半はpython36u-libsパッケージで提供されていますが、
python36uと一緒に自動的にインストールする必要があります。
Python標準ライブラリの残りの部分は、
python36u-tkinterとpython36u-testパッケージ（インストールが必要な場合があります）
別々に。
Pythonのドキュメントはpython36u-docsパッケージに含まれています。
Python用の追加ライブラリを含むパッケージは、
"python36u-"接頭辞。
```

>The python36u package provides the "python3.6" executable: the reference interpreter for the Python language, version 3.

Python3の用のインタープリタなのか…

ん？Pythonは元々インタープリター言語で標準搭載ではなかったか？？？あれは僕の幻想だったのか？？？
と思いつつ、python36 == python36uなのではという仮設を立てて再度`yum info`を実行

```shell
$ sudo yum info python36
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirror.dmmlabs.jp
 * extras: ftp.iij.ad.jp
 * ius: hkg.mirror.rackspace.com
 * updates: ftp.iij.ad.jp
Available Packages
Name        : python36
Arch        : x86_64
Version     : 3.6.3
Release     : 7.el7
Size        : 64 k
Repo        : epel/x86_64
Summary     : Interpreter of the Python programming language
URL         : https://www.python.org/
License     : Python
Description : Python is an accessible, high-level, dynamically typed, interpreted programming
            : language, designed with an emphasis on code readibility.
            : It includes an extensive standard library, and has a vast ecosystem of
            : third-party libraries.
            :
            : The ${name} package provides the "python3" executable: the reference
            : interpreter for the Python language, version 3.
            : The majority of its standard library is provided in the python36-libs package,
            : which should be installed automatically along with python36.
            : The remaining parts of the Python standard library are broken out into the
            : python36-tkinter and python36-test packages, which may need to be installed
            : separately.
            :
            : Documentation for Python is provided in the python36-docs package.
            :
            : Packages containing additional libraries for Python are generally named with
            : the "python36-" prefix.
```

どうやら別物ではあるらしい。
だがどう違うのかわからん。

# pkgs.org
世の中にはパッケージをwebから検索できるサイトがあるらしいのでそこでも調べてみた

[python36-3.6.3-7.el7.x86_64.rpm CentOS 7 Download](https://centos.pkgs.org/7/epel-x86_64/python36-3.6.3-7.el7.x86_64.rpm.html)
[python36u-3.6.4-1.ius.centos7.x86_64.rpm CentOS 7 Download](https://centos.pkgs.org/7/ius-x86_64/python36u-3.6.4-1.ius.centos7.x86_64.rpm.html)

どうやら提供元のリポジトリが違うもようで、

| pkgname | Repository|python Version|
|:-:|:-:|:-:|
|python36|EPEL x86_64|3.6.3|
|python36u|IUS Community Packages x86_64|3.6.4|

とのことだった。おそらくEPELの後発であるIUSが独自の基準で選んだpythonのリビジョンやらがEPELと違うので同じpackage nameだと不都合だからuをつけたんだろう（多分)


# 結論

python36はEPELが提供元
python36uはIUSが提供元
どっちを使うかはユーザーの基準しだい。
マイナーバージョンとしては同じなのでどちらを使っても問題は無さそう。

え？リビジョンも細かく指定したい？パッケージマネージャー使ってんな。自分でソースからコンパイルしてビルドしてろ。