====== lpm — Pakete bauen und benutzen ====== ''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 [[lyx_-_programmiersprache:tools:lpm|lpm-Referenz]] und im [[lyx_-_programmiersprache:tools:lpm:registry-protokoll|Registry-Protokoll]]. **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 [[lyx_-_programmiersprache:tools:lpm:compiler-integration|Compiler-Integration]]. → [[lyx_-_programmiersprache:tools:lpm|lpm-Referenz]] · [[lyx_-_programmiersprache:sprache:module-und-importe|Module & Importe]] ---- ===== 1. Paket anlegen ===== $ 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; } ---- ===== 2. Packen ===== $ lpm pack . lpm: mathhelfer@0.1.0 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. ---- ===== 3. Ohne Registry: in den Cache legen ===== 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: mathhelfer@0.1.0 entpackt nach /home/andreas/.lpm/cache/mathhelfer/0.1.0 $ lpm cache list Gecachte Pakete in /home/andreas/.lpm/cache: mathhelfer@0.1.0 net/http@0.3.0 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=''). ---- ===== 4. Im eigenen Projekt benutzen ===== 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". ---- ===== 5. Übersetzen ===== ''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''. ---- ===== Die Befehle im Überblick ===== ^ Befehl ^ Zweck ^ | ''lpm init [%%--%%name=…]'' | Paket anlegen (''lyx.toml'') | | ''lpm install [pkg[@ver]]'' | Abhängigkeiten auflösen, ''lyx.lock'' schreiben | | ''lpm remove '' | Abhängigkeit entfernen | | ''lpm update [pkg]'' | Index auffrischen, Pakete aktualisieren | | ''lpm search '' / ''lpm info '' | 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 [%%--%%entry]'' | Pfad im Cache (für Werkzeuge) | | ''lpm cache list %%|%% clean %%|%% add %%|%% remove'' | Cache verwalten | Global: ''--offline'' (nur Cache), ''--registry='', ''--verbose''. ---- ===== Gewohnheiten ===== * **''lyx.lock'' einchecken**, ''.lxpkg''-Dateien nicht. * **''--offline'' im Build** — ein Bau, der aus dem Netz nachlädt, ist nicht reproduzierbar. * **Version erhöhen statt überschreiben.** Ein veröffentlichtes Paket bleibt, wie es ist; Prüfsummen sind sonst wertlos. * **Paketname = Unitname.** Alles andere führt zu Importen, die niemand findet. ---- ===== Fallstricke ===== * **''Modul nicht gefunden'' trotz ''lpm install''** — der Compiler fragt ''lpm'' nicht; ''-I'' setzen (siehe oben). * **Dateiname im Paket** heißt ''main.lyx'', gesucht wird ''.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.