ports and portage: useful even as a reference

FreeBSD and Gentoo are two excellent collections of software to provide everything a computer and user need.

FreeBSD: ports

FreeBSD provides a small base system of the FreeBSD kernel, basic startup and user utilities, and optional X11. It then provides the `ports' system, a hierarchy under /usr/ports in which each directory contains files with a description of how to fetch, build and install a particular extra piece of software and its dependencies; such software is installed under /usr/local, signifying that it is not part of the FreeBSD base system that the FreeBSD developers mainly maintain themselves.

The ports system is described on http://www.freebsd.org/ports, under which an interesting browse can be had at the list of ports by category. A single list of ports' names and descriptions is very long, but is a handy way to find (almost) all available ports in a particular area, e.g. everything starting with `xml' or `pdf'.

As well as providing the descriptions for automatic compilation and installation, many FreeBSD servers also house a big collection of pre-compiled ports, that can be much more quickly installed, although at the possible cost of not having choice over optional components and compilation options. The ability to install loads of packages quickly is a big reason for my use of FreeBSD on old laptops. Then, everything I need can be had automatically in an hour or two, along with several hours for things I probably won't need but that look interesting!

Gentoo: `portage'

Gentoo provides a `meta-distribution': its `portage' tree then provides the descriptions of how to automatically fetch, compile and install everything from a kernel and startup scripts through to many user-level programs such as those in FreeBSD's ports. Thus, everything in portage is counted as part of `the system' (/usr/local/ is for the user's manual installations) and one is not even constrained to using just Linux kernels -- all levels of software are meant to be flexible. Under /usr/portage is a tree rather similar to FreeBSD's ports, and there are commands such as `emerge' to do dependency checking and installation. Many optional features of packages from portage can be enabled or disabled, and multiple versions can often be chosen between or installed together.

The portage tree can be browsed on http://packages.gentoo.org/categories/ , listing descriptions of available packages in portage.

The point?

Apart from encouraging people to look around a little and try out these systems (FreeBSD is probably the better bet (!) for a quick try-out on a spare disk, as the whole base system and many ports are pre-compiled), the above links to lists of pacakges may be useful to anyone who'd like to browse lots of specially selected bits of (usually) Free Software and perhaps will find some useful packages -- by following links to the package's original webpage one can then get it for other systems.

For example, on ports, look at things starting with `ps' under End-Users / Print. There are several postscript manipulation tools there that I might like to look further at. Then the perl modules, or archivers, or graphics things, etc. etc.

My examples

This FreeBSD package and description list from my FreeBSD laptop's installed packages (ignoring some libraries and modules), or this Gentoo package and description list from (one of) my desktop system(s), may introduce the reader to some new and handy program.

From my common Gentoo systems (desktops, other laptops, computation servers at work, ...) there is the script I run to install things initially sfw_inst_gentoo, and the gentoo_useflag_list which sets optional support in packages. With so much optional support and so many packages to install, there's commonly a problem with (it seems) some circularity of dependencies: I then set very few USE flags and do the base installation, all basic system stuff and X11, then try again with more USE. Many people fuss about gentoo taking a long time, but generally it needn't take much user time for all this compilation and recompilation: with a little experience and thought, it can spend ages in loops such as

 emerge -n LIST...PACKAGES  ;  
  until emerge --resume --skipfirst ; touch `date +%s`; done
just getting on with as much as it can do, before getting a bit more nursing after a few days of leaving it alone!

Really, in several years of comparing Gentoo and other distributions, it beats the lot for the ability to install almost anything, plus dependencies, in just a short command, with desired options and optimisations and available different versions. Apart from FreeBSD occasionally, particularly when I can't be bothered compiling a system on a slow computer, and RedHat EL on servers at work (where the auto-updates with no possible compilation troubles and with a promise of no changes to configuration files), it's Gentoo all the way, usually copying a ready-compiled system to each new computer from an existing one, and not bothering to do updates other than security ones (glsa-check) for several years.


Page started: 2008-12-11
Last change: 2008-12-16