Simple package manager to easily install, update and manage any command-line(CLI) tool directly from github releases
Project description
๐ Install Release
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 small package manager to install 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 ๐
- 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 โ
- Config tool installation path ๐๏ธ
- Config updates for pre-release versions ๐
- Configure GitHub/GitLab tokens for higher rate limit ๐
Getting started โก
# Install ir
pip install -U install-release
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/deno
Verify 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 glab
Verify the installation:
โฏ which glab
~/bin/glab
โฏ glab --version
glab 1.80.0 ...
Manage your tools
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.
Prerequisites ๐
- 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:$PATH
Updating install-release ๐
For seeing version:
ir me --version
For updating:
ir me --upgrade
Example usage ir --help ๐ก
# 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
Install completion for cli ๐
# ir --install-completion [SHELL: bash|zsh|fish|powershell]
# Example for zsh:
ir --install-completion zsh
Install tool from GitHub/GitLab releases ๐
โฏ 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
Install specific release asset from GitHub/GitLab releases ๐ฆ
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:
Method 1: Interactive Selection (Recommended)
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): 3
The tool will automatically parse the selected filename into keywords and store them for future upgrades.
Method 2: Command-line Flag
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.gz
How 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.
List installed tools ๐
โฏ 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 โ
# Remove installed release
โฏ ir rm gron
INFO Removed: gron
Update all previously installed tools to the latest version ๐ถ๏ธ
โฏ 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:00
Pull state templates for installing tools ๐
You 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.json
Hold Update to specific installed tool โ
In 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 True
You 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
Config tool installation path ๐๏ธ
โฏ ir config --path ~/.local/bin
INFO Updated path to: ~/.local/bin
INFO Done
Config updates for pre-release versions ๐
This 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-release
Configure GitHub/GitLab tokens for higher rate limit ๐
For GitHub:
โฏ ir config --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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file install_release-0.6.0.tar.gz.
File metadata
- Download URL: install_release-0.6.0.tar.gz
- Upload date:
- Size: 37.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
880d469f25ef844e71a3addf54d31512960493022c827cdf1423f4f8c811de22
|
|
| MD5 |
f99e742c562a1b3dda981c465dac1548
|
|
| BLAKE2b-256 |
3830be221c8478a294400ffb7867a3014cce657c5bcc806aee2684bca3e68bb9
|
File details
Details for the file install_release-0.6.0-py3-none-any.whl.
File metadata
- Download URL: install_release-0.6.0-py3-none-any.whl
- Upload date:
- Size: 40.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f685983df8607370e43caef8b5fd3d45d12375399fb8066f99e8a2031cda3866
|
|
| MD5 |
c59f6bfb8ceab1653ba9654d6ad331f0
|
|
| BLAKE2b-256 |
b1b67425a95c30c6cb3921e67e323b559005e228757d12b210e4fbb39abd03f3
|