質問: このリンク先の通り実行したのですが --- **Q1.今どういう状態ですか?** ``` /usr/bin/python。デフォルトのPython2.7 /usr/bin/python3.6。今回インストールしたPython3.6 ``` ・2つインストールされている? ・「/usr/bin/python」ではなく「/usr/bin/python3.6」にインストールされた理由は? ・IUSレポジトリ経由で「/usr/bin/python」へインストールすることは出来ない? --- **Q2.優先度について** ・使用する時は何れが優先されるでしょうか? ・何れの「/usr/bin」を指定するかで決まるから、デフォルトとかはない?? --- **Q3.シンボリックリンクの意味について** ・下記シンボリックリンクを作成していますが、どういう意味ですか? ・「/usr/bin/python3」が呼ばれた場合、「/usr/bin/python3.6」を呼ぶ? ・既存の「/usr/bin/python3」を全て「/usr/bin/python3.6」へ書換可能なら、わざわざ作成する必要はない? ``` # ln -s /usr/bin/python3.6 /usr/bin/python3 ``` --- **Q4.将来的なシンボリックリンクの変更対応について** ・上記シンボリックリンクを作成した場合、将来的なバージョンアップ対応はどうすれば良いですか? ・例えばPython3.7を「/usr/bin/python3.7」へインストールした場合、上記シンボリックリンクを削除して新たに作成し直す必要がある? ・Python3.7を「/usr/bin/python」へインストールした場合は何もしなくて良い? --- **環境** ・CentOS7 ・IUSレポジトリ ・yumインストール ・Python3.6 ・既存のPython2.7は使用しない前提
回答: CentOSおよびそのベースとなるRHELは、各パッケージは安定した(比較的古い、枯れた)バージョンを採用するディストリビューションなので、Pythonも2.x系がデフォルトになっています。 IUSなどの外部リポジトリが提供するパッケージで、公式リポジトリよりも新しいバージョン(今回のPython 3.xなど)を配布する場合、公式パッケージを置き換えてしまうとシステムを壊す恐れがあるので、区別が付くように別ディレクトリや別名で呼び出せるようにインストールされます。 **IUSリポジトリのポリシー** > > No automatic replacement of stock RPM packages. > > > OSデフォルトが`/usr/bin/python`、IUSで入れたものが`/usr/bin/python3.6`と実行ファイルの名前が違うので優先度はありません。`3.6`を使いたければユーザーが明示的に`#!`行などでパスを指定する必要があります。 シンボリックリンクはメジャーバージョンの`python3`だけで呼び出せるようにしているだけなので、マイナー・マイクロバージョンが変わったらその都度シンボリックリンクを張り直す必要があります。 なお、`yum`コマンド自体もPythonで動いていますので、システムデフォルトの`/usr/bin/python`を`3.x`に置き換えるのは(例えシンボリックリンクなどでも)動作に影響が出る可能性があるのでお勧めしません。