InkoHX

protoをArch Linuxで使う

公開日:

以前、様々なツールチェーンに対応したバージョンマネージャのprotoを紹介という記事を書きました。

インストール手順は公式サイトを見てくださいってことでスルーしたのですが、今のところパッケージマネージャを使わない形でのインストールになるので、アップデートしたい場合は毎回proto upgradeを打つ必要があって非常に面倒です。

そこで、今回はArch User Repository (AUR)paruというpacmanのラッパーを使ってアップデートを楽にしよう!という話です。

AURのproto-binを使う

ありがたいことに、既にAURにprotoを向けにproto-binとしてPKGBUILDファイルをメンテナンスしてくれている方がいるので、これをありがたく使わせていただきましょう。

$ paru -S proto-bin

アップデート

paruコマンドを実行して、PKGBUILDファイルを確認して大丈夫そうだったらインストールするだけ

環境変数の設定

protoがツールチェーンをインストールする場所は、環境変数にPROTO_HOMEとしてインストール場所への絶対パスがあれば優先して使用し、ない場合は~/.protoを選択するように実装されています。

そして、proto install等を実行した際に$PROTO_HOME/shimsが生成されるのですが、これをPATHに追加しておかないと直接シェルにツールチェーンのコマンドを打っても実行できません。

この$PROTO_HOME/shimsに配置された実行ファイルには、protoのVersion detectionを使えるようにするためのプログラムも含まれているので必ずPATHに追加しましょう。

export PROTO_HOME="$HOME/.proto" # 破壊的変更などで、ツールチェーンのインストール場所が変わったりしないように念の為固定する。
export PATH="$PROTO_HOME/shims:$PATH"

自分の環境に合わせて、環境変数を設定しましょう。

ツールチェーンのインストール

環境変数の設定も終わったことですし、Node.jsのインストールしたりしてみましょう。

# ツールチェーンのインストール
$ proto install --pin=global node lts

# 実際に実行して、バージョンを確認してみる
$ node -v
v20.15.1

# .prototoolsを見て、適切なバージョンを選んでくれるか確かめる
$ proto pin node latest
$ proto use
$ node -v
v22.5.1

もし、実行できない場合はproto diagnoseを使って原因を探るなりするといいかもしれません。

おまけ

Pacman hooksを使って、パッケージのアップグレード時にproto outdated --include-global --updateを使ってツールチェーンを最新にするサンプル

[Trigger]
Operation = Upgrade
Type = Package
Target = *

[Action]
Depends = proto-bin
When = PostTransaction
Exec = /usr/bin/su <ユーザー名> -c 'yes | proto outdated --include-global --update'

proto outdatedを使ったアップデートは、Node.jsのLTSをインストールしていてもLatestの方をとってこようとするので、自動更新はオススメしない。