summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-privinst.html
blob: c178fbaa85aa5675a9222015d59af2c3d5cd8967 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<head>
<title>UK TeX FAQ -- question label privinst</title>
</head><body>
<h3>&ldquo;Private&rdquo; installations of files</h3>
<p>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&rsquo;s
unwilling to update and won&rsquo;t give you privileges to do the job
yourself.  A <a href="FAQ-tempinst.html">&ldquo;temporary&rdquo; installation</a> is
sometimes the correct approach, but if there&rsquo;s the slightest chance
that the installation will be needed on more than one project,
temporary installations aren&rsquo;t right.
<p>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.
<p>So, since you can&rsquo;t install into the public <code>texmf</code> tree, you
have to install into a <i>texmf</i> of your own; fortunately, the
TDS standard allows for this, and teTeX 2.0 actually makes
provision for it, defining an internal variable <code>HOMETEXMF</code>
which points to the directory <i>$HOME/texmf</i>.  (TeTeX 1.0 had
the definition, but suppressed it with comment markers.)
<p>So, install your new package (or whatever) in the 
<a href="FAQ-wherefiles.html">correct place</a> in a tree based on
<i>$HOME/texmf</i>, and generate an index of that tree
<blockquote>
<pre>
texhash $HOME/texmf
</pre>
</blockquote><p>
(the argument specifies which tree you are indexing: it&rsquo;s necessary
since you don&rsquo;t, by hypothesis, have access to the main tree, and
<i>texhash</i> without the argument would try to write the main
tree.
<p>There are two wrinkles to this simple formula: first, the installation
you&rsquo;re using may <em>not</em> define <code>HOMETEXMF</code> (teTeX 1.0
didn&rsquo;t, for example), and second, there may be some obstruction to
using <i>$HOME/texmf</i> as the default name.  In either case, a good
solution is to have your own <i>texmf.cnf</i> &mdash; an idea that sounds
more frightening that it actually is.  The installation&rsquo;s existing
file may be located with the command:
<blockquote>
<pre>
kpsewhich texmf.cnf
</pre>
</blockquote><p>
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 <i>web2c</i>
directory of the tree you want to create, i.e.,
<i>$HOME/texmf/web2c</i> or the like.  Make an environment variable to
point to this directory:
<blockquote>
<pre>
TEXMFCNF=$HOME/texmf/web2c
export TEXMFCNF
</pre>
</blockquote><p>
(for a Bourne shell style system), or
<blockquote>
<pre>
setenv TEXMFCNF $HOME/texmf/web2c
</pre>
</blockquote><p>
(for a C-shell style system).  Now edit the copy of <i>texmf.cnf</i>
<p>There will be a line in the existing file that defines the tree where
everything searches; the simplest form of the line is:
<blockquote>
<pre>
TEXMF = !!$TEXMFMAIN
</pre>
</blockquote><p>
but, as teTeX 1.0 is distributed, there are several alternative
settings behind comment markers (&ldquo;<code>%</code>&rdquo;), and the
person who 
installed your system may have left them there.  Whatever, you need to
modify the line that&rsquo;s in effect: change the above to three lines:
<blockquote>
<pre>
HOMETEXMF = $HOME/texmf
TEXMF = {$HOMETEXMF,!!$TEXMFMAIN}
% TEXMF = !!$TEXMFMAIN
</pre>
</blockquote><p>
the important point being that <code>$HOMETEXMF</code> must come before whatever
was there before, inside the braces.  For example, if the original was
<blockquote>
<pre>
TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN}
</pre>
</blockquote><p>
it should be converted to:
<blockquote>

<pre>
HOMETEXMF = $HOME/texmf
TEXMF = {$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN}
% TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN}
</pre>
</blockquote><p>
(retaining the original, as a comment, is merely an aide-memoir in
case you need to make another change, later).  The <code>!!</code> signs
tell the file-searching library that it should insist on a
<i>texhash</i>-ed directory tree; if you can count on yourself
remembering to run <i>texhash</i> on your new tree every time you
change it, then it&rsquo;s worth adding the marks to your tree:
<blockquote>

<pre>
TEXMF = {!!$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN}
</pre>
</blockquote><p>
as this will make (La)TeX find its files marginally faster.
<p>Having made all these changes, (La)TeX should &ldquo;just use&rdquo; files in
your new tree, in preference to anything in the main tree &mdash; you can
use it for updates to packages in the main tree, as well as for
installing new versions of things.
<p><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=privinst">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=privinst</a>
</body>