From owner-freebsd-current@FreeBSD.ORG Mon May 11 04:50:04 2009 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B63BF106566B for ; Mon, 11 May 2009 04:50:04 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from mail2.fluidhosting.com (mx24.fluidhosting.com [204.14.89.7]) by mx1.freebsd.org (Postfix) with ESMTP id 681AC8FC19 for ; Mon, 11 May 2009 04:50:04 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: (qmail 6887 invoked by uid 399); 11 May 2009 04:50:02 -0000 Received: from localhost (HELO ?192.168.0.103?) (dougb@dougbarton.us@127.0.0.1) by localhost with ESMTPAM; 11 May 2009 04:50:02 -0000 X-Originating-IP: 127.0.0.1 X-Sender: dougb@dougbarton.us Message-ID: <4A07AE77.2080006@FreeBSD.org> Date: Sun, 10 May 2009 21:49:59 -0700 From: Doug Barton Organization: http://www.FreeBSD.org/ User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Jeremie Le Hen References: <20090510111110.GA88857@obiwan.tataz.chchile.org> In-Reply-To: <20090510111110.GA88857@obiwan.tataz.chchile.org> X-Enigmail-Version: 0.95.7 OpenPGP: id=D5B2F0FB Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-current@FreeBSD.org Subject: Re: Bug in mergemaster(8) when used in service jails (scheme described in chapter 15.6.1 of the handbook) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 May 2009 04:50:05 -0000 Very interesting, thanks. I will have to educate myself a little bit more about this issue. Doug Jeremie Le Hen wrote: > Hi Doug, > > In the chapter 15.6.1 of the handbook, "Service jails", the last part > explains how to upgrade jails. The last step is to run mergmaster(8) in > each jail. > > The problem is that in service jails /etc is a symlink to /s/etc, /s > being the readable/writable filesystem. mtree(8) stumbles on /etc being a > symlink instead of a directory and doesn't proceed futher down into /etc to > check files. Consequently, ${CHANGED} is empty and all customized > configuration are overwritten with their default version. > > I've fixed mergemaster(8) with the following patch: > > % Index: mergemaster.sh > % =================================================================== > % RCS file: /mnt/space/cvsroot/src/usr.sbin/mergemaster/mergemaster.sh,v > % retrieving revision 1.69 > % diff -u -r1.69 mergemaster.sh > % --- mergemaster.sh 23 Mar 2009 14:42:41 -0000 1.69 > % +++ mergemaster.sh 10 May 2009 11:05:32 -0000 > % @@ -461,7 +461,7 @@ > % # > % CHANGED= > % if [ -n "${AUTO_UPGRADE}" -a -f "${DESTDIR}${MTREEFILE}" ]; then > % - for file in `mtree -eq -f ${DESTDIR}${MTREEFILE} -p ${DESTDIR}/ \ > % + for file in `mtree -eqL -f ${DESTDIR}${MTREEFILE} -p ${DESTDIR}/ \ > % 2>/dev/null | awk '($2 == "changed") {print $1}'`; do > % if [ -f "${DESTDIR}/$file" ]; then > % CHANGED="${CHANGED} ${DESTDIR}/$file" > > Regards,