It sometimes happens that you need a new version of some macro package or font, but that the machine you use is maintained by someone who's unwilling to update and won't give you privileges to do the job yourself. A "temporary" installation is sometimes the correct approach, but if there's the slightest chance that the installation will be needed on more than one project, temporary installations aren't right.
In circumstances where you have plenty of quota on backed-up media, or adequate local scratch space, the correct approach is to create a private installation of (La)TeX which includes the new stuff you need; this is the ideal, but is not generally possible.
So, since you can't install into the public texmf
tree, you
have to install into a texmf of your own; fortunately, the
TDS standard allows for this, and teTeX 2.0 actually makes
provision for it, defining an internal variable HOMETEXMF
which points to the directory $HOME/texmf. (TeTeX 1.0 had
the definition, but suppressed it with comment markers.)
So, install your new package (or whatever) in the correct place in a tree based on $HOME/texmf, and generate an index of that tree
(the argument specifies which tree you are indexing: it's necessary since you don't, by hypothesis, have access to the main tree, and texhash without the argument would try to write the main tree.texhash $HOME/texmf
There are two wrinkles to this simple formula: first, the installation
you're using may not define HOMETEXMF
(teTeX 1.0
didn't, for example), and second, there may be some obstruction to
using $HOME/texmf as the default name. In either case, a good
solution is to have your own texmf.cnf - an idea that sounds
more frightening that it actually is. The installation's existing
file may be located with the command:
Take a copy of the file and put it into a directory of your own; this could be any directory, but an obvious choice is the web2c directory of the tree you want to create, i.e., $HOME/texmf/web2c or the like. Make an environment variable to point to this directory:kpsewhich texmf.cnf
(for a Bourne shell style system), orTEXMFCNF=$HOME/texmf/web2c export TEXMFCNF
(for a C-shell style system). Now edit the copy of texmf.cnfsetenv TEXMFCNF $HOME/texmf/web2c
There will be a line in the existing file that defines the tree where everything searches; the simplest form of the line is:
but, as teTeX 1.0 is distributed, there are several alternative settings behind comment markers ("TEXMF = !!$TEXMFMAIN
%
"), and the
person who
installed your system may have left them there. Whatever, you need to
modify the line that's in effect: change the above to three lines:
the important point being thatHOMETEXMF = $HOME/texmf TEXMF = {$HOMETEXMF,!!$TEXMFMAIN} % TEXMF = !!$TEXMFMAIN
$HOMETEXMF
must come before whatever
was there before, inside the braces. For example, if the original was
it should be converted to:TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN}
(retaining the original, as a comment, is merely an aide-memoir in case you need to make another change, later). TheHOMETEXMF = $HOME/texmf TEXMF = {$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN} % TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN}
!!
signs
tell the file-searching library that it should insist on a
texhash-ed directory tree; if you can count on yourself
remembering to run texhash on your new tree every time you
change it, then it's worth adding the marks to your tree:
as this will make (La)TeX find its files marginally faster.TEXMF = {!!$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN}
Having made all these changes, (La)TeX should "just use" files in your new tree, in preference to anything in the main tree - you can use it for updates to packages in the main tree, as well as for installing new versions of things.
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=privinst