Table of Contents
LPMtool is a package management tool. At this time, LPMtool has been been developed and tested on Linux. LPMtool could probably be ported to other platforms with a minimum of effort, but at this time no porting effort has been made. LPMtool is capable of handling all package management chores for an entire Linux system by itself; but it can also play second fiddle alongside the existing system package manager.
LPMtool is not just a basic package manager, that merely keeps track of installed software. LPMtool includes tools for setting up web-based package repositories and publishing packages. LPMtool publishes an efficient package repository on a web server. The package repository may contain different versions of the same software package built for different Linux distributions, and LPMtool will download the appropriate version, for the Linux distribution LPMtool is running on.
LPMtool aims to simply the task of distributing and installing software packages. Consider a complicated application that uses additional software components from third party sources. LPMtool eliminates the “dependency hell” of pouring through the software's documentation looking for third party components the software depends on, and figuring out if you already have them installed, and if not where they must be downloaded from.
LPMtool downloads the required software components, automatically, after displaying the third party software's URL and asking for permission to download the required software from it (of course, the third party components must also be built with LPMtool, in order for this to work).
LPMtool keeps a list of known repositories where software was installed from. A single command checks if newer versions of existing software packages are available, downloads them, and installs them.
Other LPMtool features:
A more flexible dependency model.
New versions of a package can use a different architecture (such as
updating an i686
package to an x86_64
package, or the other way around).
Also, it is not necessary to “bump” a package's release after
upgrading to a new version of the base Linux distribution.
LPMtool knows to update packages built for a different (previous) Linux
distribution even if the current distribution carries an older version
of the package.
No configuration files that require manual editing. All configuration settings are adjusted by command options.
LPMtool includes a lot of documentation. This documentation includes everything needed to use LPMtool, and to set up web-pased package repositories to publish LPMtool packages on the web. This documentation also briefly discusses many internal LPMtool objects and algorithms.
LPMtool includes a graphical front-end (requires Gnome and Python).
LPMtool is written in C++, and uses the libwww, libbzip2, zlib, and GDBM libraries. libbzip2 must be installed to build LPMtool.
LPMtool requires the development zlib and bzip2 libraries. On most system the development libraries are placed in a separate packages, usually called “zlib-devel” and “libbzip2-devel”. They must be installed in addition to the base packages.
At this time, libwww is bundled together with LPMtool's source code. This version of libwww bundled with LPMtool includes a few fixes, and an updated build toolchain.
LPMtool uses libwww to download packages.
This functionality is wrapped into an extra, optional shared library,
liblpwww.so
.
This library can be uninstalled, removing the dependency on all the
libwww baggage.
Without it LPMtool will still be able to do basic package
installations and removals.
LPMtool requires OpenSSL 0.9.7a, or later.
LPMtool's RPM compatibility scripts also require the RPM2 Perl module, which must itself be packaged and installed by RPM.
The optional Gnome graphical utility requires (besides the Gnome desktop) Python, PyGTK, and freedesktop.org's desktop-file-utils package.
At press time, LPMtool runs only on a Linux kernel-based platform, but it shouldn't be too hard to adapt LPMtool to port to other POSIX-compatible platforms. There are only a couple of Linux-specific features used by LPMtool:
The lchown(2) is a Linux-specific system call.
The format of /proc/mounts
is Linux-specific.