It seems that sysadmins must run in to this kind of problem all the time.
There must be a standard answer. Can anyone point me in the right
The question: can I reliably install a new version of some package (say,
perl) on a running production box? For example, I want to rebuild the perl
distribution with a new set of configuration parameters. There are two
problems that I see:
1) How to build *and test* a package that has it's installed path hard-coded
into the executable (e.g. perl) without perturbing users who are running the
old version of perl. I can only think of a few possibilities.
a) Build the new version to some other install dir. Test it there. When
confident that it works, rebuild it to the actual install dir. Install it
atomically so no one notices that it just changed (how to do this magic?).
b) Set some global switch (i.e. symlink) which causes all new users of
perl to start using a version installed in a different place. Eventually
(hopefully) no one will be using the old version of perl. Then,
build/test/install. Finally, switch users back. This is a really flakey
c) Build and test on some extra identical machine. When confident, copy
and install on the actual target machine.
d) Same as a), but boot everyone off for maintenance when it comes time
to install the new version.
2) How to *atomically* install *all* the files of a package on a running
system? I have no clue on this one other than some flakey idea related to