erik quanstrom <[email protected]> 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: [email protected] PGP key ID: BC549F8B|
|Fingerprint: 9329 DB4A 30F5 6EDA D2BA 3489 DAB7 555A BC54 9F8B|
+---------------------------------------------------------------+