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