python

超省略!真っ新なubuntuにバージョン違いのPython入れてみる

#サーバ
written by クッキーさん

皆さんこんにちわ!クッキーさんです
梅雨入ったばかりなのに、家庭菜園で育ててたスイカさんが雨でやられてしまい、少しげんなりしております。

さて今日は、入れたてのubuntuにデフォルトで入っているPythonよりすこーし古いのを入れたかったのですが、調べたら物凄くごちゃごちゃしてたので、凄く簡略化した物を備忘として書いてみたいと思います。

前提条件

OS:ubuntu 20.04.3 LTS
入れたいPython:Python 3.7.6
ネットワーク設定とか諸々必要な環境設定は完了している。
※ただこの記事では手動でソース持ってきてインストールするので、正直初期設定はどうでもいいです!

インストール

前提パッケージインストール

色々なサイトで大量の前提パッケージとか乗ってますが、インストールに対しては下記の2つだけ入れれば問題なさそうでした。

sudo apt install build-essential
sudo apt install zlib1g-dev

環境固有かわかりませんがaptがUndetermined Error吐きまくっていたので、apt update大量に実行しながらインストールしてました。謎です。

パッケージの解凍

ここからPython3.7.6のパッケージを落としてきて、ubuntuに適当なディレクトリ(今回は/download/)を作成してソースを入れておきます。
wgetとかでパッケージ落としてくるのでも、どっちでも良いのでお好きな方で!
持ってきた状態では、tar.xzで圧縮されているので、下記コマンドを実行して解凍します。

$ cd /download/
$ xz -dc Python-3.7.6.tar.xz | tar xfv -

カレントディレクトリ移動しておかないと、ユーザのホームフォルダに展開されるのでご注意を。

インストール

2コマンド実行するだけで、インストールまで実行されます。
分かりやすいように、カレントディレクトリ移動しているので必要に応じてパスを変更してください。

$ cd Python-3.7.6
$ ./configure
$ sudo make altinstall

sudo make installでも良いのですが、事前に入っていたPythonも利用する可能性があることを考慮し、既存環境を残した状態でインストールできる「altinstall」にしてあります。

優先度変更

インストールは上項で完了していますが、この状態では既存のPythonだけが呼び出される状態になっています。
ubuntu 20.04.3ではPython3.8が事前に入っているので、下記のコマンド実行してそれぞれのPythonに優先度を設定します。

#優先度設定(パスは適宜変更)
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
$ sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 2
#優先度確認(Python 3.7がauto modeになっていることを確認する)
$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/local/bin/python3.7 2 auto mode
1 /usr/bin/python3.8 1 manual mode
2 /usr/local/bin/python3.7 2 manual mode

上記で「python」で呼び出すと「/usr/local/bin/python3.7」が呼び出されるようにシンボリックリンクが作成されました。
そのため、Python3のバージョン確認をすると3.8が、Pythonで呼び出すと3.7が呼び出されるような状態に進化しています。

ちなみにインストール部分で「sudo make install」にてインストールを実行すると、Python3のバージョンが3.7に切り替わります。
既存のPython使わないようであれば、上記でも良いかもしれません。

最後に

Pythonのインストールについて物凄くざっくりと説明してみました!
というのも、ubuntu実は触ったことないおじさんだったので、備忘的にまとめておかないと忘れるリスクが・・・。
RHELクローンばかりしか触っていなかったので、Debian系は新鮮で非常に面白い経験でした!
癖強な気がしますが、触ったことがない人がいれば参考になれば幸いです。

以上、クッキーさんでした。