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の方をとってこようとするので、自動更新はオススメしない。