Go to file
2022-12-18 13:52:57 -08:00
cmd/lure-api-server Add GetBuildScript API endpoint 2022-12-18 13:52:57 -08:00
distro Parse distro version ID instead of build ID 2022-11-20 21:43:58 +00:00
docs Add new commands to usage.md table of contents 2022-12-02 13:45:57 -08:00
download Add install-completion helper command 2022-11-21 15:20:22 -08:00
internal Add GetBuildScript API endpoint 2022-12-18 13:52:57 -08:00
manager Remove epoch from reported version if it is zero 2022-11-14 14:59:16 -08:00
scripts Add bash and zsh completions 2022-12-02 12:29:55 -08:00
vercmp Move version comparison to separate package 2022-11-30 11:46:51 -08:00
.gitignore Move generated api to internal, rename lure-api to lure-api-server 2022-12-18 13:41:52 -08:00
.goreleaser.yaml Remove 32-bit architectures until 32-bit support is added to Pebble 2022-12-04 15:44:18 -08:00
.woodpecker.yml Add woodpecker CI config 2022-11-18 08:18:02 +00:00
build.go Provide scriptdir during first interpreter pass 2022-12-03 12:08:58 -08:00
cli.go Do two parsing passes when building a package, and prompt user to view script after the first 2022-12-03 11:52:09 -08:00
config.go Begin moving repository operations into separate package 2022-11-30 11:45:13 -08:00
db.go Build and update database when repo pulled 2022-11-30 14:34:52 -08:00
fix.go Add info logs to fix command 2022-12-02 12:45:34 -08:00
go.mod Add twirp RPC backend API for lure-web 2022-12-17 21:01:50 -08:00
go.sum Add twirp RPC backend API for lure-web 2022-12-17 21:01:50 -08:00
helpers.go Do two parsing passes when building a package, and prompt user to view script after the first 2022-12-03 11:52:09 -08:00
info.go Fix closing brace in infoCmd() function 2022-12-01 07:16:54 +00:00
install.go Do two parsing passes when building a package, and prompt user to view script after the first 2022-12-03 11:52:09 -08:00
LICENSE Add GPLv3 License 2022-09-26 19:21:39 +00:00
list.go Add ability to list packages matching pattern 2022-12-02 13:15:07 -08:00
main.go Add fix command 2022-12-02 12:43:00 -08:00
Makefile Add a way to check the minimum version supported by a LURE repo 2022-11-22 12:51:45 -08:00
README.md Mention install script in README 2022-11-27 12:46:08 -08:00
repo.go Remove unused imports 2022-11-30 21:46:41 -08:00
upgrade.go Switch all LURE operations to use new DB 2022-11-30 19:10:17 -08:00

LURE (Linux User REpository)

Go Report Card status-badge lure-bin AUR package

LURE is intended to bring the AUR to all distros. It is currently in an alpha state and may not be stable. It can download a repository, build packages in it using a bash script similar to PKGBUILD, and then install them using your system package manager.

LURE is written in pure Go and has zero dependencies after it's built. The only things LURE needs are a command for privilege elevation such as sudo, doas, etc. as well as a supported package manager. Currently, LURE supports apt, pacman, apk, dnf, yum, and zypper. If a supported package manager exists on your system, it will be detected and used automatically.


Installation

Install script

The LURE install script will automatically download and install the appropriate LURE package on your system. To use it, simply run the following command:

curl https://www.arsenm.dev/lure.sh | bash

IMPORTANT: This method is not recommended as it executes whatever code is stored at that URL. In order to make sure nothing malicious is going to occur, download the script and inspect it before running.

Packages

Distro packages and binary archives are provided at the latest Gitea release: https://gitea.arsenm.dev/Arsen6331/lure/releases/latest

LURE is also available on the AUR as lure-bin

Building from source

To build LURE from source, you'll need Go 1.18 or newer. Once Go is installed, clone this repo and run:

sudo make install

Why?

The AUR is an amazing feature, and it's one of the main reasons I use Arch on all my daily driver devices. It is really simple while providing really useful functionality. I feel such a solution shouldn't be stuck in only a single distro, so I made LURE.

Like the AUR, it uses simple bash build scripts, but it doesn't depend on bash being installed at all. It uses an embedded, pure Go implementation of bash instead. Similarly, it uses Git to download the repos and sources, but doesn't depend on Git being installed.

This means it's really easy to deploy LURE on any distro that it has support for and on any CPU architecture. It also supports and automatically detects many package managers, so it's not limited to just pacman.


Documentation

The documentation for LURE is in the docs directory in this repo.


Repositories

Unlike the AUR, LURE supports using multiple repos. Also unlike the AUR, LURE's repos are a single git repo containing all the build scripts. Inside each LURE repo, there should be a separate directory for each package containing a lure.sh script, which is a PKGBUILD-like build script for LURE. The default repository is hosted on Github: https://github.com/Arsen6331/lure-repo.


Dependencies

As mentioned before, LURE has zero dependencies after it's built. All functionality that could be pure Go is pure Go. Thanks to the following packages for making this possible:


Planned Features

  • Automated docker-based testing tool
  • Web interface for repos