Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Apr 2013 18:03:17 -0700
From:      perryh@pluto.rain.com (Perry Hutchison)
To:        d@delphij.net
Cc:        freebsd-ports@freebsd.org
Subject:   Re: non-destructive ports/packages update
Message-ID:  <51733ad5.jgrImeJZdbQoq4dt%perryh@pluto.rain.com>
In-Reply-To: <51723A51.20401@delphij.net>
References:  <517236fe.7AoqFIleDJvljza6%perryh@pluto.rain.com> <51723A51.20401@delphij.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Xin Li <delphij@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?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51733ad5.jgrImeJZdbQoq4dt%perryh>