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

freebsd-questions@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to