====== 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 [[:lpm:20-lpk|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 [[:lpm:40-lpc|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.