v0.16.0以降のasdfのインストール手順(arm64 Amazon Linux 2023)

記事タイトルとURLをコピーする

はじめに

春です!

春といえば、新入社員の季節……。

新入社員の季節といえば、研修の季節……。

研修の季節といえば、環境構築の季節……。

環境構築といえば、バージョン管理ツール……。

そしてバージョン管理ツールといえば、asdf

すなわち、春とはasdfの季節です。

清少納言


こんにちは。今年度からアプリケーションサービス部ディベロップメントサービス2課に配属となりました、新卒の濱田と申します。よろしくお願いします。

アプリケーション開発を行う当課では、何をするにもまずは環境構築からということになります。

環境構築にもさまざまなステップがありますが、ここでは便利なバージョン管理ツールasdfを導入し、asdf経由でPythonをインストールするところまでをメインでご紹介します。

その後おまけとして、Pipenv /とAWS SAM CLIのインストール手順も紹介します。ここのつまづきポイントもあります。

asdf とは?

弊社ブログでもasdfが紹介されてきましたので、こちらをご参照ください。

blog.serverworks.co.jp

ポイントは、pyenv や anyenvといった従来のバージョン管理ツールとは異なり、AWS CLIやAWS SAM、Terraform といった、クラウド開発に関わるツールの管理も行える点です。 弊社のようなクラウドインテグレータからすると、大変ありがたいツールなのですね。

また最近はasdfと互換性のあるmiseなるバージョン管理ツールが注目を集めています。

こちらのブログもぜひご参照下さい。

blog.serverworks.co.jp

本記事の問題意識

asdf の紹介・セットアップ方法については弊社ブログをはじめすでに日本語記事が存在します。

blog.serverworks.co.jp

しかし、asdfはバージョン0.16.0はGO言語で完全にリライトされ、インストール手順が変更されています

またコマンドに関しても一部変更が加えられたため、既存のブログだけで進んでいると手詰まりすることも……。

公式の Getting started 手順に従えばよいわけですが、こちらは何も考えずに手を動かせるような手順書ではなく、いくつか判断が必要となります。

そこで本記事では公式手順書よりも丁寧にこの手順を踏んでいき、asdfインストールの補助的なマニュアルになればと思っております! どなたかのお役に立てば幸いです。

前提(マシンの情報)

ここではEC2インスタンスを新規に起動し、このインスタンス上で環境構築を行なってみます。

設定項目
アーキテクチャ arm64
OS Amazon Linux 2023
AMI amazon/al2023-ami-2023.7.20250331.0-kernel-6.1-arm64
インスタンスタイプ t4g.medium
EBS gp3, 24Gib, IOPS3000, スループット125

少し変わっているポイントがあるとすれば

  • 「Amazon Linux 2023」というFedoraベースのLinux OSを使っていること
  • arm64アーキテクチャを使用しているところ

かと思いますので、この点ご留意ください。

なお、シェルはBashを利用しますので、この点もご留意ください。

asdfインストール手順

何はともあれ、公式の Getting started 手順 を見てみましょう。

今回使用しない手順

公式の手順では、第一に推奨される手順としてパッケージマネージャーの利用が提示されています。

  • Mac OS & Linux 向けの Homebrew
  • SUSE Linux系の Zypper
  • Arch Linux 系の Pacman

Amazon Linux 2023を使っている場合、オプションとしては Homebrew をインストールし、そこからbrewコマンドでasdfをインストールすることが考えられます。

こちらの手段を使われる場合には、HomebrewのトップページからHomebrewをインストールし、公式の Getting started 手順 に従ってください。こちらの手段が全体としては簡単になるかと思いますし、asdf自身のアップデートが簡単になるというメリットもあります。

じゃあこれで行こう! と思うのですが……

本環境でこれを試したところ、Homebrew のインストールまではいけるのですが、Homebrew経由でのasdfのインストールに失敗してしまいます。

$ brew install asdf
> ==> Downloading https://formulae.brew.sh/api/formula.jws.json
> Warning: Your CPU architecture (arm64) is not supported. We only support
> x86_64 CPU architectures. You will be unable to use binary packages (bottles).

どうも、Homebrewでのasdfインストールはアーキテクチャとしてx86_64 CPU architecturesだけをサポートしているようです。 私たちはarm64アーキテクチャのGravitonインスタンスを選択したので、このようなエラーになるのですね。

意外な落とし穴です……

というわけで、次点として、バイナリファイルをダウンロードして設置する方法でいきましょう。

いざ環境構築

0. EC2 インスタンスの起動

本記事では省略いたします

なお私はVSCodeのRemote - SSH 拡張機能を使用し、SSH接続で操作しております。

1. Gitのインストール

まずはGitのインストールが要求されています。 ターミナルを開き、コマンドを打っていきます。

  • 以下ではコマンドは$の後ろに示します
  • 想定される出力は>の後ろに示します
  • # の行はコメントです
$ sudo dnf upgrade
$ sudo dnf install -y git 
$ git --version
> git version 2.47.1

バージョンが表示されたら完了です。

2. バイナリファイルのダウンロード

公式のリポジトリから、asdfのバイナリファイルをダウンロードします。

https://github.com/asdf-vm/asdf/releases

ここで適切なバージョンを選ぶ判断が必要になります。最新版にも次のような種類があります。

バージョン名 ざっくりとした説明
asdf-v0.16.7-darwin-amd64.tar.gz Mac用。Intel CPU用
asdf-v0.16.7-darwin-arm64.tar.gz Mac用。Apple Silicon用
asdf-v0.16.7-linux-386.tar.gz 32ビットx86用のレガシーシステム
asdf-v0.16.7-linux-amd64.tar.gz x86_64アーキテクチャ用
(EC2の例: t3.micro)
asdf-v0.16.7-linux-arm64.tar.gz arm64アーキテクチャ用
(EC2の例: 「t4g」などgの字のつくGravitonインスタンス)

今回はarm64アーキテクチャのGraviton インスタンスを使用しているため、arm64のものをダウンロードすればいいんだな、という判断ができます。

安価でサステナブルなGravitonインスタンスについては、一度こちらの記事を見てみてください。

blog.serverworks.co.jp

さて、以下の記述やコマンドではasdf-v0.16.7-linux-arm64.tar.gzをダウンロードしていきますが、皆さんが作業する際には、バージョン名やファイル名は必要なものに適宜置き換えて進めてくださいね。

コマンド

一旦ローカルにダウンロードしてそれをEC2にアップロードしてもよいのですが、wget コマンドでダウンロードする方が簡単でしょう。wgetコマンドを利用して、リンク先のデータを取得していきます。

「wget + リンクのアドレス」で、以下二つのデータをダウンロードします。

  • ①本体(asdf-v0.16.7-linux-arm64.tar.gz)
  • ②md5チェックサム(asdf-v0.16.7-linux-arm64.tar.gz.md5)
# 本体データのダウンロード
$ wget https://github.com/asdf-vm/asdf/releases/download/v0.16.7/asdf-v0.16.7-linux-arm64.tar.gz
> ...(中略)...
> 2025-04-04 04:53:25 (37.1 MB/s) - ‘asdf-v0.16.7-linux-arm64.tar.gz’ saved [4325803/4325803]

# md5チェックサムのダウンロード
$ wget https://github.com/asdf-vm/asdf/releases/download/v0.16.7/asdf-v0.16.7-linux-arm64.tar.gz.md5
> ...(中略)...
> 2025-04-04 04:54:51 (3.61 MB/s) - ‘asdf-v0.16.7-linux-arm64.tar.gz.md5’ saved [33/33]

# ダウンロードできているかの確認
$ ls
> asdf-v0.16.7-linux-arm64.tar.gz  asdf-v0.16.7-linux-arm64.tar.gz.md5

3.チェックサム確認

ハッシュ関数を用いて、ダウンロードが欠損なく行われているかどうかをチェックします。 先ほど.md5という拡張子のファイルもダウンロードしていたのはそのためです。 ターミナルで次のコマンドを打ちます。

# ハッシュ値を計算
$ md5sum asdf-v0.16.7-linux-arm64.tar.gz
> bf33637adc86ef2ebf4e791436679600  asdf-v0.16.7-linux-arm64.tar.gz

# DLしてきたハッシュ値を参照
$ cat asdf-v0.16.7-linux-arm64.tar.gz.md5
> bf33637adc86ef2ebf4e791436679600

md5sumコマンドで作成したいま算出したハッシュ値と、ダウンロードしてきたハッシュ値を見比べています。

両者に違いがないことがわかりますね。問題なくDLできています。一安心です。

4. インストールしたバイナリファイルを解凍する

tarコマンドを使用してファイルを解凍します。

# 解凍
$ tar -xzf asdf-v0.16.7-linux-arm64.tar.gz

# 確認
$ ls 
> asdf  asdf-v0.16.7-linux-arm64.tar.gz  asdf-v0.16.7-linux-arm64.tar.gz.md5

解凍され、asdfファイルができました。

5. asdfバイナリファイルを$PATHのディレクトリに移動させる

asdfの実行バイナリファイルが用意できました。あとはこのファイルを$PATHに登録されているディレクトリに移動させ、asdfコマンドを打つだけで実行できるようにします。 以下のコマンドでは/usr/local/binに移動させています。

# $PATH を確認
$ echo $PATH | tr ":" "\n"
> /home/ec2-user/.local/bin
> /home/ec2-user/bin
> /usr/local/bin
> /usr/bin
> /usr/local/sbin
> /usr/sbin

# バイナリファイルをusr/local/binに移動
sudo mv asdf /usr/local/bin/

# シェルの$PATHにasdfがあることを確認
$ type -a asdf
> asdf is /usr/local/bin/asdf

# asdf コマンドが使用できることを確認
$ asdf -v 
> asdf version v0.16.7

これにてasdfのインストールは完了です🎉 

6. 後片付け

不要になったファイルは削除しておきましょう。

$ rm asdf-v0.16.7-linux-arm64.tar.gz
$ rm asdf-v0.16.7-linux-arm64.tar.gz.md5

asdfによるPythonインストール

それでは早速asdf経由でPythonをインストールしていきます。以下ではPython 3.13.2をインストールしましょう。

1. 前準備

まず、Pythonのインストールには多くのツールが必要です。これらのツールがAmazon Linux 2023のデフォルトではインスールされていないため、これらを一気にインストールしておきます。

この手順はasdfとは無関係です。

$ sudo dnf install -y gcc make patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel

2. asdfプラグインインとしてPythonをインストール

さて、asdf経由でPythonをインストールしていきます。

asdfは各種パッケージを「プラグイン」という形で管理するので、「まずプラグインを追加する」→「プラグインからインストールする」という流れになります。この点を意識しつつ次のコマンドを打っていきましょう。

注意

なおバージョン0.16以降、asdfのコマンドは変化していますので、古い情報源と比較する際にはその点もご留意ください。大きなものとしては

  • asdf global/local が使えない
  • list-allなど、ハイフン付きのコマンドがなくなっている

などの変更点があります。詳しくはasdf 0.16.0 のアップグレード情報をご覧ください。

# asdf-pluginとして配布されているリポジトリのURLをリストする
$ asdf plugin list all
> ...(たくさんのリポジトリ一覧が表示される)...

# pythonを配布しているリポジトリのURLをリストする
$ asdf plugin list all | grep python
> python      *https://github.com/danhper/asdf-python.git

# 表示されたURLからpythonプラグインをインストール
$ asdf plugin add python https://github.com/danhper/asdf-python.git

# プラグインの追加を確認
$ asdf plugin list
> python

# インストールできるPythonのバージョンを確認
$ asdf list all python
> ...(多数)...

# 必要なバージョン(今回は3.13.2)をインストール
asdf install python 3.13.2
> ...(まあまあ時間がかかります。お茶でも飲みましょう)...

# 完了後、必要なバージョンがasdf経由でインストールできていることを確認
asdf list python
>  3.13.2

これでインストールは完了となりますが、これだけでは使えないので注意です。

このバージョンを使いたいディレクトリ上でバージョンをsetする必要があるのです。

# 現在のディレクトリでのバージョンをセットする。
$ asdf set python 3.13.2

このコマンドを使うことで.tool-versionsファイルが生成されます。

このファイルにバージョン情報が登録され、このディレクトリでの使用バージョンが決まります。

ツール名とバージョンとだけが書かれた、非常にシンプルなファイルです。

$ cat .tool-versions
> python 3.13.2

便利コマンド紹介

バージョン確認に便利なコマンドとしてasdf currentがあります。

現在のディレクトリで

  • どのプラグインのどのバージョンが使われているか
  • すでにインストール済みか

を調べることができます。便利です。

$ asdf current
> Name            Version         Source                                             Installed
> python          3.13.2          /home/ec2-user/my-first-sam/sam-app/.tool-versions true

shimsを環境変数PATHに登録する

Pythonコマンドが打てるか確かめておきましょう。

# Python バージョン確認
$ python --version
> bash: python: command not found

あら?…… 先ほどインストールしたはずのPython 3.13.2が出てきませんね。なぜでしょうか。

原因は環境設定PATHの設定にあります。

asdfプラグインとしてインストールしたパッケージのコマンド群は、shimという形で~/.asdf/shimsに格納されていますので、こちらのディレクトリにもPATHを通してあげると、コマンドが打てるようになります。

次のコマンドを打ち、bashシェル起動時に環境変数PATHとして/.asdf/shimsが登録されるようにします。

以下はbashの手順であることにご注意ください。詳しくは公式サイトの手順をチェックです。

$ echo 'export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

この手順の後なら打てるようになっているはず。

# Python バージョン確認
$ python --version
> Python 3.13.2

これにてPythonインストール完了です🎉

おまけ:pipenv と AWS SAM CLI のインストール

pipenv インストール

pipを使用してインストールしていきます。pipはPythonをインストール済みであれば使用できるかと思います。

# インストール
pip install pipenv
> ...(中略)...
> Successfully installed certifi-2025.1.31 packaging-24.2 pipenv-2024.4.1 setuptools-78.1.0

よくあるエラー

pipenvのバージョン確認をしてみます。

# バージョン確認
pipenv --version
> bash: pipenv: command not found

詰まりがちなポイントかと思います。ここでも、PATHが通っていないことが問題です。

pipnpmなどのパッケージツールでツールをグローバルインストールした場合、このインストールは当然、asdfプラグイン経由のインストールではありません。それゆえ、PATHの通っているshimsにコマンドが登録されていないのですね。

解決策

こんな時には次のコマンドを打ち、shimを再作成することができます。

$ asdf reshim

このことで、pipenvも打てるようになっているはず。

# バージョン確認
pipenv --version
> pipenv, version 2024.4.1

やりました🎉

AWS SAM CLI インストール

AWSでのサーバレス開発に使用するAWS SAM CLIも、asdfでインストール・パッケージ管理可能です!

これは嬉しいですね。

基本的にはPythonをインストールした場合と同様の流れになります。コマンド例を紹介します。

# aws-sam-cliを配布しているリポジトリのURLをリストする
$ asdf plugin list all | grep aws-sam-cli
> aws-sam-cli                                 *https://github.com/amrox/asdf-pyapp.git

# 表示されたURLからpythonプラグインを追加
$ asdf plugin add aws-sam-cli https://github.com/amrox/asdf-pyapp.git

# インストール可能なバージョンの確認
# このコマンドのみうまくいかないことがあるようです。
# その場合は次のインストール手順に進んでください

$ asdf list all aws-sam-cli
> 0.3.0
> 0.4.0
> 0.5.0
...(中略)...
> 1.135.0
> 1.136.0

# 対象のバージョンをインストール
$ asdf install aws-sam-cli 1.132.0
> ...(色々インストール)...

# インストールできていることを確認
$ asdf list aws-sam-cli
> 1.132.0

# 現在のディレクトリでのバージョンを指定する
$ asdf set aws-sam-cli 1.132.0

# ディレクトリの状態を確認
$ asdf current 
> Name            Version         Source                        Installed
> aws-sam-cli     1.132.0         /home/ec2-user/.tool-versions true
> python          3.13.2          /home/ec2-user/.tool-versions true

# samコマンドの確認
$ sam --version
> SAM CLI, version 1.132.0

おわりに

環境構築って面倒です。

でも、一度腰を据えて構築してみた結果、「自分の仕事場を綺麗に整備できている!」と嬉しい気持ちになりました☺️

この記事がみなさまの環境構築に貢献できていれば幸いです。

濱田 明日郎(執筆記事の一覧)

アプリケーションサービス本部ディベロップメントサービス2課

ベルクソン哲学研究で博士号取得ののち、2024年にサーバーワークスに新卒入社。
2025 Japan All AWS Certifications Engineers
奄美大島出身。