non-destructive ports/packages update

Peter Pentchev roam at ringlet.net
Sun Apr 21 11:38:12 UTC 2013


On Sat, Apr 20, 2013 at 06:03:17PM -0700, Perry Hutchison wrote:
> Xin Li <delphij at delphij.net> wrote:
> 
> > On 4/19/13 11:34 PM, Perry Hutchison wrote:
> > > I'm looking for a way to move everything connected with ports and 
> > > packages aside, so that I can start fresh but with the ability to 
> > > easily roll it back when things go badly (as they surely will).
> > > 
> > > I have in mind to something like this:
> > > 
> > > # cd /usr
> > > # mkdir old
> > > # mv ports local old
> > > # mkdir ports local
> > > # cd /var/db
> > > # mkdir old
> > > # mv ports pkg old
> > > # mkdir ports pkg
> > > 
> > > Is there anything else that needs to be saved before fetching a
> > > new ports tree and starting to build things (or install prebuilt 
> > > packages)?
> >
> > If you use ZFS, it's possible to take snapshot, then install new
> > ports, then if something blows up, you can rollback.
> >
> > With UFS, it's still possible to take snapshot but rollback is not
> > atomic.
> 
> I'm aware of filesystem snapshots, but I only want to checkpoint the
> ports and packages, not the whole filesystem -- a rollback needs to
> be fast, easy, and obviously correct; preserve the failure logs; and
> not undo changes that may have been made elsewhere in the meantime.
> (BTW I don't use ZFS:  the machine doesn't have enough memory, and to
> me ZFS -- especially on 8.x -- doesn't yet seem sufficiently proven.)
> 
> > If you use portmaster, it can save packages (I think portupgrade
> > can do it too).  But this approach depends on the fact that the
> > port is well written, and is not atomic in terms of package set.
> 
> And then a rollback requires re-installing the saved packages, which
> is surely slower than moving a few directories and/or files around.
> 
> The question is, what (if anything) else -- besides /usr/ports,
> /usr/local, /var/db/ports, and /var/db/pkg -- needs to be checkpointed?

Some ports might store "run state" in /var/db/<portname> or a similarly
named directory.  The thing is, the decision whether to save this and
restore it or to keep it across runs actually depends on the port: for
database management systems such as MySQL, PostgreSQL, etc, you'll
probably want to keep the databases even if the ports themselves are
reinstalled, rolled back, restored, whatever.  For some other systems,
you might want to remove the "current state" information of the version
that you are about to replace.

G'luck,
Peter

-- 
Peter Pentchev	roam at ringlet.net roam at FreeBSD.org p.penchev at storpool.com
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13
Thit sentence is not self-referential because "thit" is not a word.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20130421/5ccaf6c2/attachment.sig>


More information about the freebsd-ports mailing list