Date: Tue, 15 Apr 2008 21:10:41 +0100 From: Chris Whitehouse <cwhiteh@onetel.com> Cc: User Questions <freebsd-questions@freebsd.org> Subject: Re: overnight upgrade interrupted by questions Message-ID: <48050BC1.1050305@onetel.com> In-Reply-To: <200804152002.20097.fbsd.questions@rachie.is-a-geek.net> References: <200804151245.03033.lists-fbsd@shadypond.com> <4804A46B.20307@otenet.gr> <919383240804150626xe343795l84d99cfaad68435@mail.gmail.com> <200804152002.20097.fbsd.questions@rachie.is-a-geek.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Mel wrote: > On Tuesday 15 April 2008 15:26:42 Edward Ruggeri wrote: >> A lot of people would reply that they'd like to configure the ports >> themselves before launching the installation, leading people to >> suggest scripts such as: >> >> #!/bin/sh >> plist=`pkg_version -ovl'<' |awk '{ print $1 }'` >> for porg in $plist ; do >> cd /usr/ports/${porg} && make config-recursive >> done > > Sorry to disappoint you, but that wont work for two reasons: > 1) make config-recursive is flawed by design, because it makes a dependency > list based on current settings and if you alter dependencies during your > recursive configuring, it will not update the list. > > 2) If you hit an interactive configure (not config, configure) target, then > you will still end up with a dialog. Prime example: print/ghostscript-gpl. > > If you wanted to script the first case, you'd do the following in every origin > that needs updating: > #!/bin/sh > > VISITED= > > config_port() { > local ldeps rdeps bdeps > ldeps=`make -V LIB_DEPENDS` > rdeps=`make -V RUN_DEPENDS` > bdeps=`make -V BUILD_DEPENDS` > > make config-conditional > for dep in ${ldeps} ${rdeps} ${bdeps}; do > dir=${dep##*:} > case ${VISITED} in > *" ${dir}"*) > ;; > *) > echo "---> $dir" > VISITED="${VISITED} ${dir}" > cd ${dir} > config_port > esac > done > } > > config_port > This process has always worked for me upgrading a fairly standard desktop machine: Get a list of status of installed ports portmanager -s > somelist Extract list of category/port needing updating, with vi, whatever Do something like [sorry not exact syntax as I don't have access to a freebsd machine]: foreach i (`cat portlist`) foreach? cd /usr/ports/$i && make config foreach? end I've never installed print/ghostscript-gpl so I don't know if my method would break with it, but I do have to obviously treat java/jdk15 specially. Chris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48050BC1.1050305>