Legendary Package Manager

lpm.v0.4

Menedżer pakietów dla Debiana napisany w Rust. Pełna niezależność od apt i dpkg. Multiarch. SAT solver. Blazing fast.

bash — michal@debian
$ sudo lpm update
● Updated 32, 0 failed.
Metadata cache created.

$ sudo lpm install vim
Loaded 69917 packages from 32 index files.
Dependencies resolved.
Install 3 Packages
Total download size: 4.2 M
Complete!

$ sudo lpm arch add i386 && sudo lpm install steam-installer
Architecture 'i386' added.
Dlaczego lpm

Designed to replace apt

🦀

Napisany w Rust

Brak garbage collectora, brak memory leaks. Szybkie parsowanie indeksów, asynchroniczne pobieranie pakietów.

🔗

Zero zależności

Nie wymaga apt, dpkg, libapt-pkg ani żadnych zewnętrznych narzędzi. Działa samodzielnie.

🧮

SAT Solver

Rozwiązywanie zależności oparte na SAT solverze (varisat). Fallback do algorytmu zachłannego gdy SAT zwróci UNSAT.

🏗️

Multiarch

Pełna obsługa wielu architektur (i386, arm64, ...). Własny odpowiednik dpkg --add-architecture. Wymagane przez Steam.

📦

Kompatybilność z .deb

Parsuje pliki .deb, uruchamia skrypty maintainera, aktualizuje /var/lib/dpkg/status. Narzędzia Debiana działają normalnie.

📋

Historia transakcji

Pełna historia operacji. Undo/redo, diff między transakcjami, eksport do JSON. Nigdy nie zgub się co zainstalowałeś.

🗃️

SQLite Database

Zainstalowane pakiety przechowywane w SQLite. Szybkie zapytania, atomiczne transakcje, brak korupcji danych.

Równoległe pobieranie

Do 8 równoległych połączeń HTTP. Automatyczny retry z backoffem. Cache pobranych plików .deb.

Instalacja i pierwsze kroki

Quick Start

01

Skonfiguruj repozytoria

Edytuj /etc/lpm/sources-list.toml i ustaw suite odpowiednie dla swojego systemu.

sudo nano /etc/lpm/sources-list.toml
Dla Debian 14 "Forky" ustaw suite = "forky". Plik jest tworzony automatycznie przy pierwszym uruchomieniu z domyślną konfiguracją dla stable.
02

Pobierz indeksy pakietów

Pobiera listy pakietów ze wszystkich skonfigurowanych repozytoriów i wszystkich włączonych architektur.

sudo lpm update
03

Zainstaluj pakiety

lpm automatycznie rozwiązuje zależności i pobiera wszystkie wymagane pakiety.

sudo lpm install vim curl htop
04

Aktualizuj system

Sprawdza dostępne aktualizacje i instaluje je wszystkie jednym poleceniem.

sudo lpm upgrade
Referencja

Wszystkie komendy

▸ zarządzanie pakietami
install <pakiet...>
Instaluje pakiety i wszystkie zależności. Obsługuje pkg:i386 dla multiarch.
-y, --yes
Nie pytaj o potwierdzenie. Przydatne w skryptach.
--no-install-recommends
Pomiń pakiety rekomendowane, instaluj tylko wymagane.
remove <pakiet...>
Usuwa pakiety. Pliki konfiguracyjne zostają zachowane.
--purge
Usuwa pakiet wraz z plikami konfiguracyjnymi w /etc/.
upgrade
Aktualizuje wszystkie zainstalowane pakiety do najnowszych wersji.
--security
Instaluj tylko aktualizacje z repozytoriów security.
--only <pkg>
Zaktualizuj tylko jeden konkretny pakiet.
autoremove
Usuwa pakiety zainstalowane automatycznie jako zależności, które nie są już potrzebne.
▸ repozytoria i cache
update
Pobiera indeksy pakietów z wszystkich repozytoriów dla wszystkich aktywnych architektur.
clean
Usuwa pobrane pliki .deb z /var/cache/lpm/archives/.
repo list
Wyświetla wszystkie skonfigurowane repozytoria z ich statusem.
repo add <uri> <suite> <comp...>
Dodaje nowe repozytorium do sources-list.toml.
repo remove <id>
Usuwa repozytorium o podanym numerze (z listy repo list).
repo enable / disable <id>
Włącza lub wyłącza repozytorium bez usuwania go z konfiguracji.
▸ multiarch nowe
arch list
Wyświetla natywną architekturę systemu i wszystkie włączone obce architektury.
arch add <arch>
Włącza obcą architekturę (np. i386). Odpowiednik dpkg --add-architecture. Wymaga lpm update po dodaniu.
arch remove <arch>
Wyłącza obcą architekturę. Nie usuwa już zainstalowanych pakietów.
▸ wyszukiwanie i informacje
search <zapytanie>
Wyszukuje pakiety po nazwie i opisie. Obsługuje --installed, --exact, --section.
info <pakiet>
Wyświetla szczegółowe informacje o pakiecie: wersja, rozmiar, zależności, opis.
list
Lista pakietów. Flagi: --installed, --upgrades, --available.
check-update
Sprawdza dostępne aktualizacje bez ich instalowania.
whatprovides <plik>
Znajduje pakiet zawierający podany plik (z indeksu repozytoriów).
provides <plik>
Znajduje zainstalowany pakiet zawierający podany plik.
▸ historia transakcji
history
Wyświetla ostatnie 50 transakcji (install/remove/upgrade) z datami.
history undo <id>
Cofa transakcję: odinstalowuje zainstalowane lub reinstaluje usunięte pakiety.
history redo <id>
Ponawia cofniętą transakcję.
history export <plik.json>
Eksportuje historię do pliku JSON.
import-dpkg
Importuje pakiety z /var/lib/dpkg/status do bazy lpm. Uruchom raz po migracji z apt.
Multiarch

Instalacja Steam i pakietów i386

lpm zarządza architekturami samodzielnie — nie potrzebuje dpkg --add-architecture ani apt. Wszystko dzieje się przez lpm arch add.
01

Włącz architekturę i386

Dodaje i386 do /etc/lpm/foreign-architectures. lpm będzie teraz pobierać indeksy i386 przy każdym update.

sudo lpm arch add i386
02

Pobierz indeksy dla i386

Automatycznie pobiera indeksy Packages dla architektury i386 ze wszystkich skonfigurowanych repozytoriów. Liczba pobranych indeksów podwoi się.

sudo lpm update
03

Zainstaluj Steam

lpm automatycznie znajdzie i zainstaluje steam-libs-i386 i wszystkie 32-bitowe biblioteki. Nie trzeba niczego robić ręcznie.

sudo lpm install steam-installer
04

Lub zainstaluj konkretny pakiet i386

Użyj notacji nazwa:arch aby zainstalować pakiet dla konkretnej architektury.

sudo lpm install libc6:i386 libstdc++6:i386
Steam wymaga ponadto poprawnego pliku /etc/os-release z ustawioną zmienną VERSION_ID. Jeśli brakuje tej zmiennej, dodaj ją ręcznie: echo 'VERSION_ID="14"' | sudo tee -a /etc/os-release
Konfiguracja

Pliki konfiguracyjne

Ścieżki systemowe

  • Repozytoria (TOML)/etc/lpm/sources-list.toml
  • Repozytoria (lista)/etc/lpm/sources.list
  • Dodatkowe repo/etc/lpm/sources.list.d/
  • Obce architektury/etc/lpm/foreign-architectures
  • Baza danych/var/lib/lpm/lpm.db
  • Indeksy pakietów/var/lib/lpm/lists/
  • Cache .deb/var/cache/lpm/archives/
  • Log sesji~/.cache/lpm/logs/lpm.log

Kompatybilność z dpkg

  • Status pakietów/var/lib/dpkg/status
  • Listy plików/var/lib/dpkg/info/*.list
  • Symliki altern./etc/alternatives/
  • ldconfigauto po instalacji .so
  • preinst/postinsturuchamiane automatycznie
  • GPG klucze/etc/apt/trusted.gpg.d/
sources-list.toml

Format repozytoriów

Plik /etc/lpm/sources-list.toml to główne źródło konfiguracji repozytoriów. Ma wyższy priorytet niż /etc/lpm/sources.list i jest zawsze parsowany jako pierwszy.

# /etc/lpm/sources-list.toml # Konfiguracja repozytoriów dla Debian 14 "Forky" [[repo]] name = "debian-forky-main" baseurl = "https://deb.debian.org/debian" suite = "forky" components = ["main", "contrib", "non-free", "non-free-firmware"] arch = ["amd64"] # i386 dodawany automatycznie po `lpm arch add i386` enabled = true [[repo]] name = "debian-forky-security" baseurl = "https://security.debian.org/debian-security" suite = "forky-security" components = ["main", "contrib", "non-free", "non-free-firmware"] arch = ["amd64"] enabled = true [[repo]] name = "debian-forky-updates" baseurl = "https://deb.debian.org/debian" suite = "forky-updates" components = ["main", "contrib", "non-free", "non-free-firmware"] arch = ["amd64"] enabled = true [[repo]] name = "debian-forky-backports" baseurl = "https://deb.debian.org/debian" suite = "forky-backports" components = ["main", "contrib", "non-free", "non-free-firmware"] arch = ["amd64"] enabled = false # wyłącz jeśli nie potrzebujesz backportów
💡 Po lpm arch add i386 lpm automatycznie dołącza i386 do każdego repozytorium przy pobieraniu indeksów. Nie musisz tworzyć osobnych wpisów [[repo]] dla architektury i386.