UbuntuにPythonをinstallする手順 あとmakeコマンドって何?とか


その1 ちょっと時間かかりますが、なんかいっちゃんええやつらしい

sudo apt update sudo apt install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev \ libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev 
wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz #ここは公式ページからリンクコピーして貼り付けて  
tar -xzf Python-3.11.0.tgz 
cd Python-3.11.0 
./configure --enable-optimizations   
make 
sudo make install

最後に再起動忘れずに!ここで沼る。
再起動しない場合は

1.パスの設定変更


# 新しいPythonのパスを確認
which python3

# PATHに新しいPythonのディレクトリを追加
export PATH="/usr/local/bin:$PATH"

# 環境変数を再読み込み
source ~/.bashrc  # または使用しているシェルに応じて: source ~/.zshrc など

2.シェルの再起動

exec $SHELL

3. ログアウトして再ログイン:

システム全体に対しては、ログアウトして再ログインすることで、多くの環境変数が更新されます。これも、再起動せずに環境をリフレッシュする良い方法です。ただし、システム全体で反映されるわけではなく、ユーザーセッションに限定されることが多いため、再起動が必要な場合もあります。

4. 特定のサービスの再起動:

Pythonを利用する特定のサービス(例えば、Webサーバや他のデーモンプロセス)が存在する場合、そのサービスのみを再起動することで影響を限定的に抑えながら新しいPythonを適用できます。

sudo systemctl restart service_name

5. 仮想環境の使用 (venv や virtualenv):

仮想環境を使用することで、システム全体に影響を与えることなく、新しいPythonバージョンや特定のパッケージをプロジェクト固有の環境で使用できます。これにより、システムの他の部分を変更せずに、Pythonの異なるバージョンを簡単に管理できるようになります。

仮想環境のセットアップ例:

python3 -m venv myenv source myenv/bin/activate

特に開発者にとって便利で、再起動の必要がない点で優れています。仮想環境を使用することで、依存関係やバージョンの管理もシンプルになります。

公式Pythonダウンロードページ

./configure --enable-optimizations 

--enable-optimizationsは好み
このオプションを指定すると、ビルド時にPythonの実行速度を最適化するためのフラグが追加され、特にmakeコマンドでコンパイルされる際に、-O3という最適化フラグが有効になります。また、いくつかの標準ライブラリの高速化が行われます。

目的:

  • パフォーマンス重視でビルドしたい場合。特に、大規模なアプリケーションや計算集約的な処理を行う場合に効果があります。

  • --enable-optimizationsを使うことで、makeの実行が通常よりも時間がかかる可能性がありますが、完成したPythonのバイナリはより最適化された形で動作します。

この手法はちょっと時間かかる。
30分もかかるわけではないけど。


makeコマンドについてはあとで解説

その2 ディレクトリを指定する

例えば、管理者権限のない環境などで、ホームディレクトリにPythonをインストールする場合。
デフォルトだと、Pythonは /usr/local/ 以下にインストールされちゃうので、インストール場所を指定してあげる。
/usr/local 以外のディレクトリにインストールする場合は、configure に --prefix オプションを指定します。

cd Python3.x.y
./configure --prefix=/home/user/.local/python
make
make install

その3 めっちゃ楽らしい

pyenvによるビルド

ビルト用のツールとして pyenvのpython-build を利用すると、ソースのダウンロードからインストールまで、コマンド一つで実行できるとのこと。次の例は、Python 3.8.3 を、ディレクトリ ~/python3.8 にインストールします。

git clone git://github.com/pyenv/pyenv.git
pyenv/plugins/python-build/bin/python-build 3.8.3 ~/python3.8

その4 非公式 提供byChatGPT

sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-devsudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install pythonXX.XX(バージョン。例えば3.10とかにする)
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
sudo update-alternatives --config python3
sudo apt install python3-pip
sudo apt install python3-dev

sudo apt install software-properties-common

このコマンドは、software-properties-commonパッケージをインストールします。software-properties-commonは、PPA(Personal Package Archive)の管理を容易にするためのツールやスクリプトを提供します。具体的には、add-apt-repositoryコマンドを使用できるようにするためのパッケージです。

sudo add-apt-repository ppa:deadsnakes/ppa

このコマンドは、deadsnakes PPA(Personal Package Archive)をUbuntuのソースリストに追加します。deadsnakes PPAは、Pythonの最新バージョンを提供する非公式のリポジトリです。これにより、Ubuntuの標準リポジトリには含まれていない最新のPythonバージョンをインストールできるようになります。開発者が特定のPythonバージョンを簡単にインストールして使用できるようにすることを目的としています。

Deadsnakes PPAは、主にFelix Krullという個人の開発者によって運営されています。Felix Krull氏は、Ubuntu向けのPythonバージョンを提供するためにこのPPAを管理しており、多くの開発者にとって便利なリソースとなっています。

このPPAは非公式のリポジトリですが、広く使用されており、信頼性が高いとされています。PPAの内容は、一般にオープンソースコミュニティによってレビューされ、使用されています。

公式情報

Deadsnakes PPAの公式情報は、Launchpadで確認できます。このページでは、PPAに含まれているパッケージの一覧や、それらのパッケージの更新情報、インストール手順などが提供されています。

利用上の注意

Deadsnakes PPAは非公式であり、Ubuntuの公式サポートの対象外です。そのため、使用する際には以下の点に注意してください:

• 必ず信頼できる環境で使用する。
• PPAからインストールしたパッケージが公式リポジトリのパッケージと競合しないことを確認する。
• 定期的にPPAの更新情報を確認し、セキュリティパッチやバグフィックスを適用する。

これらの点に注意しつつ、Deadsnakes PPAを利用してPythonの最新バージョンや特定のバージョンをインストールすることで、開発環境を柔軟に管理できます。

update-alternativesについて

update-alternativesは、複数のバージョンのソフトウェアがインストールされている場合に、システムがどのバージョンを使用するかを選択できるようにするためのツールです。

各コマンドの説明

1. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
このコマンドは、Python 3.8をupdate-alternativesシステムに追加します。
• /usr/bin/python3は、シンボリックリンクのパスです。
• python3は、この代替の名前です。
• /usr/bin/python3.8は、Python 3.8の実行ファイルのパスです。
• 1は、この代替の優先順位です。
つまり、python3コマンドが呼び出されたときに、/usr/bin/python3が/usr/bin/python3.8を指すようになります。
2. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
このコマンドは、Python 3.10をupdate-alternativesシステムに追加します。
• /usr/bin/python3は、シンボリックリンクのパスです。
• python3は、この代替の名前です。
• /usr/bin/python3.10は、Python 3.10の実行ファイルのパスです。
• 2は、この代替の優先順位です。
つまり、python3コマンドが呼び出されたときに、/usr/bin/python3が/usr/bin/python3.10を指すようになります。
3. sudo update-alternatives --config python3
このコマンドは、python3コマンドのデフォルトのバージョンを選択するためのインタラクティブなメニューを表示します。
• このコマンドを実行すると、利用可能なPythonバージョンのリストが表示され、それぞれに番号が振られます。
• 番号を入力することで、どのバージョンのPythonをデフォルトにするかを選択できます。

まとめ

これらのコマンドを実行することで、システムにインストールされている複数のPythonバージョンの中から、どのバージョンをデフォルトとして使用するかを柔軟に選択できるようになります。例えば、Python 3.8とPython 3.10の両方がインストールされている場合、python3コマンドでどちらのバージョンを使うかを簡単に切り替えることができます。

makeコマンド

makeコマンドは、C言語などのプログラムをビルドする際に使われる自動化ツールの1つです。makeコマンド自体は汎用的なもので、Pythonのビルドに限らず、さまざまなプログラムのビルドに使用できます。makeの動作についてもう少し詳しく説明します。

1. makeとは?

makeコマンドは、プロジェクトをビルドするために使われるビルド管理ツールであり、主に次の目的を持っています:

  • ソースコードをコンパイルし、実行可能なバイナリ(プログラム)を作成する。

  • ビルドに必要な手順を定義し、必要な順序でコマンドを実行する。

  • ファイルの変更があった場合に、必要な部分のみを再コンパイルする。

makeは、Makefileという特別なファイルを利用して、どのようにプログラムをビルドするかの手順を定義しています。このMakefileには、どのソースファイルをコンパイルするか、どのライブラリをリンクするか、そしてどのような順序でコマンドを実行するかが記述されています。

2. なぜ make コマンドでビルドが行われるのか?

makeコマンドは、プロジェクトディレクトリ内のMakefileを自動的に探し、その中に記述された手順を元にビルドを行います。今回のようにPythonのビルドを行う場合、Pythonのソースコードディレクトリには、すでにビルドの手順が記述されたMakefileが用意されているため、ユーザーはただmakeコマンドを実行するだけで、ビルドが行われます。

具体的には、次のような処理が行われます:

  • まず、./configureを実行すると、システムの状態に合わせてMakefileが自動的に生成されます。

  • その後、makeコマンドを実行すると、生成されたMakefileの内容に基づいてビルドが開始され、ソースコードがコンパイルされます。

3. オプションを指定しなくてもビルドできる理由

makeコマンド自体は、特定のオプションがなくても、デフォルトのターゲット(通常はallというターゲット)がMakefileに定義されている場合、それを実行します。多くのプロジェクトでは、Makefileに以下のような一般的なターゲットが含まれています:

  • all: プロジェクト全体のビルドを行うターゲット(デフォルトで実行される)。

  • clean: 一時ファイルや生成物を削除するターゲット。

  • install: ビルドされたプログラムをシステムにインストールするターゲット。

  • test: テストの実行をするターゲット。

そのため、特にオプションを指定しなくても、makeコマンドはMakefileに従ってデフォルトのビルド手順を実行します。

4. makeコマンドは他のケースでも使えるのか?

はい、makeコマンドはPythonのビルドに限らず、多くのプログラムやプロジェクトで使われています。主に次のようなシチュエーションで活用できます:

  • C/C++などのコンパイル: C言語やC++で書かれたプログラムのコンパイルに使われることが多いです。

  • 大規模プロジェクト: 多数のファイルを含むプロジェクトで、依存関係を管理しながら効率よくビルドを行うために使われます。

  • スクリプトや自動化ツールの実行: Makefileを使って、プログラムのテストやデプロイ、自動化タスクを定義することができます。

5. 具体的なMakefileの例

例えば、シンプルなCプログラムをビルドするためのMakefileの例を以下に示します。

# コンパイルするプログラム名
TARGET = hello

# コンパイルに使うコンパイラ
CC = gcc

# ソースコードファイル
SRCS = hello.c

# 生成物を記述(依存関係)
OBJS = $(SRCS:.c=.o)

# ビルド全体の手順を指定
all: $(TARGET)

# 実行可能ファイルの生成
$(TARGET): $(OBJS)
	$(CC) -o $(TARGET) $(OBJS)

# 各ファイルのコンパイル手順
%.o: %.c
	$(CC) -c $< -o $@

# クリーンアップ
clean:
	rm -f $(OBJS) $(TARGET)

このようなMakefileをプロジェクトのルートディレクトリに配置しておくと、makeコマンドを実行するだけで自動的にCファイルのコンパイルとリンクが行われます。

  • makeコマンドは、Makefileに記述されたビルド手順に従って自動でプログラムをビルドします。

  • ./configureコマンドで生成されたMakefileを元に、makeコマンドはビルドを実行します。

  • オプションなしでもデフォルトのターゲットが実行されるため、簡単にビルドが行えます。

  • makeはPython以外にも、CやC++、他のプロジェクトで使われることが多い汎用的なビルドツールです。

makeは非常に強力なツールで、多くの開発プロジェクトでビルドの自動化に使われているので、今回の例以外でも広く活用できます。

この記事が気に入ったらサポートをしてみませんか?