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


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: [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.


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: [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=).


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


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