Open6

voltaがLinux/arm64に対応していなかったので自分でビルドしたログ

ken7253ken7253

次のv2.0.0リリースでARM版のリリースが出るようです。

https://github.com/volta-cli/volta/releases/tag/v2.0.0

やったこと

ソースの入手

https://github.com/volta-cli/volta

voltaのGitHubからソースをダウンロード

Rustの環境構築

Rustの環境が無かったので、Rustのページを参考に環境構築

https://www.rust-lang.org/ja/learn/get-started

自分の場合はWindowsのWSL上でUbuntuを利用しているので「Windows Subsystem for Linux」の項目を参考にセットアップ

とはいってもコマンドを実行するだけで問題なかった。

ken7253ken7253

とりあえずビルドしてみる

どうやらGitHub Actionsの中にはLinux/arm64のビルドが用意されているようなのでそれを参考にビルドしてみる。

https://github.com/volta-cli/volta/blob/main/.github/workflows/release.yml#L48

cargo build --release --target aarch64-unknown-linux-gnu

error linker cc not foundのようなエラーが出てビルドできなかった。

調べてみるとこれはCのコンパイラがインストールされていないことが原因っぽいのでインストールしてして再度ビルドしてみる。

https://qiita.com/rfukudome/items/e4f9759a5e1f7de7299b

ken7253ken7253

再度ビルド

Cのコンパイラを入れた後に再度ビルドしてみると正常にビルドできた。

VSCodeのエクスプローラーを撮影したスクリーンショット、targetディレクトリの中に aarch64-unknown-linux-gnu というディレクトリが生成されている

また、Actionsのコードを読んでみると配布している実行ファイルは

  • volta
  • volta-shim
  • volta-migrate

らしいことが分かる。

ken7253ken7253

実行ファイルの配置

通常voltaはインストールスクリプトを実行すると~/.voltaというディレクトリを作成し、~/.volta/binに実行ファイルを配置するので同じように動かす。

# /volta/target/aarch64-unknown-linux-gnu/release にいる状態
cp volta volta-shim volta-migrate ~/.volta/bin

実行ファイルを直接叩くと、実行できる。

# ~/.volta/bin にいる状態
./volta -h

ターミナルの画面のスクリーンショット、直接実行ファイルを叩いた場合に実行できていることが確認できている

ken7253ken7253

PATHの設定とか

ここからは通常のインストール後と変らなかったはずだけど、PATHを通したりする作業。
自分は zsh なので .zshrc に下記を追加

# volta
export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"

シェルの設定を再読み込み。

source .zshrc

コマンドを実行

ターミナルの画面のスクリーンショット、正しくPATHが通ってコマンドが実行できていることが確認できる

ken7253ken7253

nodeとnpmのPATHが通っていない

nodeはインストールできているがnodeコマンドが実行できていない

ターミナルの画面をスクリーンショットした画像

volta setupを忘れていただけでした。
このコマンドでPATHも設定してくれるはずなので、PATHを通す作業は不要だったかも。

https://docs.volta.sh/reference/setup