Add support for "freebsd-update -r newrelease upgrade" -- binary

upgrading to new releases.  Important parts of this code include
 * automatically determining which optional components (e.g., src,
info, proflibs) are installed.
 * merging changes in files which are modified locally and have
changed between the currently running and new release.
 * prompting the user to rebuild all 3rd party software before
deleting old shared libraries.

Yes, this is compatible with "freebsd-update rollback" -- you can
test a new -BETA and roll back to the old release if you don't
like it.

Subject to re@ approval, this will be MFCed before 7.0-BETA3 and
6.3-RC1.

MFC after:	2 days
This commit is contained in:
Colin Percival 2007-11-12 04:47:57 +00:00
parent 419f6676c3
commit db6b0a619f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=173564
4 changed files with 888 additions and 66 deletions

View File

@ -23,9 +23,13 @@ IgnorePaths
# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user.
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/
# When upgrading to a new FreeBSD release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/
### Default configuration options:
# Directory in which to store downloaded updates and temporary
@ -46,3 +50,9 @@ UpdateIfUnmodified /etc/ /var/
# FreeBSD Update retain this modified metadata when installing a new version
# of that file?
# KeepModifiedMetadata yes
# When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which FreeBSD Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents no

View File

@ -93,7 +93,15 @@ accumulate.
The parameters following this keyword are regular expressions;
updates to paths which start with a string matching one of
these regular expressions will be ignored if the files have
been modified locally.
been modified locally (unless they are merged -- see MergeChanges
below).
.Pp
This option can be specified multiple times, and the parameters
accumulate.
.It Cm MergeChanges
The parameters following this keyword are regular expressions;
updates to paths which start with a string matching one of
these regular expressions will be merged with local modifications.
.Pp
This option can be specified multiple times, and the parameters
accumulate.
@ -138,6 +146,24 @@ and specifies whether
.Cm freebsd-update
should keep existing file ownership, permissions, and flags
when installing updates if these have been modified locally.
.It Cm StrictComponents
The single parameter following this keyword must be
.Dq yes
or
.Dq no
and specifies whether
.Cm freebsd-update
should interpret the list of components of
.Fx
specified via the
.Cm Components
option strictly as a list of components installed which
should be upgraded when the
.Cm upgrade
command is used ("yes"), or merely as a list of components
which might be installed, of which
.Cm freebsd-update
should identify which in fact are present ("no").
.El
.Sh FILES
.Bl -tag -width "/etc/freebsd-update.conf"

View File

@ -1,5 +1,5 @@
.\"-
.\" Copyright 2006 Colin Percival
.\" Copyright 2006, 2007 Colin Percival
.\" All rights reserved
.\"
.\" Redistribution and use in source and binary forms, with or without
@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd August 30, 2006
.Dd November 11, 2007
.Dt FREEBSD-UPDATE 8
.Os FreeBSD
.Sh NAME
@ -37,6 +37,7 @@
.Op Fl d Ar workdir
.Op Fl f Ar conffile
.Op Fl k Ar KEY
.Op Fl r Ar newrelease
.Op Fl s Ar server
.Op Fl t Ar address
.Cm command ...
@ -84,6 +85,10 @@ Read configuration options from
Trust an RSA key with SHA256 of
.Ar KEY .
(default: read value from configuration file.)
.It Fl r Ar newrelease
Specify the new release to which
.Nm
should upgrade (upgrade command only).
.It Fl s Ar server
Fetch files from the specified server or server pool.
(default: read value from configuration file.)
@ -118,8 +123,13 @@ from
the random delay serves to minimize the probability that
a large number of machines will simultaneously attempt to
fetch updates.
.It Cm upgrade
Fetch files necessary for upgrading to a new release.
Before using this command, make sure that you read the
announcement and release notes for the new release in
case there are any special steps needed for upgrading.
.It Cm install
Install the most recently fetched updates.
Install the most recently fetched updates or upgrade.
.It Cm rollback
Uninstall the most recently installed updates.
.El

File diff suppressed because it is too large Load Diff