lpm ist der Paketmanager für Lyx: Pakete anlegen, packen, veröffentlichen, auflösen und in den Cache holen. Diese Seite zeigt den Ablauf von Anfang bis Ende; die Einzelheiten stehen in der lpm-Referenz und im Registry-Protokoll.
<WRAP alert>
Der Compiler ruft lpm noch nicht selbst auf. Ein import mathhelfer findet das Paket nicht von allein; der Pfad muss über -I angegeben werden. Alles Übrige — anlegen, packen, auflösen, cachen — arbeitet. Stand: lpm 0.1.1, lyxc 1.1.3I; Einzelheiten unter Compiler-Integration.
</WRAP>
→ lpm-Referenz · Module & Importe
$ lpm init --name=mathhelfer
lpm: Paket 'mathhelfer' initialisiert.
lpm: lyx.toml wurde erstellt.
[package]
name = "mathhelfer"
version = "0.1.0"
author = ""
license = "MIT"
description = ""
[build]
entry = "main.lyx"
Die Unit dazu — ihr Name ist der Paketname:
unit mathhelfer;
pub fn Ggt(a: int64, b: int64): int64 {
var x: int64 := a;
var y: int64 := b;
while (y != 0) {
var t: int64 := y;
y := x - (x / y) * y;
x := t;
}
return x;
}
$ lpm pack .
lpm: [email protected] gepackt:
./mathhelfer-0.1.0.lxpkg
sha256 97193fb1a2ee1fcec8121a9e776b669d9ae4767a0adcfca3e5c80505922b4256
539 Bytes
Das .lxpkg ist das Verteilformat; die Prüfsumme steht in der Ausgabe und wird beim Auflösen geprüft.
Für ein Firmenpaket oder zum Ausprobieren genügt der lokale Cache:
$ lpm cache add mathhelfer-0.1.0.lxpkg mathhelfer 0.1.0
lpm: [email protected] entpackt nach /home/andreas/.lpm/cache/mathhelfer/0.1.0
$ lpm cache list
Gecachte Pakete in /home/andreas/.lpm/cache:
[email protected]
net/[email protected]
Mit Registry wäre der Weg lpm login –token=… und lpm publish .; lpm search und lpm info fragen die Registry ab (Vorgabe: https://lpm.seolizer.de, abweichend über –registry=).
In lyx.toml des nutzenden Projekts:
[dependencies]
mathhelfer = "0.1.0"
$ lpm install --offline
lpm: 1 Paket(e) aufgeloest, lyx.lock geschrieben.
lyx.lock hält fest, was tatsächlich verwendet wird — Name, Version, Prüfsumme, Fundort:
# Automatisch generiert — nicht manuell bearbeiten
[[package]]
name = "mathhelfer"
version = "0.1.0"
source = "/home/andreas/.lpm/cache/mathhelfer/0.1.0"
Die Datei gehört in die Versionsverwaltung: Sie ist der Unterschied zwischen „baut bei mir„ und „baut überall gleich“.
lpm resolve nennt den Pfad — ohne –entry das Verzeichnis, mit –entry die Unit-Datei:
$ lpm resolve mathhelfer
/home/andreas/.lpm/cache/mathhelfer/0.1.0
$ lpm resolve mathhelfer --entry
/home/andreas/.lpm/cache/mathhelfer/0.1.0/main.lyx
Weil lyxc zu import mathhelfer eine Datei mathhelfer.lyx sucht, die Paketdatei aber main.lyx heißt, führt heute dieser Weg zum Ziel:
mkdir -p deps
cp "$(lpm resolve mathhelfer --entry)" deps/mathhelfer.lyx
lyxc main.lyx -I deps -o nutzer
// main.lyx des nutzenden Projekts
import std.io;
import mathhelfer;
fn main(): int64 {
PrintLn(IntToStr(Ggt(48, 18))); // 6
return 0;
}
6
Nachgemessen mit lpm 0.1.1 und lyxc 1.1.3I.
| Befehl | Zweck |
|---|---|
lpm init [--name=…] | Paket anlegen (lyx.toml) |
lpm install [pkg[@ver]] | Abhängigkeiten auflösen, lyx.lock schreiben |
lpm remove <pkg> | Abhängigkeit entfernen |
lpm update [pkg] | Index auffrischen, Pakete aktualisieren |
lpm search <query> / lpm info <pkg> | Registry durchsuchen / Details |
lpm list | Was lyx.lock festhält |
lpm pack [dir] / lpm publish [dir] | Packen / packen und hochladen |
lpm login --token=… / lpm logout | Registry-Zugang |
lpm resolve <pkg> [--entry] | Pfad im Cache (für Werkzeuge) |
lpm cache list | clean | add | remove | Cache verwalten |
Global: –offline (nur Cache), –registry=<url>, –verbose.
lyx.lock einchecken, .lxpkg-Dateien nicht.–offline im Build — ein Bau, der aus dem Netz nachlädt, ist nicht reproduzierbar.Modul nicht gefunden trotz lpm install — der Compiler fragt lpm nicht; -I setzen (siehe oben).main.lyx, gesucht wird <unit>.lyx.sha256 leer in lyx.lock bei lokal eingespielten Paketen — aus der Registry geladene tragen die Prüfsumme.
Letzte Aktualisierung: 2026-08-19 — vollständiger Ablauf mit lpm 0.1.1 und lyxc 1.1.3I durchgespielt und alle Ausgaben übernommen.