As y'all know, I'm a
relative latecomer to the world of Unix, but I do try to figure
out how y'all did it back when. So, sometimes, as in this case, I
can figure out how to do something, but I'm curious how it was
done back in the day, moreso than how I can get it done today. I'm
looking at the patching of my shiny new 2.11 BSD pl 431 system
running on my speedy little virtual PDP-11/70, so I grabbed patch
432 (here's a portion of the patch):
...
To install the update cut where indicated below and save to a
file
(/tmp/432) and then:
cd /tmp
sh 432
./432.sh
./432.rm
sh 432.shar
patch -p0 < 432.patch
Watch carefully for any rejected parts of the patch. Failure
of a
patch typically means the system was not current on all
preceeding
updates _or_ that local modifications have been made.
...
====== cut here
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# 432.rm
# 432.sh
# 432.shar
# 432.patch
...
# End of shell archive
This seems straightforward. Just follow the directions et voila
magic happens.
My questions for y'all are how would you go about doing this? Use
vi to delete everything through the ==== cut here line? Use some
combination of standard unix tools to chop it up? What was your
workflow for patching up the system using these files?
sed -e '1,/---cut here---/d' < $patch | sh -x
is what I use, but there's a wide variety of 'cut here' lines in the 2.11BSD patches, so I have had to taylor to each patch.
In my world, if I screw something up, it's 15 seconds to run a
restore script in my simh directory and I can try again, so my
level of concern for a mistake is pretty low. If I was doing this
in 1980, on real hardware, I would have had many concerns, as I'm
sure some of y'all can remember, how did you prepare and protect
yourselves so a patch was successful.
Yea, it was always a crap-shoot back in the day on slow hardware. Backups on tape were your best bet :(.
BTW, I thought .shar was an archive format, so when I saw the
patch was a shar file, I was worried it would be in some binary
form, lo and behold, it looks like text to me... not even b64. So
much to learn, so little time.
It is and it isn't. Mostly isn't for these patches. libarchive supports it, but there's no standard and what libarchive supports is quite limited.
Warner
Thanks,
Will
--
GPG Fingerprint: 68F4 B3BD 1730 555A 4462 7D45 3EAA 5B6D A982 BAAF