meta_package_manager.managers.lure module¶
- class meta_package_manager.managers.lure.Lure[source]¶
Bases:
PackageManagerLURE, the Linux User REpository: an AUR-shaped build system for any distro.
A package is a build recipe in a git repository LURE clones, and the resulting artifact is handed to the host’s own package manager, so LURE reaches packages no distro archive carries while leaving the installed state with
apt,dnf,pacmanor whichever backend the host runs.Important
LURE escalates itself and refuses to be escalated. It aborts as root with “Running LURE as root is forbidden as it may cause catastrophic damage to your system”, and calls its own configured
RootCmd(sudoby default) for the privileged half. mpm therefore marks nothing here privileged, the same treatment chromebrew gets.Caution
removeandupgradeare absent, and the reason is one field. LURE’s default backend options setNoConfirm: false, and only its build path flips it true, so an install reaches the backend asapt install -ywhile a removal reaches it as a bareapt removeand blocks forever on a confirmation prompt no mpm run can answer.--pm-argscan push a flag through, but the right flag is the backend’s own:-ysuits apt, dnf and zypper, while pacman reads-yas refresh the databases, so there is no value mpm could pass without knowing a backend it cannot resolve.Note
Every subcommand pulls its repositories before doing anything else, so even a listing costs a network round-trip and prints the git progress on
<stderr>. Only the packages themselves reach<stdout>.Documentation: LURE readme.
Initialize
cli_errorslist.- maintenance_note: str | None = 'LURE\'s own forge at `git.elara.ws` answers `502` and `lure.sh` answers `404` behind a placeholder certificate, so its installer and release binaries are both unreachable and the tool has to be built from source. Its author announced a pause rather than an end in [lure-sh/lure#89](https://github.com/lure-sh/lure/issues/89) on 2025-05-04, *"I intend to start working on it again as soon as I\'m in a stable position again"*, and the recipe repository this manager reads is on GitHub and still moving.'¶
A watch note about a still-maintained upstream whose activity is slowing or whose status is ambiguous, as a MyST markdown block.
Unlike
unmaintained, this is purely informational: the manager stays in the default selection and in the test matrices. It renders as a{note}admonition atop the manager’s documentation page, flagging upstreams worth keeping an eye on (a slow release cadence, superseded-but-still-shipped tools, a discontinued platform still under vendor support). May embed markdown links. Mutually exclusive withunmaintained: a confirmed-dead manager carries anunmaintained_messageinstead. Enforced bytest_maintenance_note.
- homepage_url: str | None = 'https://github.com/lure-sh/lure'¶
Home page of the project, only used in documentation for reference.
- platforms: frozenset[Platform] | Group | Platform | Iterable[Platform | Group] = frozenset({Platform(id='almalinux', name='AlmaLinux'), Platform(id='alpine', name='Alpine Linux'), Platform(id='altlinux', name='ALT Linux'), Platform(id='amzn', name='Amazon Linux'), Platform(id='android', name='Android'), Platform(id='arch', name='Arch Linux'), Platform(id='buildroot', name='Buildroot'), Platform(id='cachyos', name='CachyOS'), Platform(id='centos', name='CentOS'), Platform(id='chromeos', name='ChromeOS'), Platform(id='clearlinux', name='Clear Linux OS'), Platform(id='cloudlinux', name='CloudLinux OS'), Platform(id='crux', name='CRUX'), Platform(id='debian', name='Debian'), Platform(id='endeavouros', name='EndeavourOS'), Platform(id='exherbo', name='Exherbo Linux'), Platform(id='fedora', name='Fedora'), Platform(id='generic_linux', name='Generic Linux'), Platform(id='gentoo', name='Gentoo Linux'), Platform(id='guix', name='Guix System'), Platform(id='ibm_powerkvm', name='IBM PowerKVM'), Platform(id='kali', name='Kali Linux'), Platform(id='kvmibm', name='KVM for IBM z Systems'), Platform(id='linuxmint', name='Linux Mint'), Platform(id='mageia', name='Mageia'), Platform(id='mandriva', name='Mandriva Linux'), Platform(id='manjaro', name='Manjaro Linux'), Platform(id='nixos', name='NixOS'), Platform(id='nobara', name='Nobara'), Platform(id='nutyx', name='NuTyX'), Platform(id='opensuse', name='openSUSE'), Platform(id='openwrt', name='OpenWrt'), Platform(id='oracle', name='Oracle Linux'), Platform(id='parallels', name='Parallels'), Platform(id='pidora', name='Pidora'), Platform(id='pikaos', name='PikaOS'), Platform(id='raspbian', name='Raspbian'), Platform(id='rhel', name='RedHat Enterprise Linux'), Platform(id='rocky', name='Rocky Linux'), Platform(id='scientific', name='Scientific Linux'), Platform(id='slackware', name='Slackware'), Platform(id='sles', name='SUSE Linux Enterprise Server'), Platform(id='slitaz', name='SliTaz GNU/Linux'), Platform(id='solus', name='Solus'), Platform(id='sourcemage', name='Source Mage GNU/Linux'), Platform(id='tuxedo', name='Tuxedo OS'), Platform(id='ubuntu', name='Ubuntu'), Platform(id='ultramarine', name='Ultramarine'), Platform(id='void', name='Void Linux'), Platform(id='wsl1', name='Windows Subsystem for Linux v1'), Platform(id='wsl2', name='Windows Subsystem for Linux v2'), Platform(id='xenserver', name='XenServer')})¶
List of platforms supported by the manager.
Allows for a mishmash of platforms and groups of platforms. Will be normalized into a
frozensetofPlatforminstances at instantiation.
- requirement: str | None = '>=0.1.3'¶
The newest release, and the one this parser was checked against:
list.goalready carries theinstalledflag there.The build driven here is that tag plus a single commit touching the install script, LURE having tagged nothing since.
- cli_names: tuple[str, ...] = ('lure',)¶
List of CLI names the package manager is known as.
This list of recognized CLI names is ordered by priority. That way we can influence the search of the right binary.
- ..hint::
This was helpful in the case of the Python transition from 2.x to 3.x, where multiple versions of the same executable were named
pythonorpython3.
By default, this property’s value is derived from the manager’s ID (see the
MetaPackageManager.__init__method above).
- version_cli_options: tuple[str, ...] = ('version',)¶
lure --versionis rejected asflag provided but not defined, the version living behind a subcommand instead.
- property version: TokenizedString | None[source]¶
Parse the version off
<stderr>, where LURE alone prints it.lure versionreaches Go’s builtinprintln, which writes to<stderr>and leaves<stdout>empty, so the inherited probe (reading the return value ofrun_cli()) would find nothing and leave the manager permanently unavailable.Both streams are searched, not
<stderr>alone: a version that moved to<stdout>should not take the manager offline.
- id: str = 'lure'¶
Package manager’s ID.
Derived by defaults from the lower-cased class name in which underscores
_are replaced by dashes-.This ID must be unique among all package manager definitions and lower-case, as they’re used as feature flags for the mpm CLI.
- property installed: Iterator[Package]¶
Fetch installed packages.
The version is the built artifact’s, carrying the recipe’s release number, where
search()reports the recipe’s own.$ lure list --installed default/neofetch 7.1.0-1
- virtual: bool = False¶
Should we expose the package manager to the user?
Virtual package manager are just skeleton classes used to factorize code among managers of the same family.
- search(query, extended, exact)[source]¶
Fetch matching packages.
LURE has no search verb:
listprints the whole catalog of every repository it tracks, and mpm’s own refiltering narrows it.Caution
Search does not support extended or exact matching, and the query never reaches LURE.
$ lure list default/admc 0.13.0-alt1 default/admc-git 3592.023670c default/binutils-z80 2.43 default/cava 0.9.1 default/cava-git 0 default/deduplicator 0.1.6