ginstall.sh icon indicating copy to clipboard operation
ginstall.sh copied to clipboard

A shell script that can install the compiled binaries of CLI tools straight from their GitHub release page.

⚠ Warning ⚠

This project has reached EOL with the release of v3.4.1 and will be succeeded by a new script that was written from scratch soon™. This repository will be archived at that point.

About

This script can be used to install/update the compiled binaries of statically and dynamically linked applications from the command line.

It makes heavy use of gget under the hood to dynamically fetch git repository assets whenever possible.

Dependencies

Mandatory

  • standard tools (bash, chmod, chown, grep, mv, rm, sed, tar)
  • gget v0.5.2 or later
  • curl
  • unzip

Optional

  • bzip2 (only required for installing restic)
  • gzip (only required for installing chisel, cloud-torrent, goatcounter and govc)
  • p7zip (only required for installing gobuster)
  • sudo (only required for installing to /usr/local/bin)

Installation

You can install ginstall.sh by downloading the latest release to /usr/local/bin and making it executable:

sudo curl -L -o /usr/local/bin/ginstall.sh https://github.com/whalehub/ginstall.sh/releases/download/v3.4.1/ginstall.sh
sudo chmod +x /usr/local/bin/ginstall.sh

The dependency gget can be installed by running ginstall.sh with the --first-run flag.

Once gget has been installed, you can update it with ginstall.sh just like any other supported application.

Usage

whalehub@pdh:~# ginstall.sh --help
About:
  ginstall.sh is a script for installing/updating the compiled binaries of statically and dynamically linked applications.

Usage:
  ginstall.sh [flags] <app> <version>

Examples:
  ginstall.sh hugo 0.72.0
  ginstall.sh -d /opt/apps hugo latest
  ginstall.sh -d /opt/apps --first-run
  ginstall.sh -c hugo
  ginstall.sh -r hugo
  ginstall.sh -s hugo

Flags:
  --check, -c           Print the latest available version of an application
  --directory, -d       Specify a custom directory to use instead of /usr/local/bin
  --first-run           Install ginstall.sh's dependency gget via curl
  --remove, -r          Uninstall an application
  --search, -s          Perform a search on the list of supported applications
  --self-update         Update ginstall.sh to the latest available version

Info:
  --help, -h            Show this page
  --list, -l            Print a list of supported applications
  --version, -v         Print the ginstall.sh version information

API Rate Limits

The default rate limit for unauthenticated API requests on GitHub is 60 per hour per IP address. If required, you can increase this limit for your account to 5,000 per hour for free by generating a personal access token in your account settings and adding the following line to your user's .bashrc file.

export GITHUB_TOKEN=replace_this_string_with_your_token

Addition Requests

If you would like to see an application added to the list of supported ones, please feel free to either open an issue or a pull request.

Supported Applications

You can view a markdown-formatted version of the --list flag's output with easily-clickable repository links by opening the spoiler below.

Spoiler

Application Linker Type Repository
acme-dns dynamic https://github.com/joohoi/acme-dns
act static https://github.com/nektos/act
adguardhome static https://github.com/AdguardTeam/AdGuardHome
age static https://github.com/FiloSottile/age
age-keygen static https://github.com/FiloSottile/age
amass static https://github.com/OWASP/Amass
andesite dynamic https://github.com/nektro/andesite
annie static https://github.com/iawia002/annie
apizza static https://github.com/harrybrwn/apizza
arc static https://github.com/mholt/archiver
argocd static https://github.com/argoproj/argo-cd
authelia static https://github.com/authelia/authelia
autocert static https://github.com/smallstep/autocert
avif static https://github.com/Kagami/go-avif
badger dynamic https://github.com/dgraph-io/dgraph
bat dynamic https://github.com/sharkdp/bat
bed static https://github.com/itchyny/bed
bin dynamic https://github.com/w4/bin
blocky dynamic https://github.com/0xERR0R/blocky
bombardier static https://github.com/codesenberg/bombardier
borg dynamic https://github.com/borgbackup/borg
brig dynamic https://github.com/sahib/brig
bw dynamic https://github.com/bitwarden/cli
caddy static https://github.com/caddyserver/caddy
caire dynamic https://github.com/esimov/caire
captainhook static https://github.com/bketelsen/captainhook
ccat static https://github.com/jingweno/ccat
chisel static https://github.com/jpillora/chisel
chroma dynamic https://github.com/alecthomas/chroma
cloud-torrent static https://github.com/jpillora/cloud-torrent
cobalt dynamic https://github.com/cobalt-org/cobalt.rs
comics-downloader static https://github.com/Girbons/comics-downloader
composer dynamic https://github.com/composer/composer
coredns static https://github.com/coredns/coredns
croc static https://github.com/schollz/croc
ctop dynamic https://github.com/bcicen/ctop
ddgr dynamic https://github.com/jarun/ddgr
ddns-route53 static https://github.com/crazy-max/ddns-route53
delta dynamic https://github.com/dandavison/delta
deno_lint dynamic https://github.com/denoland/deno_lint
dgraph dynamic https://github.com/dgraph-io/dgraph
dgraph-ratel dynamic https://github.com/dgraph-io/dgraph
discord-console static https://github.com/discordconsole-team/DiscordConsole
discord-delete dynamic https://github.com/adversarialtools/discord-delete
diskonaut static https://github.com/imsnif/diskonaut
diskus dynamic https://github.com/sharkdp/diskus
diun static https://github.com/crazy-max/diun
dive static https://github.com/wagoodman/dive
dnscontrol static https://github.com/StackExchange/dnscontrol
dnscrypt-proxy static https://github.com/DNSCrypt/dnscrypt-proxy
dnsproxy dynamic https://github.com/AdguardTeam/dnsproxy
dobi static https://github.com/dnephin/dobi
docker-compose dynamic https://github.com/docker/compose
docker-credential-pass static https://github.com/docker/docker-credential-helpers
docker-gen static https://github.com/jwilder/docker-gen
docker-machine static https://github.com/docker/machine
drive static https://github.com/odeke-em/drive
drone static https://github.com/drone/drone-cli
dstask static https://github.com/naggie/dstask
duplicacy static https://github.com/gilbertchen/duplicacy
edgedns dynamic https://github.com/jedisct1/edgedns
eksctl static https://github.com/weaveworks/eksctl
espanso dynamic https://github.com/federico-terzi/espanso
etcd static https://github.com/etcd-io/etcd
etcdctl static https://github.com/etcd-io/etcd
ethr dynamic https://github.com/microsoft/ethr
eureka static https://github.com/mimoo/eureka
exa dynamic https://github.com/ogham/exa
fd dynamic https://github.com/sharkdp/fd
ffmpeg static https://github.com/FFmpeg/FFmpeg
ffsend static https://github.com/timvisee/ffsend
filebrowser static https://github.com/filebrowser/filebrowser
findomain dynamic https://github.com/Edu4rdSHL/findomain
firecracker static https://github.com/firecracker-microvm/firecracker
fluxctl static https://github.com/fluxcd/flux
fn dynamic https://github.com/iron-io/functions
frece dynamic https://github.com/YodaEmbedding/frece
frpc static https://github.com/fatedier/frp
frps static https://github.com/fatedier/frp
ftpgrab static https://github.com/ftpgrab/ftpgrab
future-vuls dynamic https://github.com/future-architect/vuls
fx dynamic https://github.com/metrue/fx
fzf static https://github.com/junegunn/fzf
gau static https://github.com/lc/gau
gdrive dynamic https://github.com/gdrive-org/gdrive
geoip-updater static https://github.com/crazy-max/geoip-updater
gget static https://github.com/dpb587/gget
gh dynamic https://github.com/cli/cli
ginstall.sh dynamic https://github.com/whalehub/ginstall.sh
git-hooks static https://github.com/git-hooks/git-hooks
git-rewrite-author static https://github.com/crazy-max/git-rewrite-author
gitbatch static https://github.com/isacikgoz/gitbatch
gitea static https://github.com/go-gitea/gitea
gitui static https://github.com/extrawurst/gitui
go dynamic https://github.com/golang/go
go-auto-yt dynamic https://github.com/XiovV/Golty
goatcounter static https://github.com/zgoat/goatcounter
gobuster dynamic https://github.com/OJ/gobuster
gogs dynamic https://github.com/gogs/gogs
golangci-lint static https://github.com/golangci/golangci-lint
gomplate static https://github.com/hairyhenderson/gomplate
gomuks static https://github.com/tulir/gomuks
googler dynamic https://github.com/jarun/googler
gopass static https://github.com/gopasspw/gopass
goreleaser static https://github.com/goreleaser/goreleaser
gorush dynamic https://github.com/appleboy/gorush
gossa static https://github.com/pldubouilh/gossa
gosu static https://github.com/tianon/gosu
gotop dynamic https://github.com/xxxserxxx/gotop
gotty dynamic https://github.com/yudai/gotty
govc static https://github.com/vmware/govmomi
gpldr-client dynamic https://github.com/Depado/goploader
gpldr-server dynamic https://github.com/Depado/goploader
grpcurl static https://github.com/fullstorydev/grpcurl
handlr dynamic https://github.com/chmln/handlr
helm static https://github.com/helm/helm
hexyl dynamic https://github.com/sharkdp/hexyl
hey static https://github.com/rakyll/hey
httprobe dynamic https://github.com/tomnomnom/httprobe
httpstat static https://github.com/davecheney/httpstat
hub dynamic https://github.com/github/hub
hugo static https://github.com/gohugoio/hugo
hugo-extended dynamic https://github.com/gohugoio/hugo
hydra static https://github.com/ory/hydra
hyperfine dynamic https://github.com/sharkdp/hyperfine
identity static https://github.com/storj/storj
imdl static https://github.com/casey/intermodal
immuadmin static https://github.com/codenotary/immudb
immucli static https://github.com/codenotary/immudb
immudb static https://github.com/codenotary/immudb
immugw static https://github.com/codenotary/immudb
inlets static https://github.com/inlets/inlets
insect dynamic https://github.com/sharkdp/insect
intercert static https://github.com/evenh/intercert
ipfs dynamic https://github.com/ipfs/go-ipfs
jailer static https://github.com/firecracker-microvm/firecracker
jellycli dynamic https://github.com/tryffel/jellycli
jq static https://github.com/stedolan/jq
json2csv static https://github.com/jehiah/json2csv
json5 static https://github.com/yosuke-furukawa/json5
jsteg static https://github.com/lukechampine/jsteg
k3s static https://github.com/rancher/k3s
k6 static https://github.com/loadimpact/k6
k9s static https://github.com/derailed/k9s
kind static https://github.com/kubernetes-sigs/kind
komga dynamic https://github.com/gotson/komga
kompose static https://github.com/kubernetes/kompose
lazydocker static https://github.com/jesseduffield/lazydocker
lego static https://github.com/go-acme/lego
linuxkit static https://github.com/linuxkit/linuxkit
linx-cleanup static https://github.com/andreimarcu/linx-server
linx-genkey static https://github.com/andreimarcu/linx-server
linx-server static https://github.com/andreimarcu/linx-server
logcli static https://github.com/grafana/loki
loki static https://github.com/grafana/loki
louketo-proxy dynamic https://github.com/louketo/louketo-proxy
lsd dynamic https://github.com/Peltoche/lsd
lucid dynamic https://github.com/sharkdp/lucid
magneticod dynamic https://github.com/boramalper/magnetico
magneticow dynamic https://github.com/boramalper/magnetico
mango dynamic https://github.com/hkalexling/Mango
matterbridge static https://github.com/42wim/matterbridge
mdbook dynamic https://github.com/rust-lang/mdBook
micro static https://github.com/zyedidia/micro
migrate static https://github.com/golang-migrate/migrate
minify static https://github.com/tdewolff/minify
mkcert static https://github.com/FiloSottile/mkcert
mmark static https://github.com/mmarkdown/mmark
monitoror static https://github.com/monitoror/monitoror
monolith dynamic https://github.com/Y2Z/monolith
naabu dynamic https://github.com/projectdiscovery/naabu
nakama dynamic https://github.com/heroiclabs/nakama
navidrome static https://github.com/deluan/navidrome
nebula dynamic https://github.com/slackhq/nebula
nebula-cert dynamic https://github.com/slackhq/nebula
niltalk static https://github.com/knadh/niltalk
nnn static https://github.com/jarun/nnn
oauth2-proxy static https://github.com/oauth2-proxy/oauth2-proxy
opa static https://github.com/open-policy-agent/opa
oragono dynamic https://github.com/oragono/oragono
parcello static https://github.com/phogolabs/parcello
pastel dynamic https://github.com/sharkdp/pastel
peach static https://github.com/peachdocs/peach
pebble dynamic https://github.com/letsencrypt/pebble
pebble-challtestsrv dynamic https://github.com/letsencrypt/pebble
pegasus-fe dynamic https://github.com/mmatyas/pegasus-frontend
pgweb static https://github.com/sosedoff/pgweb
phoneinfoga static https://github.com/sundowndev/PhoneInfoga
pkger static https://github.com/markbates/pkger
plexdrive dynamic https://github.com/plexdrive/plexdrive
plik dynamic https://github.com/root-gg/plik
plikd dynamic https://github.com/root-gg/plik
podman-remote dynamic https://github.com/containers/podman
pomerium static https://github.com/pomerium/pomerium
pomerium-cli static https://github.com/pomerium/pomerium
portainer static https://github.com/portainer/portainer
promtail dynamic https://github.com/grafana/loki
qalc dynamic https://github.com/Qalculate/libqalculate
qrcp static https://github.com/claudiodangelis/qrcp
rage dynamic https://github.com/str4d/rage
rage-keygen dynamic https://github.com/str4d/rage
rattlesnakeos-stack dynamic https://github.com/dan-v/rattlesnakeos-stack
rclone static https://github.com/rclone/rclone
red static https://github.com/antonmedv/red
reg static https://github.com/genuinetools/reg
restic static https://github.com/restic/restic
rg static https://github.com/BurntSushi/ripgrep
rga static https://github.com/phiresky/ripgrep-all
rga-preproc static https://github.com/phiresky/ripgrep-all
rio static https://github.com/rancher/rio
rke static https://github.com/rancher/rke
rootlessctl static https://github.com/rootless-containers/rootlesskit
rootlesskit static https://github.com/rootless-containers/rootlesskit
rqbench dynamic https://github.com/rqlite/rqlite
rqlite dynamic https://github.com/rqlite/rqlite
rqlited dynamic https://github.com/rqlite/rqlite
rust-analyzer dynamic https://github.com/rust-analyzer/rust-analyzer
s dynamic https://github.com/zquestz/s
s2c static https://github.com/klauspost/compress
s2d static https://github.com/klauspost/compress
sccache static https://github.com/mozilla/sccache
sdns static https://github.com/semihalev/sdns
serverstatus dynamic https://github.com/mgerb/ServerStatus
sftpgo dynamic https://github.com/drakkan/sftpgo
shellcheck static https://github.com/koalaman/shellcheck
simple-vpn dynamic https://github.com/skx/simple-vpn
slack-term static https://github.com/erroneousboat/slack-term
slink static https://github.com/lukechampine/jsteg
spotifyd static https://github.com/Spotifyd/spotifyd
spt dynamic https://github.com/Rigellute/spotify-tui
ssh-auditor static https://github.com/ncsa/ssh-auditor
sshcode dynamic https://github.com/cdr/sshcode
sslocal dynamic https://github.com/shadowsocks/shadowsocks-rust
ssmanager dynamic https://github.com/shadowsocks/shadowsocks-rust
ssserver dynamic https://github.com/shadowsocks/shadowsocks-rust
ssurl dynamic https://github.com/shadowsocks/shadowsocks-rust
starship dynamic https://github.com/starship/starship
statping static https://github.com/statping/statping
stdiscosrv static https://github.com/syncthing/discosrv
stegify static https://github.com/DimitarPetrov/stegify
step static https://github.com/smallstep/cli
strelaysrv static https://github.com/syncthing/relaysrv
sup static https://github.com/pressly/sup
swagger static https://github.com/go-swagger/go-swagger
swarm-cronjob static https://github.com/crazy-max/swarm-cronjob
syncthing static https://github.com/syncthing/syncthing
tableview static https://github.com/informationsea/tableview
task static https://github.com/go-task/task
tasklite dynamic https://github.com/ad-si/TaskLite
tengo static https://github.com/d5/tengo
tflint static https://github.com/terraform-linters/tflint
tfsec static https://github.com/liamg/tfsec
tldr++ static https://github.com/isacikgoz/tldr
traefik static https://github.com/containous/traefik
transfersh static https://github.com/dutchcoders/transfer.sh
travis-wait-enhanced static https://github.com/crazy-max/travis-wait-enhanced
trivy static https://github.com/aquasecurity/trivy
trivy-to-vuls dynamic https://github.com/future-architect/vuls
txeh static https://github.com/txn2/txeh
unetbootin static https://github.com/unetbootin/unetbootin
unftp static https://github.com/bolcom/unFTP
up static https://github.com/apex/up
uplink static https://github.com/storj/storj
upx static https://github.com/upx/upx
vector static https://github.com/timberio/vector
vegeta static https://github.com/tsenart/vegeta
velero static https://github.com/vmware-tanzu/velero
vigil static https://github.com/valeriansaliou/vigil
vivid dynamic https://github.com/sharkdp/vivid
vsphere-influxdb-go dynamic https://github.com/Oxalide/vsphere-influxdb-go
vuls dynamic https://github.com/future-architect/vuls
wal-g dynamic https://github.com/wal-g/wal-g
watchtower static https://github.com/containrrr/watchtower
wrangler static https://github.com/cloudflare/wrangler
wuzz static https://github.com/asciimoo/wuzz
xsv static https://github.com/BurntSushi/xsv
youtube-dl dynamic https://github.com/ytdl-org/youtube-dl
yq static https://github.com/mikefarah/yq
ytop dynamic https://github.com/cjbassi/ytop
zenith static https://github.com/bvaisvil/zenith
zola dynamic https://github.com/getzola/zola
zoxide dynamic https://github.com/ajeetdsouza/zoxide