https://github.com/xermicus/blindspot
Install and update single binary apps without any hassle
https://github.com/xermicus/blindspot
Last synced: 10 months ago
JSON representation
Install and update single binary apps without any hassle
- Host: GitHub
- URL: https://github.com/xermicus/blindspot
- Owner: xermicus
- License: mit
- Created: 2020-06-08T22:11:10.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-09-18T22:23:31.000Z (over 4 years ago)
- Last Synced: 2025-08-03T11:16:46.844Z (11 months ago)
- Language: Rust
- Size: 115 KB
- Stars: 29
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://crates.io/crates/blindspot)
[](https://opensource.org/licenses/MIT)
# The blindspot package manager
Most of the software running on my linux computers is managed by official or community maintained repositories or various 3rd-party package managers.
However, especially for newer software projects it can take a while for a package to become available even when using the most popular distros.
Additionally, a tendency I started to notice about projects built with a language producing statically linked binaries:
> Because all you need is our binary somewhere inside `$PATH` anyways, just download this artifact here directly from our CI builds and you're good
I'm generally fine with this installation method, but it creates a problem: These binaries are not managed by anything on my system and therefore remembering when and how to update is cumbersome. They kind of live in a blind spot of my package manager(s). And this is how the idea for `blindspot` started! See it in action:
[](https://asciinema.org/a/337585)
# Features
* Install a package based on a browser download URL
* Detect GitHub repos and install from GitHub release asset
* Detect tar archives and common compression based on the filename and guide through extracting files
* Update packages simultaneously
* Revert a package to the previous version from before the update
* Uses user local standard directories for data and configuration, no root privileges required
* It's fast and has lots of emojis in the user interface
# Installation
## Github release
Download a [release](https://github.com/xermicus/blindspot/releases) and run the `init` command that can install itself:
```bash
cd ~/Downloads # assuming you downloaded it there
chmod +x blindspot_x86_64
./blindspot_x86_64 init
rm ./blindspot_x86_64
```
This automatically creates the config file and installs `blindspot` into the current users local bin dir.
## Cargo
```bash
cargo install blindspot
blindspot init --no-install
```
## MacOS Users
On a test device the `init` command failed to find the binary dir on MacOS. I set it manually `export BSPM_BIN_DIR=/Users/myuser/Applications/blindspot` and then added this to `$PATH`. Since I'm not used to MacOS I can't tell whether this is just a misconfigured device or generally the case with MacOS.
# Usage
The usage should not be too far off from what you'd expect from a package manager. View the [asciinema](https://asciinema.org/a/337585) to get the basic idea.
## Help
Use the `--help` flag to learn about the various subcommands.
## Configuration
`blindspot` works out of the box if at least your `$HOME` env var is set. Use the following environment variables to overwrite default behaviour:
|Name|Purpose|Default|
|-|-|-|
|**$BSPM_CONFIG**|Location of the config file|`$XDG_CONFIG_HOME/blindspot/bspm.yaml` or `$HOME/.config/blindspot/bspm.yaml`|
|**$BSPM_BIN_DIR**|Where application binaries get installed to|`$XDG_BIN_HOME/../bin` or `$XDG_DATA_HOME/../bin` or `$HOME/.local/bin`|
|**$BSPM_DATA_DIR**|Where backup binaries for a rollbacks are kept|`$XDG_DATA_HOME/blindspot/` or `$HOME/.local/share/blindspot`|
## Shell completion
Completions for the most popular shells are provided. Default is `bash`:
```bash
source <(blindspot completion)
```
# Disclaimer
Do not run this software as `root`! There should be no reason to do so.
This tool is just a small hobby project and in no way trying to solve package management on linux as a whole.