GitHub CLI tool GitHub Releases からバイナリをインストールする手軽な方法 GitHub Releases には事前にビルドされたバイナリを置くことができる。これを利用して、CLI ツールなどをインストールできる。 インストールには curl
と tar
を使っていくつかのコマンドを実行する。このコマンド実行が少し手間なので、これを簡略化するためのスクリプトやツールがある。 今回は、それらのスクリプトやツールを使って、GitHub Releases からバイナリをインストールする方法を備忘録として残す。
この記事では次のツールについて触れる。
installer Installer はシェルスクリプトを返す HTTP サーバーです。返されたスクリプトは、プラットフォームの OS とアーキテクチャを検出し、URL のセレクションから選択し、適切なファイルをダウンロードし、ファイルを un(zip|tar|gzip)し、バイナリ(最大ファイル)を見つけ、オプションで PATH に移動します。お気に入りのコンパイル済みプログラムを curl だけでインストールするのに便利です。
installer は、プラットフォームを自動検知し、適切なバイナリをダウンロード・展開・配置してくれるシェルスクリプトを返す HTTP サーバー。curl 1 つでインストールを完結できる手軽さが魅力。
使い方 curl で対象のリポジトリを指定するだけでインストールできる。
# install <user>/<repo> from github
curl https://i.jpillora.com/<user>/<repo>@<release>! | bash
例 $ curl -s i.jpillora.com/mholt/caddy! | bash
Downloading mholt/caddy v0.8.2 ( https://github.com/mholt/caddy/releases/download/v0.8.2/caddy_darwin_amd64.zip)
######################################################################## 100.0%
Downloaded to /usr/local/bin/caddy
$ caddy --version
Caddy 0 .8.2
Private repository にも対応 している。
gh-install gh-install は GitHub Releases からバイナリをインストールするためのスクリプト。対象のリポジトリを指定して実行する。
使い方 $ ./install.sh --git <org>/<repo>
# Or
PS install.ps1 -git <org>/<repo>
dra GitHub からリリースアセットをダウンロードするためのコマンドラインツール。
Rust で書かれており、シングルバイナリとして動作する。実行マシンのアーキテクチャにあるパッケージを自動でダウンロードすることもできるし、オプションもしくは対話式でダウンロードするものの指定も選択できる。
setup usage dra download devmatteini/dra-tests
# you can use -a or --automatic
dra download -a devmatteini/dra-tests
bin 様々なツールをインストールするためのツール。GitHub Releases や Docker image をインストールして CLI ツールとして使えるようにする。
bin install github.com/kubernetes-sigs/kind # installs latest Kind release
bin install github.com/kubernetes-sigs/kind/releases/tag/v0.8.0 # installs a specific release
bin install github.com/kubernetes-sigs/kind ~/bin/kind # installs latest on a specific path
bin install docker://hashicorp/terraform:light # install the `light` tag for terraform
bin install docker://quay.io/calico/node # install the latest version of calico/node
list コマンドで利用可能なツールを確認したり、update コマンドでツールをアップデートできる。
bin ensure # Ensures that all binaries listed in the configuration are present
bin help # Help about any command
bin install <repo> [ path] # Downloads the latest binary and makes it executable
bin list # List current binaries and it's versions
bin prune # Removes from the DB missing binaries
bin remove <bin>... # Deletes one or more binaries
bin update [ bin] ... # Scans binaries and prompts for update
bin pin <bin>... # Pins current version of one or more binaries
bin unpin <bin>... # Unpins one or more binaries
eget 他のツール t 同様に、GitHub Releases からバイナリをインストールするためのツール。curl でインストールできる。
curl https://zyedidia.github.io/eget.sh | sh
例 eget zyedidia/micro --tag nightly
eget jgm/pandoc --to /usr/local/bin
eget junegunn/fzf
eget neovim/neovim
eget ogham/exa --asset ^musl
eget --system darwin/amd64 sharkdp/fd
eget BurntSushi/ripgrep
eget -f eget.1 zyedidia/eget
eget zachjs/sv2v
eget https://go.dev/dl/go1.17.5.linux-amd64.tar.gz --file go --to ~/go1.17.5
eget --all --file '*' ActivityWatch/activitywatch
対話式でどのバイナリをインストールするか選択することもできる。--upgrade-only
オプションを使うと、バイナリがすでにインストールされている場合にのみアップグレードする。
install-release install-release は、GitHub のリリースからあなたのデバイス用のツールを直接インストールし、それらを更新しておくための CLI ツールです。GitHub のリリースからツールをインストールするための小さなパッケージ・マネージャーと考えてください。
パッケージマネージャーとして紹介してるように、インストール以外に ls や upgrade など様々なコマンドが利用できる。
setup # Install install-release
pip install -U install-release
usage # Example Installation a tool named `gron` directly from its GitHub releases
# install-release get [GITHUB-URL]
❯ install-release get https://github.com/tomnomnom/gron
例 ❯ install-release get "https://github.com/ahmetb/kubectx"
📑 Repo : ahmetb/kubectx
🌟 Stars : 13295
✨ Language : Go
🔥 Title : Faster way to switch between clusters and namespaces in kubectl
🚀 Install: kubectx
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┓
┃ Name ┃ Selected Item ┃ Version ┃ Size Mb ┃ Downloads ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━┩
│ kubectx │ kubectx_v0.9.4_linux_x86_64.tar.gz │ v0.9.4 │ 1 .0 │ 43811 │
└─────────┴────────────────────────────────────┴─────────┴─────────┴───────────┘
Install this tool ( Y/n) : y
INFO Downloaded: 'kubectx_v0.9.4_linux_x86_64.tar.gz' at /tmp/dn_kubectx_ph6i7dmk utils.py:159
INFO install /tmp/dn_kubectx_ph6i7dmk/kubectx /home/noobi/bin/kubectx core.py:132
INFO Installed: kubectx
まとめ GitHub Releases からバイナリをインストールについて、いくつかのツールを紹介した。個人的には upgrade や list 機能があるものが使いやすいように感じたので、eget
もしくはinstall-release
がおすすめ。
2024-12-30 05:41:31 2024-05-04 07:11:16