LaTeX package installation with tex-get
If you are running a Linux system, you probably install your TeX Live distribution from you Linux distribution’s package manager. The current Ubuntu 12.04 LTS ships TeX Live 2009 which is … old and a treasure trove of TeX stackexchange questions.
A common answer to questions like “how can I install package XYZ locally?” is to
install them into the local texmf
tree“. The TeX Live distribution comes with
its own package manager called tlmgr
but Debian decided to drop it in favor of
their own packaging system. So, one other option to update or install missing
packages, is populating a local texmf
tree.
The installation is actually quite simple except that packages litter their
files all over the place; a problem that was recently solved in the Vim
community by run-time managers such as Pathogen or Vundle. So, how would you do
it? First, grab the zipped package from CTAN and extract it somewhere. Now you
need to find out where your texmf
tree is located with
kpsewhich -var-value=TEXMFHOME
and put the .sty, .bst etc. files in the respective subdirectories. The LaTeX
Wikibook gives a good overview, what belongs where. Although you could place
the files in the top-level directories (e.g. all .sty files in
~/texmf/tex/latex
) it’s a better idea to separate things into package
subdirectories. If there are no .sty files, you might need to generate them by
running LaTeX on the .ind files and install the generated files. You now have
fully working manually maintained packages but managing more than one package
will become a real chore eventually.
To help me with all the tedious tasks, I wrote a little shell script called
tex-get. It checks if any files need to be generated and places
everything into their respective destination directories. While doing so, all
installed filenames are recorded in a manifest file, which is then used for
removal of the package. The commandline interface is similar to apt-get
, hence
you can install and remove packages with
tex-get install l3kernel
tex-get remove l3kernel
However, unlike a real package system, dependencies are not resolved. Moreover, no documentation is generated and no font files are (yet) installed. Anyway, suggestions and improvements are very welcome.