An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

![Build](https://github.com/xermicus/blindspot/workflows/Build/badge.svg?branch=master)
[![Cargo](https://img.shields.io/crates/v/blindspot.svg)](https://crates.io/crates/blindspot)
[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](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:

[![asciicast](https://asciinema.org/a/337585.svg)](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.