📦 🐳 0-dependency Container-based Package Manager
Go to file
dependabot[bot] e8b6b9eb01
⬆️ Bump golang.org/x/net from 0.25.0 to 0.36.0 (#373)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.25.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.25.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 01:02:35 +00:00
.github fix(ci): rename goreleaser flag 2024-08-01 11:46:12 +02:00
cmd Allow repo add to set authentication for private repository (#370) 2024-12-17 15:30:57 +01:00
contrib/config Finalizer envs (#242) 2021-08-11 11:18:16 +02:00
docs Add configuration section (#341) 2023-08-02 18:14:01 +02:00
pkg ci: do not run flaky tests 2024-08-01 09:15:39 +02:00
tests bump github.com/moby/buildkit to v0.13.0 (#351) 2024-03-15 09:26:32 +01:00
.gitignore unpack local image file with prefix file:// (#318) 2023-02-02 11:48:09 +00:00
.gitmodules 📓 Add docs alongside 2022-01-30 22:04:36 +01:00
.goreleaser.yml Don't hardcode the version (#353) 2024-03-21 09:25:47 +01:00
CONTRIBUTING.md 📒 Update CONTRIBUTING 2021-12-04 21:35:59 +01:00
Dockerfile Update Dockerfile 2024-06-24 15:28:29 +02:00
go.mod ⬆️ Bump golang.org/x/net from 0.25.0 to 0.36.0 (#373) 2025-03-13 01:02:35 +00:00
go.sum ⬆️ Bump golang.org/x/net from 0.25.0 to 0.36.0 (#373) 2025-03-13 01:02:35 +00:00
LICENSE Add copy of LICENSE 2019-11-04 11:01:41 +01:00
main.go Don't hardcode the version (#353) 2024-03-21 09:25:47 +01:00
Makefile Update Makefile to run ginkgo directly 2024-08-01 09:05:03 +02:00
README.md feat: update installation methods (#335) 2023-08-21 10:26:55 +02:00

luet - Container-based Package manager

Docker Repository on Quay Build and release on push GoDoc codecov

Luet is a multi-platform Package Manager based off from containers - it uses Docker (and others) to build packages. It has zero dependencies and it is well suitable for "from scratch" environments. It can also version entire rootfs and enables delivery of OTA-alike updates, making it a perfect fit for the Edge computing era and IoT embedded devices.

It offers a simple specfile format in YAML notation to define both packages and rootfs. As it is based on containers, it can be also used to build stages for Linux From Scratch installations and it can build and track updates for those systems.

It is written entirely in Golang and where used as package manager, it can run in from scratch environment, with zero dependencies.

asciicast

In a glance

Install

  • Using official installer script:

    $ curl https://luet.io/install.sh | sudo sh
    
  • Or using bin

    $ bin i github.com/mudler/luet
    

Test installation:

$ luet --help
$ luet search ...
$ luet install ..

Documentation

Documentation is available, or run luet --help, any subcommand is documented as well, try e.g.: luet build --help.

Dependency solving

Luet uses SAT and Reinforcement learning engine for dependency solving. It encodes the package requirements into a SAT problem, using gophersat to solve the dependency tree and give a concrete model as result.

SAT encoding

Each package and its constraints are encoded and built around OPIUM. Additionally, Luet treats also selectors seamlessly while building the model, adding ALO ( At least one ) and AMO ( At most one ) rules to guarantee coherence within the installed system.

Reinforcement learning

Luet also implements a small and portable qlearning agent that will try to solve conflict on your behalf when they arises while trying to validate your queries against the system model.

To leverage it, simply pass --solver-type qlearning to the subcommands that supports it ( you can check out by invoking --help ).

Authors

Luet is here thanks to our amazing contributors!.

Luet was originally created by Ettore Di Giacinto, mudler@sabayon.org, mudler@gentoo.org.

License

Luet is distributed under the terms of GPLv3, check out the LICENSE file.