Binaries for $HOME.
Homebins installs binaries and scripts to your $HOME
directory, directly from vendor, without sudo and root.
See Install and Usage for more information.
With Go and Rust came a whole new collection of awesome commandline tools such as [ripgrep], [bat], [exa], etc. Thanks to the generous sponsoring of build capacity on Github Actions, Travis CI, Azure Pipelines even well-established tools such as [jq] or [pandoc] can now conveniently ship their releases as binaries.
Homebins helps you download and install the latest releases of these awesome tools to your $HOME directory, so you no longer need to wait for your distribution to ship them or install compilers and build dependencies or visit dozens of Github pages for downloads.
git
, curl
, tar
and unzip
are installed.~/.local/bin
to your $PATH
and ~/.local/share/man
to your manpath
(Ubuntu systems seem to do the latter automatically if $PATH
is set up).chmod a+x ./homebins
./homebins install homebins
rm ./homebins
There's also a [dotbot] plugin at [dotbot-homebins].
```console
$ homebins list
$ homebins install bat ripgrep
$ homebins outdated $ homebins update
$ homebins remove ripgrep
$ homebins manifest-install my-tool.toml ```
See homebins --help
for more information.
Homebins relies on manifests written in [TOML] to describe where to get a binary from and how to install it.
By default it uses manifests from the Git repo at lunaryorn/homebin-manifests; support for custom manifest repositories is planned.
It can also use manifest files directly with any of the manifest-*
commands.
Homebins does not keep a database of installed manifests; it simply probes all known manifests and queries the version of the installed binary.
Manifests are a simple TOML file with some metadata and download instructions:
```toml [info]
name = "jq"
version = "1.6"
url = "https://github.com/stedolan/jq"
license = "MIT"
[discover]
binary = "jq"
version_check.args = ["--version"]
version_check.pattern = "jq-(\d\S+)"
[[install]]
download = "https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64"
checksums.b2 = "d08b0756d6a6c021c20610f184de2117827d4aeb28ce87a245a1fc6ee836ef42a3ffd3a31811ea4360361d4a63d6729baf328ac024a68545974de9f6b709733c"
name = "jq" type = "bin"
[[install]] download = "https://github.com/stedolan/jq/releases/download/jq-1.6/jq-1.6.tar.gz" checksums.b2 = "c9be1314e9d027247de63492ee362e996ef85faf45a47ee421cad95ebde9188bff8d3fc7db64e717ab922e1052f3b1c1500f5589fc5b2199ab66effb000e442d"
files = [ # Install the entry jq-1.6/jq.1.prebuilt as manpage in section 1, named jq.1 # This copies jq-1.6/jq.1.prebuilt from the archive to # ~/.local/share/man/man1/jq.1 # Again "name" is optional and defaults to the filename of the "source". { source = "jq-1.6/jq.1.prebuilt", name = "jq.1", type = "man", section = 1 } # Homebins also supports fish completions: The following would copy # jq.fish to ~/.config/fish/completions/jq.fish but jq doesn't include fish # completion. # { source = "jq-1.6/jq.fish", type = "completion", shell = "fish" } ] ```
The info.license
field uses SPDX license expressions.
See lunaryorn/homebin-manifests for more examples.
Copyright (c) 2020 Sebastian Wiesner sebastian@swsnr.de
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.