[CFT] rewrite of the merge(1) utility
Slawa Olhovchenkov
slw at zxy.spb.ru
Fri Aug 14 20:26:19 UTC 2015
On Fri, Aug 14, 2015 at 12:59:30PM -0700, John Baldwin wrote:
> > > There are a few ways. Newer installs do bootstrap it for you, so if you
> > > follow the traditional source upgrade method you can just run 'etcupdate'
> > > in place of 'mergemaster'. If you do not want to have a /usr/src tree,
> > > how are you updating your world?
> >
> > yes, I don't want to have /usr/src tree.
> > I have buld host and run release.sh.
> > After done I use R/ftp/*.txz for extract on target host.
> > I see var/db/etcupdate/current in base.txz.
> > But I don't cleanly understund etcupdate:
> > - is this enough (var/db/etcupdate/current from base.txz)?
> > - what is best way to preserve var/db/etcupdate/current before
> > extract?
> > - do I need some work for record changes in /etc?
>
> In this model, I think etcupdate isn't really what you need/want.
> For one, if you extract base.txz it already overwrites your files
> in /etc and loses any local changes (including any files that
Of couse, I am dont extract from base.txz /etc and /var itself, only var/db/etcupdate.
> etcupdate would upgrade). It doesn't lose new files like /etc/fstab
> or /etc/rc.conf, but if you make changes to existing files (like
> /etc/ttys) then extracting base.txz will overwrite those with the
> stock versions. If you wanted to not overwrite /etc then you could
> use etcupdate to merge in the changes to /etc instead. However,
> you would need to do something like this:
>
> 1) Ignore /etc and /var/db/etcupdate/current when you extract
> base.txz via --exclude.
Actual command is:
tar xf - --exclude ./boot/device.hints ./COPYRIGHT boot dev media mnt proc tmp bin lib libexec rescue sbin usr
because tar don't allow include/exclude and var in base.txz also
contains var/log/sendmail.st, var/crash/minfree,
var/db/mergemaster.mtree, var/db/locate.database.
> 2) Extract just /var/db/etcupdate/current from base.txz to
> some other temporary location (/some/tmp/path).
>
> 3) Create a new tarball from that tree
> ( tar cfy foo.tbz -C /some/tmp/path/var/db/etcupdate/current . )
>
> 4) Use foo.tbz with etcupdate as the tarball (etcupdate -t foo.tbz)
Thanks, I try this.
> Alternatively, you could save on steps 2 + 3 by patching your release
> process to run 'etcupdate build' (you can see where the current release
> Makefile runs 'etcupdate extract' and use 'build' with the same options).
>
> --
> John Baldwin
More information about the freebsd-current
mailing list