2024/02/13現在、zigはバージョン0.11までリリースされているが開発中の最新版を使いたい。開発中の最新版はパッケージマネージャ経由でインストールすることはできないので、これまでは Zigの公式サイトからmasterのバイナリをダウンロードして手動でセットアップしていた。この作業をスクリプト化したのでメモ。
前提
- jqがインストール済み
❯ jq --version
jq-1.6
- 環境変数にzigのバイナリを配備する
~/.zig
を追加
❯ cat ~/.bashrc | grep zig
export PATH=$PATH:$HOME/.zig
セットアップスクリプト
#!/bin/bash
set -euxo pipefail
tmpdir="/var/tmp"
# uname の出力に基づいて platform 変数を設定
# Windowsは持っていないので考慮しない
case "$(uname -s)" in
Linux*)
case "$(uname -m)" in
x86_64)
platform="x86_64-linux"
;;
aarch64)
platform="aarch64-linux"
;;
*)
echo "Unsupported Linux architecture"
exit 1
;;
esac
;;
Darwin*)
case "$(uname -m)" in
x86_64)
platform="x86_64-macos"
;;
arm64)
platform="aarch64-macos"
;;
*)
echo "Unsupported macOS architecture"
exit 1
;;
esac
;;
*)
echo "Unsupported platform"
exit 1
;;
esac
# Zigの最新バージョンのURL・ファイル名を取得
url=$(curl -s https://ziglang.org/download/index.json | \
jq -r --arg platform "$platform" '.["master"][$platform]["tarball"]')
filename=$(basename "${url}")
# ファイルをダウンロードして展開
mkdir -p "${tmpdir}"
cd "${tmpdir}"
curl -o "${filename}" "${url}"
tar Jxf "${filename}"
rm -rf ~/.zig_bak
if [ -d "${HOME}/.zig" ]; then
mv "${HOME}/.zig" "${HOME}/.zig_bak"
fi
# 新しい.zigディレクトリを移動
base=$(basename "${filename}" .tar.xz)
mv "${base}" "${HOME}/.zig"
# ダウンロードしたアーカイブを削除
rm "${filename}"
zig version
実行ログ
❯ ./setup_master_zig.sh
+ tmpdir=/var/tmp
+ case "$(uname -s)" in
++ uname -s
+ case "$(uname -m)" in
++ uname -m
+ platform=x86_64-linux
++ curl -s https://ziglang.org/download/index.json
++ jq -r --arg platform x86_64-linux '.["master"][$platform]["tarball"]'
+ url=https://ziglang.org/builds/zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz
++ basename https://ziglang.org/builds/zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz
+ filename=zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz
+ mkdir -p /var/tmp
+ cd /var/tmp
+ curl -o zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz https://ziglang.org/builds/zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45.9M 100 45.9M 0 0 10.1M 0 0:00:04 0:00:04 --:--:-- 10.5M
+ tar Jxf zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz
+ rm -rf /home/hiro/.zig_bak
+ '[' -d /home/hiro/.zig ']'
+ mv /home/hiro/.zig /home/hiro/.zig_bak
++ basename zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz .tar.xz
+ base=zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99
+ mv zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99 /home/hiro/.zig
+ rm zig-linux-x86_64-0.12.0-dev.2727+fad5e7a99.tar.xz
+ zig version
0.12.0-dev.2727+fad5e7a99