Does GNU emacs ever use shared libraries?

John Robinson jn at bbn.com
Fri Jul 7 05:01:08 AEST 1989


In article <PINKAS.89May16141851 at hobbit.intel.com>, pinkas at hobbit (Israel Pinkas ~) writes:
>Our configuration is a "dataless workstation model".  Swap space (anywhere
>from 16M to 100M) is local.  The kernel, and most of the "basic" binaries
>distributed are local.  User directories, /usr/local, etc. are NFS mounted.
>We run primarily on Suns and uVaxen.
>
>With this configuration in mind, my orginal statement(s) makes more sense.

Indeed.  Wish we had so many disks...

>What we have done is implement a methodology.  Instead of removing the
>file, rename it.  (i.e. emacs -> .emacs.orig)  The delete it a week later.

The method we have adopted here for emacs may be of interest to the net.

For most users, issuing the command `emacs' at a shell invokes
/usr/local/bin/emacs.  This file is a symbolic link to
/usr/local/emacs/dist/xemacs.  In /usr/local/emacs, dist itself is a
symbolic link to, for example, dist-18.53.  /usr/local/emacs/src, in
turn, is a sym link to dist/src, and ditto for man, info, lisp, etc,
etc.  In a NFS environment, we put the less-used subdirectories (src,
man, info, cpp) on a subset of the file servers, with links from the
other servers at the dist-XX.XX level to preserve version consistency.
(This may fool you if you are navigating within the subdirectories
with cd ../foo).  lisp and etc we copy to each file server.

In dist-18.53/, xemacs is a hard link to src/emacs-18.53.X, where X is
the current minor version number.  [For the less fortunate file
servers, we cp -p the new executables from the server with all of
src/; this could lead to stale file handles unless you mv the older
minor version out of the way].  I find this scheme pretty workable,
for the following reasons:

1.  The dist-XX.XX naming is consistent with emacs as distributed,
especially diff files.  Makes patching easier.

2.  A major release is accomplished simply by changing the dist
symlink in /usr/local/emacs to the right new major version number.
Although this makes the lisp files inconsistent with the executable,
we haven't found this to be a major problem.

3.  A minor release is accomplished by unlinking dist-XX.XX/xemacs and
relinking it to (the newer) src/xemacs.  Since the old version stays
around in src/ with its explicit version name (emacs-XX.XX.X), we
avoid stale file handles.

4.  Once a version is superseded, we wait a week or more before
removing the executable (or distribution) altogether.

5.  Note that DOC files often are the same between minor version
numbers.  You can save space by hard-linking them together.  Also, we
have to hard-link DOC files between the etc/ directories of the
various dist-XX.XX trees to smooth major version transitions.
(Generally, there will only be at most two major version active at a
time.)

We don't try to extend this across architectures (yet).  We are sort
of toying with that problem for TeX...

Note: I don't read comp.unix (whither followups), so please cc me on
any interesting replies...thanks.
--
/jr
jr at bbn.com or bbn!jr
C'mon big money!



More information about the Comp.unix mailing list