最近は多数のソフトウェアプロジェクトがGitHubでホストされていて、ソースコードだけでなく、すぐに実行できるバイナリファイルが配布されている事もあります。
GitHubのリリースページからバイナリをダウンロードしてインストールするのは少し面倒な作業ですが、この作業を簡単化してくれるツール「Eget」が公開されています。
Egetは、お気に入りのツールのビルド済みバイナリを簡単に入手することができるツールで、GitHubのリリースからビルド済みバイナリをダウンロード・抽出することができます。
Egetにリポジトリを指定すると、システムに適した最新のビルド済みバイナリが検索され、見つかった場合は、アセットがダウンロードされ、バイナリをカレントディレクトリに展開します(指定フォルダに展開することもできます)。
Egetはバイナリが一つだけ含まれる、シンプルで静的なビルド済みバイナリのインストールに適していて、より複雑なインストールには、-download-only
オプションを使用することが推奨されています。
以下使用方法を説明します。
Egetの使用方法
Egetは以下の方法でインストールすることができます。
curl https://zyedidia.github.io/eget.sh | sh
スクリプトを実行するとeget
ファイルがカレントディレクトリに保存されます。/usr/local/bin
などパスが通ったディレクトリにコピーします。
使用方法は簡単で「eget リポジトリ」と実行します。
ripgrepをダウンロードしたい場合次のように実行します。
eget BurntSushi/ripgrep
この場合カレントディレクトリにrg
ファイル(ripgrepの実行ファイル)が展開されます。
展開先を指定する場合--to /usr/local/bin
のようにオプションを追加します。
eget jgm/pandoc --to /usr/local/bin
この場合/usr/local/bin
へ展開されますが、展開先ディレクトリの書き込み権限が必要となります。
neovimのようにファイルがいくつか含まれていてどのファイルを展開すれば良いのか決められない場合、ユーザーが展開したいファイルを指定する必要があります。
eget neovim/neovim https://github.com/neovim/neovim/releases/download/v0.10.1/nvim-macos-x86_64.tar.gz Downloading 100% [========================================================] (8.6/8.6 MB, 19.616 MB/s) Checksum verified with nvim-macos-x86_64.tar.gz.sha256sum 12 candidates for target exe `neovim` found: please select manually (1) nvim-macos-x86_64/bin/nvim (2) nvim-macos-x86_64/lib/nvim/parser/c.so (3) nvim-macos-x86_64/lib/nvim/parser/vim.so (4) nvim-macos-x86_64/lib/nvim/parser/markdown.so (5) nvim-macos-x86_64/lib/nvim/parser/vimdoc.so (6) nvim-macos-x86_64/lib/nvim/parser/lua.so (7) nvim-macos-x86_64/lib/nvim/parser/query.so (8) nvim-macos-x86_64/lib/nvim/parser/markdown_inline.so (9) nvim-macos-x86_64/share/nvim/runtime/indent/Makefile (10) nvim-macos-x86_64/share/nvim/runtime/pack/dist/opt/matchit/doc/tags (11) nvim-macos-x86_64/share/nvim/runtime/macros/less.sh (12) nvim-macos-x86_64/share/nvim/runtime/doc/tags (13) all Enter selection number: 1 Extracted `nvim-macos-x86_64/bin/nvim` to `nvim`
その他にも多数のオプションを指定することができます。
Usage: eget [OPTIONS] TARGET Application Options: -t, --tag= tagged release to use instead of latest --pre-release include pre-releases when fetching the latest version --source download the source code for the target repo instead of a release --to= move to given location after extracting -s, --system= target system to download for (use "all" for all choices) -f, --file= glob to select files for extraction --all extract all candidate files -q, --quiet only print essential output -d, --download-only stop after downloading the asset (no extraction) --upgrade-only only download if release is more recent than current version -a, --asset= download a specific asset containing the given string; can be specified multiple times for additional filtering; use ^ for anti-match --sha256 show the SHA-256 hash of the downloaded asset --verify-sha256= verify the downloaded asset checksum against the one provided --rate show GitHub API rate limiting information -r, --remove remove the given file from $EGET_BIN or the current directory -v, --version show version information -h, --help show this help message -D, --download-all download all projects defined in the config file -k, --disable-ssl disable SSL verification for download
なおEgetはGitHubのAPIを利用していますが、認証されていないユーザーのAPIリクエストは1時間あたり60件に制限されています。それ以上のリクエス(1時間あたり5,000件まで)を行いたい場合は、個人用のアクセストークンを設定し、GITHUB_TOKENまたはEGET_GITHUB_TOKENという環境変数に代入しておくと良いそうです。
また~/.eget.toml
ファイルを準備し、デフォルトのインストール先などを指定することもできます。
[global] target = "~/bin" ["zyedidia/micro"] target = "~/.local/bin"
まとめ
EgetはGitHubからビルド済みのバイナリをダウンロードしインストールすることができる便利なツールです。macOSの場合Homebrew経由でインストールできることも多いのですが、Homebrewを使っていない方や、LinuxやWindowsなど、他のプラットフォームを使っている方におすすめのツールです。