Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Apr 2009 00:46:45 +0100
From:      Chris Whitehouse <cwhiteh@onetel.com>
To:        User Questions <freebsd-questions@freebsd.org>
Subject:   Re: new package system proposal
Message-ID:  <49DFDA65.1030409@onetel.com>
In-Reply-To: <49D76B02.4060201@onetel.com>
References:  <49D76B02.4060201@onetel.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Ok here's an improved description of how it works. The key to the whole
thing is the snapshot of the ports tree. Everything else follows from that.

Build process:
A predetermined set of packages is built from a ports tree. The most
benefit comes with packages which would acceptable for use with the default
config and require a lot of compile time (large distfiles and/or lots of
dependencies). This probably means xorg, window
managers, desktop environments and applications plus dependencies and
libraries. The ports tree is not updated during this process. The ports
tree and package tarballs are made available online as a ports-snapshot 
which is
tagged to identify it. The tag could be a text file with a date in it 
which lives in the snapshot directory.

This cycle is repeated at some suitable interval, by taking a new ports
tree and building packages for any ports that have been updated in the 
meantime. (The
actual build process could be done by one of the ports-mgmt tools which
would take care of only updating changed ports or ports whose 
dependencies had changed). The new packages and the ports tree used to 
create them are tagged as a new snapshot.

How to use:
For a fresh install a user installs FreeBSD then downloads the tagged ports
tree. S/he can then install packages from the ports-snapshot knowing
that everything is in sync versionwise. At this stage the selection of 
packages is down to the user (plus dependencies will automatically be 
pulled in). Additional ports that are not in the snapshot can be 
installed using the normal ports mechanism and they will automatically 
be in sync.

For an existing install, when a new ports-snapshot is available changed 
packages can be installed
using some utility (call it ports-update) which downloads and installs 
the ports tree and tag file from the snapshot, checks
versions of installed packages and upgrades accordingly. People can
choose to upgrade frequently or infrequently. By choosing a tag users 
can choose to upgrade to the most recent ports-snapshot or an 
intermediate one. At this stage the selection of packages to upgrade is 
by ports-update. ports-update compares the version of each installed 
package with the one in the ports-snapshot. If a newer version exists 
ports-update installs it. Any installed packages which are not in the 
ports-snapshot are ignored.

If a user wants to install or upgrade ports which are not in the 
ports-snapshot this can be done with the standard ports mechanism. As 
the bigger ports are already
available as packages in the ports-snapshot any additional ports will be 
relatively quicker to
install by building from source. If a port is being installed or 
upgraded and it has  a dependency which has been installed from the 
snapshot the dependency port will be the right version and the new port 
will integrate perfectly.

Thanks for reading this far

Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49DFDA65.1030409>