overnight upgrade interrupted by questions
Chris Whitehouse
cwhiteh at onetel.com
Tue Apr 15 20:46:27 UTC 2008
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
More information about the freebsd-questions
mailing list