erik quanstrom <quans...@quanstro.net> writes:

>> IIRC it's based on replica(1)  
>> which rather requires ideal circumstances for correct behaviour.
>
> partial installs are easy to recover from.  i just used it friday to sort
> out a file system that had a contrib package listed as installed, but it
> hadn't been.

It *would* be easy if contrib(1) properly indicated the install status
of a package.  As it is right now, contrib/install marks a package as
installed and THEN goes about installing it.  If anything fails, the
install will still be marked as having been successful.  A subsequent
contrib/install for the same package will snubly claim that the package
has already been installed and refuse to run.  You have to supply the
'-f' switch to make the install complete.  However, doing this requires
(1) knowing that the install broke, and (2) that all the packages
dependencies have been met (because -f also overrides dependency
checking).  contrib(1) doesn't provide any way to check if a package is
up to date, like replica/changes.  Having a contrib(1) wrapper for
replica/changes (say, 'contrib/changes') would be very handy.  (And
simple to write.)

As for prematurely marking packages as successfully installed...

This:

    cat > $cfg <<!
    ...
    exec /bin/contrib/pull $name

should probably be replaced with something like:

    cat > $cfg.part <<!
    ...
    /bin/contrib/pull $name
    if(~ -$status -) mv $cfg.part $cfg
    if not {
        echo install failed >[1=2]
        rm $cfg.part
        exit 'oh, crap'
    }

-- 
+---------------------------------------------------------------+
|E-Mail: smi...@zenzebra.mv.com             PGP key ID: BC549F8B|
|Fingerprint: 9329 DB4A 30F5 6EDA D2BA  3489 DAB7 555A BC54 9F8B|
+---------------------------------------------------------------+

Reply via email to