Install Release is a CLI tool by name ir to install any single-binary executable package for your device(Linux/MacOS/WSL) directly from their GitHub or GitLab releases and keep them updated. Consider it as a CLI to install, update and remove any single binary tools from GitHub/GitLab releases.
This can be any tool you want to install, which is pre-compiled for your device and present on GitHub or GitLab releases.
INFO: It's mainly for installing tools that are not directly available officially by package managers like
apt, yum, pacman, brewetc.
- Table of Contents π
- Getting started β‘
- Prerequisites π
- Updating
install-releaseπ - Example usage
ir --helpπ‘- Install completion for cli π
- Install tool from GitHub/GitLab releases π
- Install specific release asset from GitHub/GitLab releases π¦
- List installed tools π
- Remove installed release β
- Update all previously installed tools to the latest version πΆοΈ
- Pull state templates for installing tools π
- Hold Update to specific installed tool β
- Configure tool installation path ποΈ
- Configure updates for pre-release versions π
- Configure GitHub/GitLab tokens for higher rate limit π
Example: Installing deno (Rust-based JavaScript runtime) directly from its GitHub releases:
# Usage: ir get [GITHUB-URL or GITLAB-URL]
β― ir get https://github.com/denoland/denoVerify the installation:
β― which deno
~/bin/deno
β― deno --version
deno 1.46.3 ...Example: Installing GitLab CLI with a custom binary name glab:
β― ir get https://gitlab.com/gitlab-org/cli -n glabVerify the installation:
β― which glab
~/bin/glab
β― glab --version
glab 1.80.0 ...Once installed, you can manage your tools with these simple commands:
- List:
ir lsβ See all installed tools and versions. - Update:
ir upgradeβ Upgrade all installed tools to their latest releases. - Remove:
ir rm denoβ Remove a tool from your system.
For more details, check the Table of Contents.
- python3.8 or higher
- libmagic
- Default installation path:
~/bin/(Ensure this is in yourPATH)
# Add this to your ~/.bashrc or ~/.zshrc
export PATH=$HOME/bin:$PATHFor seeing version:
ir me --versionFor updating:
ir me --upgrade# Help page
β― ir --help
Usage: ir [OPTIONS] COMMAND [ARGS]...
GitHub / GitLab release installer based on your system (Linux/MacOS)
Commands:
get | Install GitHub/GitLab repository CLI tool from its releases
ls | List all installed CLI tools
rm | Remove any installed CLI tool
upgrade | Upgrade all installed CLI tools from their repositories
state | Show the current stored state of Install-Release
config | Set configs for Install-Release
pull | Install tools from the remote install-release state URL
hold | Keep an installed CLI tool's updates on hold.
me | Update the Install-Release tool.
For sub-command help use: ir <sub-command> --help
Example: ir get --help
# ir --install-completion [SHELL: bash|zsh|fish|powershell]
# Example for zsh:
ir --install-completion zshβ― ir 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# checking if kubectx is installed
β― which kubectx
/home/noobi/bin/kubectx
β― kubectx --version
0.9.4
In rare cases where install-release does not automatically find the correct release file for your system, you can manually specify the release file name. There are two ways to do this:
During the installation prompt, type ? to view all available release assets and select the one you want:
β― ir get https://github.com/ekzhang/bore
π Repo : ekzhang/bore
π Stars : 8234
β¨ Language : Rust
π₯ Title : A simple CLI tool for making tunnels to localhost
π Install: bore
ββββββββ³βββββββββββββββββββββββββββββββββββββββββββ³ββββββββββ³ββββββββββ³ββββββββββββ
β Name β Selected Item β Version β Size Mb β Downloads β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β bore β bore-v0.4.0-x86_64-unknown-linux-musl... β v0.4.0 β 1.2 β 1523 β
ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββββ
Path: /home/noobi/bin
Install this tool (Y/n/?): ?
π¦ Available Assets for bore
ββββββ³ββββββββββββββββββββββββββββββββββββββββββββββββββ³ββββββββββββ³ββββββββββββ
β ID β Filename β Size (MB) β Downloads β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β 1 β bore-v0.4.0-x86_64-unknown-linux-musl.tar.gz β 1.2 β 1523 β
β 2 β bore-v0.4.0-x86_64-unknown-linux-gnu.rpm β 1.3 β 845 β
β 3 β bore-v0.4.0-aarch64-unknown-linux-musl.deb β 1.1 β 234 β
β 4 β bore-v0.4.0-x86_64-apple-darwin.dmg β 1.2 β 456 β
β 5 β bore-v0.4.0-x86_64-apple-darwin.tar.gz β 1.2 β 1523 β
ββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββ΄ββββββββββββ
Enter your desired file ID to install (or 'n' to cancel): 3The tool will automatically parse the selected filename into keywords and store them for future upgrades.
You can also specify the release file name directly using the -a flag:
β― ir get [GITHUB-URL or GITLAB-URL] -a [release asset filename]Example: Installing the bore tool from GitHub with the release file name bore-v0.4.0-arm-unknown-linux-musleabi.tar.gz. Here, the keywords generated are: bore, v0.4.0, arm, linux, musleabi
β― ir get https://github.com/ekzhang/bore -a bore-v0.4.0-arm-unknown-linux-musleabi.tar.gzHow it works:
- The tool parses the release file name into keywords (removing version numbers and file extensions)
- These keywords are stored in the state file to match the correct release file during future tool upgrades
- This ensures consistent upgrades to the same release variant
Note: If
install-releasefails to identify the correct release package for your system, please raise a GitHub issue to help improve the tool.
β― ir ls
Installed tools
βββββββββββββ³ββββββββββ³βββββββββββββββββββββββββββββββββββββββ
β Name β Version β Url β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β terrascan β v1.15.2 β https://github.com/tenable/terrascan β
β gron β v0.7.1 β https://github.com/tomnomnom/gron β
β kubectx β v0.9.4 β https://github.com/ahmetb/kubectx β
βββββββββββββ΄ββββββββββ΄βββββββββββββββββββββββββββββββββββββββ# Remove installed release
β― ir rm gron
INFO Removed: gronβ― ir upgrade
Fetching: https://github.com/tenable/terrascan#terrascan
Fetching: https://github.com/ahmetb/kubectx#kubectx
Following tools will be upgraded:
terrascan
Upgrade these tools (Y/n): y
Updating: terrascan, v1.15.0 => v1.15.2
INFO Downloaded: 'terrascan_1.15.2_Linux_x86_64.tar.gz' at /tmp/dn_terrascan_0as71a6v
INFO install /tmp/dn_terrascan_0as71a6v/terrascan ~/bin/terrascan
INFO Installed: terrascan
Progress... ββββββββββββββββββββββββββββββββββββββββ 100% 0:00:00You can push your state to somewhere like GitHub and use it on any other device to sync the tools installed via ir.
β― ir pull --url https://raw.githubusercontent.com/Rishang/dotFiles/main/templates/install-release/state.jsonIn case you want to hold an update for a specific tool, you can use the hold {tool-name} command which will pause updates for that tool.
Example: Keep tool named k9s update on hold:
β― ir hold k9s
INFO Update on hold for, k9s to TrueYou can list tools on hold updates by using the ls --hold command:
β― ir ls --hold
Installed tools kept on hold
ββββββββ³ββββββββββ³ββββββββββββββββββββββββββββββββββββ
β Name β Version β Url β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β k9s β v0.26.7 β https://github.com/derailed/k9s β
ββββββββ΄ββββββββββ΄ββββββββββββββββββββββββββββββββββββIn case you want to remove the update hold for a specific tool, you can use the hold --unset {tool-name} command:
β― ir hold --unset k9s
INFO Update on hold for, k9s to False
β― ir config --path ~/.local/bin
INFO Updated path to: ~/.local/bin
INFO DoneThis is useful when you want to install pre-release versions of tools like beta or alpha releases. By default, it is set to False, in which case it will only check for the latest stable release.
β― ir config --pre-releaseFor GitHub:
β― ir config --github-token [your github token]
INFO: Updated GitHub token
INFO: Done.For GitLab:
β― ir config --gitlab-token [your gitlab token]
INFO: Updated GitLab token
INFO: Done.