Next: , Previous: Advice for package providers, Up: Installation



2.6 Installation for non-privileged users

Often people without system administration privileges want to install software for their private use. In that case you need to specify more options top the configure script. For XEmacs users, this is fairly easy, because the XEmacs package system has been designed to make this sort of thing practical: but GNU Emacs users (and XEmacs users for whom the package system is for some reason misbehaving) may need to do a little more work.

The main expedient is using the --prefix option to the configure script, and let it point to the personal home directory. In that way, resulting binaries will be installed under the bin subdirectory of your home directory, manual pages under man and so on. It is reasonably easy to maintain a bunch of personal software, since the prefix argument is supported by most configure scripts.

You'll have to add something like /home/myself/share/emacs/site-lisp to your load-path variable, if it isn't there already.

XEmacs users can achieve the same end by pointing configure at an appropriate package directory (normally --with-packagedir=~/.xemacs/xemacs-packages will serve). The package directory stands a good chance at being detected automatically as long as it is in a subtree of the specified prefix.

Now here is another thing to ponder: perhaps you want to make it easy for other users to share parts of your personal Emacs configuration. In general, you can do this by writing ~myself/ anywhere where you specify paths to something installed in your personal subdirectories, not merely ~/, since the latter, when used by other users, will point to non-existent files.

For yourself, it will do to manipulate environment variables in your .profile resp. .login files. But if people will be copying just Elisp files, their copies will not work. While it would in general be preferable if the added components where available from a shell level, too (like when you call the standalone info reader, or try using preview.sty for functionality besides of Emacs previews), it will be a big help already if things work from inside of Emacs.

Here is how to do the various parts:

Making the Elisp available

In XEmacs, you should ask the other users to add symbolic links in their ~/.xemacs/xemacs-packages/lisp, ~/.xemacs/xemacs-packages/info and ~/.xemacs/xemacs-packages/etc directories. (Alas, there is presently no easy programmatic way to do this, except to have a script do the symlinking for them.)

In GNU Emacs, It should be sufficient if people just do

     (load "~myself/share/emacs/site-lisp/preview-latex.el" nil t t)

where the path points to your personal installation. The rest of the package should be found relative from there without further ado.

Making the Info files available

While for yourself, you'll probably want to manipulate the INFOPATH variable; for access inside of Elisp something like the following might be convenient:

     (eval-after-load 'info
        '(add-to-list 'Info-directory-list "~myself/info"))

In XEmacs, as long as XEmacs can see the package, there should be no need to do anything at all; the info files should be immediately visible. However, you might want to set INFOPATH anyway, for the sake of standalone readers outside of XEmacs. (The info files in XEmacs are normally in ~/.xemacs/xemacs-packages/info.)

Making the LaTeX style available

Again, for yourself you want to manipulate the TEXINPUTS environment variable or an appropriate setting of a personal texmf.cnf file. It may well be that your site configuration already caters for a personal user's texmf tree, in which case having specified the appropriate tree to ./configure will have set up everything for yourself. If that personal tree is not located at the equivalent of ~myself/share/texmf, it is a good idea to make this so with the help of a symbolic link, so that the usual --prefix invocation to ./configure is everything that is needed.

For others, you want to add something like

     (setenv "TEXINPUTS"
             (concat "~myself/share/texmf/tex/latex/preview:"
                     (getenv "TEXINPUTS")))
     
     (setenv "TEXDOCS"
             (concat "~myself/share/texmf/doc/latex/styles:"
                     (getenv "TEXDOCS")))

This just exports the relevant directories for preview-latex; you might have more to share. Also, the TEXDOCS change is hardly likely to be effective: most people call texdoc from a shell window rather than from inside of Emacs, and those that are interested in the style documentation will usually want to have the style itself available anyhow without having to call LaTeX from within Emacs.

But at least for people just interested in preview-latex from inside of Emacs, the augmentation of TEXINPUTS will be helpful. Although it does not appear like it, under web2c-based systems like teTeX, this invocation will also do the right thing in case TEXINPUTS has no previous value.