Skip to main content

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

Project description

icon
๐Ÿง 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 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, brew etc.

How it works

Table of Contents ๐Ÿ“š

Getting started

Installation

Prerequisites:

Installation command:

pip install -U install-release

Set up the PATH for shell (e.g. ~/.bashrc or ~/.zshrc):

Tools installed via ir will be installed to ~/bin by default.

export PATH="$HOME/bin:$PATH" 

If you want to change the installation path, you can use the ir config --path <path> flag.


Manage your tools

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 ...

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.

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 as system package (deb/rpm/appimage) ๐Ÿ“ฆ

If the release asset files provide a package file for your system, you can install tools as a system package (deb/rpm/appimage) instead of a standalone binary by using the --pkg flag.

This is useful for tools that provide .deb, .rpm or appimage releases that might need other system package dependencies to work.

# Example installation of RedisInsight, a dashboard to manage Redis
โฏ ir get https://github.com/redis/RedisInsight --pkg

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
Update installed system packages ๐Ÿ“ฆ

If you have tools installed as packages (deb/rpm/appimage), ir upgrade will inform you if updates are available but will not install them. To upgrade packages, run:

โฏ ir upgrade --pkg

This will prompt for sudo permissions to upgrade the system packages.

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

Configure tool installation path

โฏ ir config --path ~/.local/bin

INFO   Updated path to:  ~/.local/bin
INFO   Done

Configure 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 --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.

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.3.tar.gz (44.0 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.3-py3-none-any.whl (49.0 kB view details)

Uploaded Python 3

File details

Details for the file install_release-0.6.3.tar.gz.

File metadata

  • Download URL: install_release-0.6.3.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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.3.tar.gz
Algorithm Hash digest
SHA256 be83eccd85093e552df9e7895c32cc99d0290829f170c7fc19c3a8a4bc80b947
MD5 288d93eef07899ea9be06362cdfd9f61
BLAKE2b-256 77570aeb25cc5ab023e5a2ff526141cc68f0dc9c79cdaaf842bcc490cadbed0b

See more details on using hashes here.

File details

Details for the file install_release-0.6.3-py3-none-any.whl.

File metadata

  • Download URL: install_release-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 49.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0f0f3efbdae22d7999fbb74b8d0b83b6579f877bae25c71cfa38c83906040e28
MD5 f9dda2db5b1cbfe2c77ddaf549758bea
BLAKE2b-256 8d0ac9b3a2c31e019db5d47a26ba38481a27ee50610b8cfbd8d5e2c723746d01

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