Huber is to simplify the package management from GitHub projects with a builtin awesome list (live updating) of popular projects. It also supports repository feature for managing the package installation from your personal Github project. Please check the complete introduction as below.
Huber is a (new) tool for easy installation of dev/ops CLI tools directly from GitHub. No more trawling the releases pages!
introduced by Coffee and Cloud Native - 88
huber.yaml
in any public/private GitHub repo aware to Huber to manage the described packagesSSH
/HTTPS
) for github communicationPlease install necessary dependent libraries on the supported platforms to make sure huber work as expected. Use appropriate OS package manager to install the dependencies.
```console
❯ apt install libssl-dev libarchive-dev
❯ zypper install libopenssl-devel libarchive-devel
❯ dnf install openssl-devel libarchive-devel ```
console
❯ brew install libarchive
❯ export PKG_CONFIG_PATH=/usr/local/opt/libarchive/lib/pkgconfig
❯ brew install openssl
Please install libarchive, which can be installed with Cygwin, MinGW (pacman -S mingw-w64-x86_64-libarchive
) or Vcpkg (vcpkg install libarchive
).
For vcpkg, you can refer to vcpkg#quick-start-windows.
For official releases, please install the latest release as below command. After the installation, huber
will be automatically added to the environment path by updating the$HOME/.bashrc
.
But, if it does not work as expected, please remember to add $HOME/.huber/bin
in the environment path, so huber
will be looked up correctly.
```console
❯ cargo install huber
❯ curl -sfSL https://raw.githubusercontent.com/innobead/huber/master/hack/install.sh | bash
❯ . { iwr -useb https://raw.githubusercontent.com/innobead/huber/master/hack/windows/install.ps1 } | iex; install ```
For Linux or Mac users, follow below steps to prepare the environment.
```console
❯ make set-dev
❯ make install ```
For Windows users, follow below steps to prepare the environment.
./bootstrap-vcpkg.bat
./hack/windows/setup-dev.ps1
Note: - If encountering github access rate limitation, suggest to set GITHUB_TOKEN environment variable when running the huber command, or use the global option
--github-token
or configure the huber configuration viahuber config update
. Ref: how to create a personal access token
- If using SSH to connect github, must set GITHUB_KEY environment variable when running the huber command, or use the global option
--github-key
or configure the huber configuration viahuber config update
.
```console ❯ huber help huber Huber, simplify github package management
USAGE: huber [OPTIONS] [SUBCOMMAND]
FLAGS: -h, --help Prints help information -V, --version Prints version information
OPTIONS:
-k, --github-key
SUBCOMMANDS: config Manages the configuration current Updates the current package version [aliases: c] flush Flushes inactive artifacts [aliases: f] help Prints this message or the help of the given subcommand(s) info Shows the package info [aliases: i] install Installs the package [aliases: in] repo Manages repositories reset Resets huber [aliases: r] search Searches package [aliases: se] self-update Updates huber [aliases: su] show Shows installed packages [aliases: s] uninstall Uninstalls package [aliases: un, rm] update Updates the installed package [aliases: u]
```
For the complete package list, please refer to huber managed package list
``console
❯ huber search
Name Description Source
arkade Your one-stop CLI for Kubernetes https://github.com/alexellis/arkade
bat A cat(1) clone with wings. https://github.com/sharkdp/bat
conftest Write tests against structured configuration data using the Open Policy Agent Rego query language https://github.com/open-policy-agent/conftest
consul Consul is a distributed, highly available, and data center aware solution to connect and configure a... https://github.com/hashicorp/consul
containerd An open and reliable container runtime https://github.com/containerd/containerd
ctlptl Making local Kubernetes clusters fun and easy to set up https://github.com/tilt-dev/ctlptl
dasel Query and update data structures from the command line. Comparable to jq/yq but supports JSON, TOML,... https://github.com/TomWright/dasel
deno A secure JavaScript and TypeScript runtime https://github.com/denoland/deno
faas-cli Official CLI for OpenFaaS https://github.com/openfaas/faas-cli
firecracker Secure and fast microVMs for serverless computing. https://github.com/firecracker-microvm/firecracker
fission Fast and Simple Serverless Functions for Kubernetes https://github.com/fission/fission
fleet Manage large fleets of Kubernetes clusters https://github.com/rancher/fleet
gh GitHub’s official command line tool https://github.com/cli/cli
helm The Kubernetes Package Manager https://github.com/helm/helm
hub A command-line tool that makes git easier to use with GitHub. https://github.com/github/hub
huber Huber, simplify
GitHub release` package management 📦 with a live awesome list of GitHub project... https://github.com/innobead/huber
istio Connect, secure, control, and observe services. https://github.com/istio/istio
k0s k0s - Zero Friction Kubernetes https://github.com/k0sproject/k0s
k3ai K3ai is a lightweight, fully automated, AI infrastructure-in-a-box solution that allows anyone to ex... https://github.com/kf5i/k3ai
k3d Little helper to run Rancher Lab's k3s in Docker https://github.com/rancher/k3d
k3s Lightweight Kubernetes https://github.com/rancher/k3s
k3sup bootstrap Kubernetes with k3s over SSH < 1 min 🚀 https://github.com/alexellis/k3sup
k9s 🐶 Kubernetes CLI To Manage Your Clusters In Style! https://github.com/derailed/k9s
kind Kubernetes IN Docker - local clusters for testing Kubernetes https://github.com/kubernetes-sigs/kind
...
```
```console ❯ huber search k3s Name Description Source k3s Lightweight Kubernetes "https://github.com/rancher/k3s"
❯ huber search -p k3 Name Description Source k3ai K3ai is a lightweight, fully automated, AI infrastructure-in-a-box solution that allows anyone to ex... https://github.com/kf5i/k3ai k3d Little helper to run Rancher Lab's k3s in Docker https://github.com/rancher/k3d k3s Lightweight Kubernetes https://github.com/rancher/k3s k3sup bootstrap Kubernetes with k3s over SSH < 1 min 🚀 https://github.com/alexellis/k3sup
❯ huber search k3s --all Name Version Kind k3s v1.19.3-rc1+k3s2 PreRelease k3s v1.19.3-rc1+k3s1 PreRelease k3s v1.19.3+k3s2 Release k3s v1.19.3+k3s1 Release k3s v1.19.2-rc2+k3s1 PreRelease k3s v1.19.2-rc1+k3s1 PreRelease k3s v1.19.2+k3s1 Release k3s v1.19.1-rc2+k3s1 PreRelease k3s v1.19.1-rc1+k3s1 PreRelease k3s v1.19.1+k3s1 Release k3s v1.18.9-rc1+k3s1 PreRelease k3s v1.18.9+k3s1 Release k3s v1.18.8-rc1+k3s1 PreRelease k3s v1.18.8+k3s1 Release k3s v1.18.10-rc1+k3s2 PreRelease k3s v1.18.10-rc1+k3s1 PreRelease k3s v1.18.10+k3s2 Release k3s v1.18.10+k3s1 Release k3s v1.17.9+k3s1 Release k3s v1.17.13-rc1+k3s2 PreRelease k3s v1.17.13-rc1+k3s1 PreRelease k3s v1.17.13+k3s2 Release k3s v1.17.13+k3s1 Release k3s v1.17.12+k3s1 Release k3s v1.17.11-rc1+k3s1 PreRelease k3s v1.17.11+k3s1 Release k3s v1.16.15+k3s1 Release k3s v1.16.14-rc1+k3s1 PreRelease k3s v1.16.14+k3s1 Release k3s v1.16.13+k3s1 Release ```
```console ❯ huber install k3s Installing k3s Downloading package artifacts from github Setting k3s (version: v1.19.3+k3s3, source: github) as the current package Installed executables: - /home/davidko/.huber/bin/k3s k3s (version: v1.19.3+k3s3, source: github) installed
❯ huber install k3s -v v1.18.10+k3s2 Updating k3s to k3s (version: v1.19.3+k3s3, source: github) Downloading package artifacts from github Setting k3s (version: v1.18.10+k3s2, source: github) as the current package Installed executables: - /home/davidko/.huber/bin/k3s k3s (version: v1.18.10+k3s2, source: github) updated ```
console
❯ huber update velero
Updating velero (version: v1.4.3, source: github) to the latest version
Downloading package artifacts from github
Setting velero (version: v1.5.2, source: github) as the current package
Installed executables:
- /home/davidko/.huber/bin/velero
velero updated
console
❯ huber uninstall k3s
Uninstalling k3s
k3s uninstalled
```console ❯ huber show k3s --all Name Version Current Executables Kind k3s v1.19.3+k3s3 false Release k3s v1.18.10+k3s2 true - /home/davidko/.huber/bin/k3s Release
❯ huber current k3s v1.19.3+k3s3 Setting k3s (version: v1.19.3+k3s3, source: github) as the current package Updated executables: - /home/davidko/.huber/bin/k3s k3s (version: v1.19.3+k3s3, source: github) as current updated
❯ huber show k3s --all Name Version Current Executables Kind k3s v1.19.3+k3s3 true - /home/davidko/.huber/bin/k3s Release k3s v1.18.10+k3s2 false Release ```
```console
❯ huber info k3s
Name Version Description Source Targets Release Kind
k3s v1.19.3+k3s3 Github: - LinuxAmd64: Release
owner: rancher artifacttemplates:
repo: k3s - "{version}/k3s"
- LinuxArm64:
artifacttemplates:
- "{version}/k3s-arm64"
name: k3s version: v1.19.3+k3s3 description: ~ source: Github: owner: rancher repo: k3s targets: - LinuxAmd64: artifacttemplates: - "{version}/k3s" - LinuxArm64: artifacttemplates: - "{version}/k3s-arm64" detail: Github: package: url: "https://api.github.com/repos/rancher/k3s/releases/33895674" htmlurl: "https://github.com/rancher/k3s/releases/tag/v1.19.3%2Bk3s3" assetsurl: "https://api.github.com/repos/rancher/k3s/releases/33895674/assets" uploadurl: "https://uploads.github.com/repos/rancher/k3s/releases/33895674/assets{?name,label}" tarballurl: "https://api.github.com/repos/rancher/k3s/tarball/v1.19.3+k3s3" zipballurl: "https://api.github.com/repos/rancher/k3s/zipball/v1.19.3+k3s3" id: 33895674 tagname: v1.19.3+k3s3 targetcommitish: release-1.19 name: v1.19.3+k3s3 draft: false prerelease: false createdat: "2020-11-13T05:06:42Z" publishedat: "2020-11-13T07:14:25Z" assets: - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267759" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/e2e-passed-amd64-parallel.log" id: 28267759 name: e2e-passed-amd64-parallel.log label: "" state: uploaded contenttype: text/plain; charset=utf-8 size: 1256238 downloadcount: 8 createdat: "2020-11-13T07:38:19Z" updatedat: "2020-11-13T07:38:20Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267760" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/e2e-passed-amd64-serial.log" id: 28267760 name: e2e-passed-amd64-serial.log label: "" state: uploaded contenttype: text/plain; charset=utf-8 size: 86608 downloadcount: 6 createdat: "2020-11-13T07:38:20Z" updatedat: "2020-11-13T07:38:20Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267171" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s" id: 28267171 name: k3s label: "" state: uploaded contenttype: application/octet-stream size: 53481472 downloadcount: 5435 createdat: "2020-11-13T07:20:38Z" updatedat: "2020-11-13T07:20:39Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267172" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s-airgap-images-amd64.tar" id: 28267172 name: k3s-airgap-images-amd64.tar label: "" state: uploaded contenttype: application/x-tar size: 369606656 downloadcount: 267 createdat: "2020-11-13T07:20:39Z" updatedat: "2020-11-13T07:20:46Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267106" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s-airgap-images-arm.tar" id: 28267106 name: k3s-airgap-images-arm.tar label: "" state: uploaded contenttype: application/x-tar size: 318740480 downloadcount: 22 createdat: "2020-11-13T07:18:10Z" updatedat: "2020-11-13T07:18:19Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267043" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s-airgap-images-arm64.tar" id: 28267043 name: k3s-airgap-images-arm64.tar label: "" state: uploaded contenttype: application/x-tar size: 352361984 downloadcount: 32 createdat: "2020-11-13T07:16:51Z" updatedat: "2020-11-13T07:16:57Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267047" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s-arm64" id: 28267047 name: k3s-arm64 label: "" state: uploaded contenttype: application/octet-stream size: 48758784 downloadcount: 699 createdat: "2020-11-13T07:16:57Z" updatedat: "2020-11-13T07:16:58Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267108" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s-armhf" id: 28267108 name: k3s-armhf label: "" state: uploaded contenttype: application/octet-stream size: 48496640 downloadcount: 624 createdat: "2020-11-13T07:18:19Z" updatedat: "2020-11-13T07:18:21Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267173" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/k3s-images.txt" id: 28267173 name: k3s-images.txt label: "" state: uploaded contenttype: text/plain; charset=utf-8 size: 313 downloadcount: 49 createdat: "2020-11-13T07:20:46Z" updatedat: "2020-11-13T07:20:46Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267174" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/sha256sum-amd64.txt" id: 28267174 name: sha256sum-amd64.txt label: "" state: uploaded contenttype: text/plain; charset=utf-8 size: 245 downloadcount: 5745 createdat: "2020-11-13T07:20:46Z" updatedat: "2020-11-13T07:20:47Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267110" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/sha256sum-arm.txt" id: 28267110 name: sha256sum-arm.txt label: "" state: uploaded contenttype: text/plain; charset=utf-8 size: 168 downloadcount: 805 createdat: "2020-11-13T07:18:21Z" updatedat: "2020-11-13T07:18:21Z" - url: "https://api.github.com/repos/rancher/k3s/releases/assets/28267048" browserdownloadurl: "https://github.com/rancher/k3s/releases/download/v1.19.3%2Bk3s3/sha256sum-arm64.txt" id: 28267048 name: sha256sum-arm64.txt label: "" state: uploaded contenttype: text/plain; charset=utf-8 size: 170 downloadcount: 760 createdat: "2020-11-13T07:16:59Z" updatedat: "2020-11-13T07:16:59Z" releasekind: Release ```
```console ❯ huber show Name Version Current Kind k3s v1.19.3+k3s3 true Release
❯ huber show k3s Name Version Current Executables Kind k3s v1.19.3+k3s3 true - /home/davidko/.huber/bin/k3s Release
❯ huber show k3s --all Name Version Current Executables Kind k3s v1.19.3+k3s3 true - /home/davidko/.huber/bin/k3s Release k3s v1.18.10+k3s2 false Release ```
```console ❯ huber show k3s --all Name Version Current Executables Kind k3s v1.19.3+k3s3 true - /home/davidko/.huber/bin/k3s Release k3s v1.18.10+k3s2 false Release
❯ huber flush Removing k3s (version: v1.18.10+k3s2, source: github)
❯ huber show --all Name Version Current Executables Kind k3s v1.19.3+k3s3 true - /home/davidko/.huber/bin/k3s Release ```
The repository can be private, public github repos or even a local huber.yaml. If it's private, make sure you have the permission to access via the authorized SSH private key.
```console ❯ huber repo add remote-repo --url https://github.com/innobead/huberunmanageddemo Repository { name: "remote-repo", url: Some("https://github.com/innobead/huberunmanageddemo"), file: None } added
❯ huber repo add local-repo -f huber.yaml Repository { name: "local-repo", url: None, file: Some("huber.yaml") } added ```
Add huber.yaml in the top-level directory of the repository (ref: huber.yaml example)
console
❯ huber repo list
Name Url File
remote-repo https://github.com/innobead/huber_unmanaged_demo
console
❯ huber install conftest2
Installing conftest2
Downloading package artifacts from github
Setting conftest2 (version: v0.22.0, source: github) as the current package
Installed executables:
- /home/davidko/.huber/bin/conftest
conftest2 (version: v0.22.0, source: github) installed
console
❯ huber repo remove remote-repo
remote-repo removed
```console ❯ huber config update --github-token mytoken --github-key /home/davidko/.ssh/id_rsa Updating the configuration The configuration updated
Log Level Output Format Github Token Github Key ERROR Console mytoken /home/davidko/.ssh/id_rsa ```
console
❯ huber config show
Log Level Output Format Github Token Github Key
ERROR Console mytoken /home/davidko/.ssh/id_rsa
```console ❯ huber reset Resetting huber by removing created caches, downloaded files and installed packages Done
```
```console ❯ huber self-update Updating huber to v1.0.0 huber v1.0.0 updated
❯ huber self-update Error: No update available: 404 Not Found: Not Found
```
If you would like to add some useful tools in the builtin managed packages list, please have a PR as below steps.
crates/generator/src/pkg
crates/generator/src/build.rs
make generate
w/ your GITHUB_TOKEN
to check if the new package manifest generated in generated/packages
and generated/index.yaml
updated accordingly