To gentoo or not to gentoo (subtitled package management)

torsten torsten at inetw.net
Sun Feb 9 16:46:57 PST 2003


Hello,

I'm looking for advice, suggestions, and recommendations.

I've done the LFS compilation about six times.  I started with LFS
when I moved off of Slackware, and that was because I
disagreed with Slackware's version jump to 7.0 philosophy.  I was
on a Slack 3 system then.

With the recent 4.0 LFS, I switched to using a package manager, epkg.
Previously, I was using --prefix=/usr/local/<package>, but this
method is flawed and eventually broke my system.  It was also very
tedious and time consuming.

With the new package manager, I packaged my entire system.  There
is not one "real" file sitting anywhere except /boot, /etc and the two
package subdirectories.  This has the side-effect that if a package
overwrites a file during install, it only overwrites the symlink.
epkg has simplified everything.

Installation before epkg:
cd /usr/local/bin
ln -s ../<package>/bin/* ./
cd ../include
ln -s ../<package>/include/* ./
cd ../lib
ln -s ../<package>lib/* ./
........ and so on - most of the time, I just did bin,include,
and lib.  It was very tedious.

Installatoin Now:  epkg <package>

However, epkg lacks any kind of install system for non-packaged
programs (source or binary).  So I still use my installation
scripts, itrace, itrace+lkm, DESTDIR, and occasionally manual
modification of Makefiles.

The only other system I know of that handles installs very
nicely, with dependencies, local compile-time options, and all, 
is gentoo's portage system. Everything I've been doing with lfs, 
gentoo has automated.  There are some things that bother me, 
and if you can, please address them.

1) portage is not stateless - it requires a constantly-updated database
2) non-portage dependencies (i.e. installed my own libs)
3) using portage with other distributions
4) doesn't use relinking - just installs into the filesystem

I want to find a way to automate package management that doesn't
require managing packages (i.e. no rpm, deb, etc).

Here's what I want:
1) stateless - no database (filesystem is database)
2) relinking - packages in their own subdirectories
3) optional prepackaging (src,bin,src+bin)
4) automated recompiling (use ld on system binaries)
5) file collection (files are automatically collected
and placed in a subtree, no need for DESTDIR or --prefix=/<package>
6) file collector handles static install programs
7) automatic dependency checking (ld for binaries, source
search for headers).
8) postpackaging (tar up installed packages for distribution
or later use
9) gpl
10) compile-time options

jam (a replacement for automake/autocong)
	satisfies 7 - automatically determines dependencies
	from source header names
checkinstall
	satisfies 1,3,8,9
	notably doesn't handle statically-linked install programs
install-log (written for lfs)
	gone, webpage is there, source is not
epkg
	satisfies 1,2,3,8
	not gpl
itrace
	satisfies 1,5,6,9
	kernel modules needs work, doesn't collect packages
relink
	satisfies 1,2, technically 3, 9

So, a lot of the tools are there, but they are not integrated
into a cohesive package management system.  This type of system
could also manage rpm and deb packages very easily (alien
could optionally do the conversion to tar.gz).  I'd mostly need
to write some glue code.  I don't know of a program that figures
out compile time options for you.

Ideally, I'd like to install any program, at any time, without
worrying about where programs go.  If you know of any program
that'll take care of my needs (or more of them), please let me
know - I don't really want to write a bunch of code if it's
already been written.

Have I gone mad?

Torsten


-- 
Unsubscribe: send email to listar at linuxfromscratch.org
and put 'unsubscribe lfs-chat' in the subject header of the message



More information about the lfs-chat mailing list