Skip to main content

Simple package manager to easily install, update and manage any command-line(CLI) tool directly from github releases

Project description

๐Ÿš€ Install Release

Python Version Downloads

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, brew etc.

How it works

Table of Contents ๐Ÿ“š

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 your PATH)
# 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-release fails 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

install_release-0.6.0.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

install_release-0.6.0-py3-none-any.whl (40.4 kB view details)

Uploaded Python 3

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

Hashes for install_release-0.6.0.tar.gz
Algorithm Hash digest
SHA256 880d469f25ef844e71a3addf54d31512960493022c827cdf1423f4f8c811de22
MD5 f99e742c562a1b3dda981c465dac1548
BLAKE2b-256 3830be221c8478a294400ffb7867a3014cce657c5bcc806aee2684bca3e68bb9

See more details on using hashes here.

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

Hashes for install_release-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f685983df8607370e43caef8b5fd3d45d12375399fb8066f99e8a2031cda3866
MD5 c59f6bfb8ceab1653ba9654d6ad331f0
BLAKE2b-256 b1b67425a95c30c6cb3921e67e323b559005e228757d12b210e4fbb39abd03f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page