Re: Packaging of base system

From: Brian Candler <B.Candler_at_pobox.com>
Date: Tue, 10 May 2005 16:18:21 +0100
On Tue, May 10, 2005 at 07:34:16AM -0700, Bruce A. Mah wrote:
> Honestly I'm not sure if I like this idea or not.  My most recent
> experience with a fully packaged system is with RH/FC Linux
> distributions and many times I feel like I'm in a twisty little maze of
> RPMs, all different.

... and with dependency nightmares, indeed.

> You seem to be proposing a more coarse-grained
> packaging, which I think is more workable.

Yep. I think we can start with the current 'distribution sets' as a
baseline, although personally I would like to see split out:

- all compilers, debuggers, development tools into one dist set
- text processing tools into another

as both are not needed for a "run time" server environment. You need to be
careful how far you go down that road; e.g. things like cvs, rcs, diff,
patch can be used for system administration as well as development, so I
think they should remain in the base. "strip" and "ldd" are borderline cases
which probably should remain in the base too.

Then arguably, separate packages for:

- sendmail (no need to install it if you are using a different MTA)
- bind (because it's big and not needed on most nodes)
- /boot (to allow easier building of arrays of machines with custom
  kernels, and because pxeboot systems may not need it on their root FS)

Any finer granularity introduces dependency problems: for example, although
it might sound convenient to have ssh packaged separately to make it easier
to upgrade, it probably isn't by the time you've considered
interdependencies on libcrypto/libssl and everything else that in turn
depends on those libraries. So I'd leave fixing that to the 'binary update'
project, and to -RELEASE upgrades.

To get an idea of the sizes involved, I wrote a program using libarchive
which splits the existing FreeBSD base.?? distribution into smaller tarfiles
using a control file indicating which output bin each source file goes into:
the results are

-rw-r--r--  1 brian  brian  12259050 May  9 11:49 splitbsd-5.4-base.tar.gz
-rw-r--r--  1 brian  brian   3739936 May  9 11:49 splitbsd-5.4-bind.tar.gz
-rw-r--r--  1 brian  brian   7895611 May  9 11:49 splitbsd-5.4-boot.tar.gz
-rw-r--r--  1 brian  brian  17848825 May  9 11:49 splitbsd-5.4-devel.tar.gz
-rw-r--r--  1 brian  brian   2085982 May  9 11:49 splitbsd-5.4-doc.tar.gz
-rw-r--r--  1 brian  brian    287388 May  9 11:49 splitbsd-5.4-legacy.tar.gz
-rw-r--r--  1 brian  brian    810702 May  9 11:49 splitbsd-5.4-netif.tar.gz
-rw-r--r--  1 brian  brian    371588 May  9 11:49 splitbsd-5.4-nisker.tar.gz
-rw-r--r--  1 brian  brian    663606 May  9 11:49 splitbsd-5.4-sendmail.tar.gz
-rw-r--r--  1 brian  brian   1164703 May  9 11:49 splitbsd-5.4-text.tar.gz

# base          = core components for a functioning system inc. shell scripting
# boot          = kernel, modules, everything under /boot
# devel         = development libraries, compilers, source code debuggers,
#                 and anything which generates C code as its output
# text          = document processing tools, man page tools
# doc           = documentation and examples
# netif         = unusual network interfaces (atm, netware, bluetooth, isdn,
#                 slip)
# legacy        = Insecure services, e.g. finger(d), rexec(d), rlogin(d),
#                 telnetd; desk toys (e.g. cal); BSD legacy (e.g. enigma)
# sendmail      = sendmail
# bind          = bind
# nisker        = NIS and kerberos

It's interesting that compilers, examples/openssl manpages and bind between
them account for half the base system (23200K out of 46272K compressed).
Just being able to leave these out would be useful for the sorts of system
that nanobsd targets.

Regards,

Brian.
Received on Tue May 10 2005 - 13:18:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:34 UTC