luet

command module
v0.29.6-geaaru Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2022 License: GPL-3.0 Imports: 1 Imported by: 0

README

luet-geaaru (fork) - Container-based Package manager

codecov Github All Releases

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.

Major differences between upstream release

  • subsets feature: Permit to define subsets to choice what files extract from original package. This means that we could avoid splitting of a package, for example for Portage metadata, Include files, etc. and customize the subsets defined in the original package definition with custom options that could be configured from an user at runtime.

  • solverv2 implementation: i begin the rewriting of all solver code and for now i only rewrite some internal code to speedup solver logic. It's yet too slow for a stable condition but i hope to rewrite completly all this part.

  • annotations: the annotations are managed as interface{} struct without define only strings

  • luet q files: following the command equo q files from Sabayon entropy tool, this command supply the list of the files of a package and in the near future the mapping of the files with the subsets configured.

  • luet q belongs: following the command equo q belongs from Sabayon entropy tool, this command supply the list of the packages that own files in input.

  • dockerv2 backend: i begin to rewrite the docker backend and using the tar-formers to manage the tar streams.

  • drop extensions and plugin support not used

In a glance

Install

To install luet, you can grab a release on the Release page or to install it in your system:

$> curl https://raw.githubusercontent.com/geaaru/luet/geaaru/contrib/config/get_luet_root.sh | sh
$> luet search ...
$> luet install ..
$> luet --help

Build from source

$ git clone https://github.com/geaaru/luet.git -b geaaru
$ cd luet
$ make build

Documentation

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

I hope to prepare an aligned documentation to the geaaru fork soon.

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 ).

License

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
box
database
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
miner
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
cmd
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
cmd/tree
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
pkg
box
tree
It reads a Tree and spit it in human readable form (YAML), called recipe, It also loads a tree (recipe) from a YAML (to a db, e.g.
It reads a Tree and spit it in human readable form (YAML), called recipe, It also loads a tree (recipe) from a YAML (to a db, e.g.
v2/compiler/types/artifact
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
v2/installer
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
v2/repository
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
v2/repository/client
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
Copyright © 2022 Macaroni OS Linux See AUTHORS and LICENSE for the license details and contributors.
tests

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL