Laconian Package Manager
lpm is a package manager that handles the controlled installation, update and removal of software packages.
It was written from scratch in C for use in LGL, but is in principle not tied to a specific distribution. It could also be used in any other Linux distribution or Unix-like operating system.
Like other well-known package managers such as dpkg or rpm, lpm ensures consistency by maintaining a local package repository containing information about every installed package:
- name, version, architecture and description of the installed package
- any dependencies of the package (other packages needed by it)
- a list of all files installled by the package and their sha-1 checksums
- some other less critical information such as installation date
lpm's native package format is called lpk. An lpk package basically consists of:
- a package description, containing the name, version, architecture and all dependencies
- a compressed archive of files to be installed by the package
- optional shell scripts to be run before or after an installation, an upgrade or a removal
In order to find and retrieve packages for installation or upgrades, lpm relies on configurable and pluggable package catalogues, called lpc. Towards lpm, an lpc is implemented as a shared library plugin that implements the following functions:
- providing lpm with a detailed list of all available packages
- providing lpm with a function to retrieve any of the packages in the list
Each entry in the package list therefore contains all the already mentioned package information, as well as:
- a path to retrieve the actual package
- information about the package's size and checksum, in order to verify and cache retrieved packages.
