my thoughts on package management
Robert LeBlanc
rjl at renaissoft.com
Wed Jul 23 09:00:45 UTC 2003
At 00:24 2003/07/23, david paeme wrote:
>RedHat has made an excellent decision when using the RedHat-network
>stuff... the update checker, so no comments there.
>
>But on the other side, people that aren't used to Linux (in general)
>will have problems installing/adding software. The rpm system is nice,
>but If you can't find an rpm that's compiled for your exact system,
>you're in trouble. And let's not forget the infamous dependancy hell!
>
>
>So why not use apt-like system (I'll call it apt from now on)?
This is an improvement that I'd like to see, yes, essentially a "smarter"
package manager with an awareness of prerequisites, where to find them, and
how to install them. A next-generation RPM, effectively :)
On the other hand, I have a long-standing problem with RPMs and the
updating system. While it's quite useful for workstation installations
(where almost all packages are pre-compiled with suitable default options),
it's all but useless on server installations, where custom configurations
are common.
As a case in point, if I happen to use IBM DB2 as my database of choice (or
necessity) on a given server, I'll end up having to (re)build packages like
PHP from sources in order to configure --with-ibm-db2 or somesuch. The
RPM-based PHP distributions won't have been compiled with that option
(though they may have MySQL support compiled in), so there's no way around
building from sources in most cases. This not only defeats the purpose of
RPMs for these applications, it also makes it impossible to use the
automated updating features of the RH network, since that system relies on
a registry of installed binary RPMs. If I built PHP 4.3.2 from sources and
the up2date system saw that I had a previously-installed PHP 4.3.2 binary
RPM installation, it might well upgrade me to the PHP 4.3.3 binary RPM,
overwriting my custom build.
What I'd like to see in RPMs for server packages is something like dynamic
compilation based on some checkboxes or command-line flags that describe
the options to autoconf. Essentially a higher-level interface to
./configure, which could be used to build a custom installation of the
package, and store those settings (e.g. from config.status) so that later
the up2date process could use those to properly build future versions
without breaking the existing installation. If the configuration options
are not backward-compatible, have up2date simply download the updated
package and flag it for the administrator to deal with manually.
If none of this is feasible, then at least consider compiling as many
available options as possible into the binary distributions you package
into RPMs, so that custom recompilations (which break up2date) won't be
necessary in as many cases. Sure, this will result in larger, more bloated
binaries, but at least they'll have all the optional support features
built-in, so that there should be no need to rebuild the packages from
sources later, even if you switch from MySQL to DB2, or something
similar. Think of the way the installation kernel contains driver support
for almost everything, to ensure that almost all hardware will be able to
run the installation. If you're going to package binary distributions of
applications in an RPM, and you want that to be automatically update-able,
you'll have the most success when people are able to use that package
"as-is", without having to make custom builds for themselves.
Robert LeBlanc
More information about the devel
mailing list