An attempt at improving cross-distribution software deployment: The Psys Library
dwashington at gmx.net
Wed Jun 23 04:46:39 PDT 2010
Cross-distribution software deployment on Linux remains to be a big
problem. Basically, an independent software provider (ISV) has two choices:
- Creating separate packages for every distribution (or, at least, every
package format). This provides a high level of integration with the
distribution, but is a relatively high investment for an ISV, which must
not understand only one, but multiple packaging systems. Also, this
approach doesn't help users of smaller distributions with
less-mainstream packaging systems, for which most probably no packages
will be built.
- Bypassing the package manager completely by deploying an executable
installer which essentially just copies files. This has the obvious
advantage of really working on any distribution, and also lowers the
level of investment required by the ISV remarkably (especially if the
software is deployed with a cross-platform installer framework, which
requires the ISV to develop only one solution for all supported
operating systems). But the equally obvious disadvantage is the complete
lack of integration; the package manager has no control over the
installation and cannot avoid conflicts with other packages, and users
cannot manage (e.g. uninstall) the software with their distribution's
software management tools.
As can be seen quickly, both solutions are far from optimal.
In 2006, the Free Standards Group (the organisation behind the LSB,
whose CTO was Debian founder Ian Murdock at that time) attempted to do
better. In an LSB face-to-face meeting in Berlin, attended by several
representatives of major distributions (including Red Hat, Novell,
Mandriva and Ubuntu) and ISVs, the topic was discussed. The approach
promoted by Murdock, and generally agreed upon by the attendants, was to
bridge the gap between executable installers and package managers with a
simple LSB-standardized programming interface - later codenamed the
"Berlin Packaging API". The idea was to enable installer programs to
tell the package manager when they install or uninstall software, giving
the package manager the opportunity to update its package database
accordingly . Unfortunately, this idea didn't seem to be followed by
any kind of standards process or implementation effort, and so the
project eventually died.
Today, I am pleased to announce a project to you which tries to reignite
the Berlin Packaging API effort with a concrete design and a
proof-of-concept implementation ready for testing: the "Psys Library".
From the README:
"The psys library provides a simple interface to the system package
managerof a Linux system. It allows installation programs to notify the
packagemanager of the installation, uninstallation and update of
third-partysoftware packages, and to request these packages to be added
to or removed from the system package database. The psys library
interface is generic and not tied to a specific package management
system or Linux distribution.
Note that the psys library is only useful for adding and removing
software which complies to the Linux Standard Base (LSB) specifications.
Most notably, it is assumed that the data files of a software package
are installed into /opt as demanded by the Filesystem Hierarchy Standard
(FHS), and that a package only depends on the interfaces and behavior
specified by the LSB; any additional dependencies must be contained
within the package itself.
The psys library interface is strongly influenced by the Berlin
Packaging API concept discussed at the 2006 LSB face-to-face meeting in
Berlin. The library interface is meant as a proposal for a future
version of the LSB standard."
More information, including the complete API documentation and a link to
the git repository with the source code, can be found on the project
Now, I am asking you for support. While the psys library in its current
form does, in fact, already offer basic integration into RPM- and
Debian-based distributions through "fallback backends" (see the project
wiki), the greatest level of integration can only be received if the
implementation is provided by distributions directly. The question is:
can you imagine adding support for a programming interface like this in
your distribution? If not, why? And if you do, what do you think of the
psys API in its current form? Where do you think it is lacking? Flawed?
I am thrilled to hear your replies, and hope we can all together make
something happen to improve the state of third-party software deployment
P.S.: You might remember an earlier (2008), somewhat over-engineered
attempt of mine to implement the Berlin Packaging API concept, the
"Burgdorf Packaging API"
spawned quite a lot of discussion at that time. Let me assure you,
though, that the psys library is much simpler (and also already more
advanced) in design and implementation than Burgdorf, and much lighter
in terms of dependencies (libc, essentially).
More information about the Distributions