0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu 20.04でPython3.6をインストールしようとして詰まった話

Last updated at Posted at 2024-07-21

はじめに

Ubuntu Server 20.04でわけあってPython3.6をインストールしようとしたら、
いろいろ大変だったので備忘録としてここに残そうと思う

ネットでよく見るaptからする方法(失敗した方法)

Ubuntuでは一般的に何らかのパッケージをインストールするときはaptパッケージマネージャーを使うが、
Ubuntu 20.04でのaptの公式リポジトリからはすでにPython3.6がなくなっている

ネットでは、Python3.6を提供しているPrivate Package Archiveであるdeadsnake/ppaをリポジトリに追加してapt install python3.6することでこれを解決している記事が多いが、
自分の環境ではリポジトリの追加まではできても、python3.6というパッケージがレポジトリに追加されることは無かった

これは、deadsnake/ppaのドキュメントを見る限り、
Ubuntu 20.04ではPython 3.6がサポート対象外になっているからだと考えられる

一応こちらの方式でのやり方も記述しておく

1. deadsnake/ppaaptリポジトリへ追加

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

2. Python 3.6のインストール

sudo apt install python3.6

Python公式のソースコードからインストールする方法(成功した方法)

aptからインストールすることができなかったので、初心に帰って(?)ソースコードからコンパイルしてインストールすることにした
実際のやり方はこちらを参考にして以下の手順で行った

1. インストールに必要な依存関係をインストール

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget

2. ソースコードのダウンロード

Ubuntuでは/tmpがダウンロードしたプログラムのソースコードを一時的に置く場所として一般的らしいのでそこにダウンロードしてくる

cd /tmp
wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz

3. ソースコードの解凍

tar -xf Python-3.6.15.tgz

4. システムの検証とPythonの最適化

cd Python-3.6.15
./configure --enable-optimizations

5. Pythonのインストール

公式ドキュメントにもあったが、make installでもインストールできるが、既存のPython3バイナリを上書きしてしまう可能性があるので、以下のコマンドで、/usr/bin/python3.6のみをインストールした

sudo make altinstall

...するとなぜか、Python3.6.15の場合Segmentation faultが起きて途中でインストールもといコンパイルが終了する

6. Segmentation faultへの対処

ここで(も)先人の知恵をお借りして、この方がやったように外部からのパッチファイルを適用してコンパイルを実行する
ただ、この方はpyenv installのpオプションを利用してパッチ、コンパイルを行っているが、こちらはそうではないため、直にパッチをあてる
といってもやることは愚直に、当該ファイルを書き換えるだけで具体的には以下の二つをやるだけ

  1. ./Include/objimpl.hの258行目のdummy変数の型をlong doubleに変更
  2. ./Objects/obmalloc.cの653行目以降をこのように変更

そして、再度sudo make altinstallして無事 /usr/local/bin 内にインストール完了!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?