[tex-live] Curious discrepancy

Reinhard Kotucha reinhard.kotucha at web.de
Fri Sep 1 23:30:53 CEST 2006

>>>>> "Ken" == Ken Brooks <kenb at rpath.com> writes:

  > I finally figured out something important: if I let the texlive
  > sources as found in
  > http://www.tug.org/texlive/Contents/live/texlive/source/source.tar.bz2
  > build the way the way they want to build, unmodified, kpathsea
  > will look for texmf.cnf under /usr/share/texmf.  That's great,
  > because that's how I need things organized.

  > That's also startling because the texlive data tree as installed
  > from the standard texlive2005-inst-20051102.iso lands at
  > /usr/share/texlive/2005/texmf*.  And that path is nowhere on the
  > paths searched by kpathsea as built above.

  > Am I overlooking something obvious?

Yes, there are no paths compiled into binaries.  The config files are
found relative to the place where the shell finds the binaries.
All you have to do is to keep the directory structure intact.


The directories "<platform>" and "share" are optional.

In your case, it will look like this:


A binary in /usr/bin which supports kpathsea will search for




The first one usually doen't exist.  It is useful for local changes
made by the system administrator.  A variable which is set there will
not be overwritten when the second file is evaluated.  That means that
a system admin can change variables here and nothing will be lost
after a system upgrade.

  > BTW, based on a message from Reinhard on 8/1/06, I get the
  > impression that I should let the texmf/ tree created by the build
  > override the one installed from the .iso, but texmf-dist/ should
  > come from the .iso.  Am I right?

Yes.  The stuff in texmf-dist is system independent.  There are macro
packages, documentation and so on.

The files in texmf are generated or modified at compile-time.

For instance, each tex engine needs a matching pool file.  Pool files
are platform independent but pdftex-1.40 will not work with
pdftex.pool from pdftex-1.30.

I did not tell you the whole truth about texmf.cnf yet.

It is not sufficient to find texmf.cnf, all the other files have to be
found too.  Files are found relative to the bin directory, but it
makes a difference whether the binaries had been compiled with the
--disable-multiplatform option or not.

You can check yourself:  Compare the texmf.cnf file which you created
yourself with that which comes with TeXLive.

You'll see that the texmf base directory is called $SELFAUTOPARENT in
texmf.cnf provided by TeXLive and $SELFAUTODIR in that you built

The reaeson is that TeXLive has to find them in


and in your case they have to be found in


Assume that TeXLive provides binaries for every platform you want to
support.  You don't have to compile anything yourself then.

Just install TeXLive in /tmp, move the bin directory and the texmf*
trees to appropriate places and replace all occurrences of
$SELFAUTOPARENT by $SELFAUTODIR in /usr/share/texmf/web2c/texmf.cnf.

A few words about texmf-dist:

If you can put the whole texmf-dist tree into your distribution, that
would be best.  If you have to create a subset it does not make much
sense to re-invent the wheel.  I recommend you look into other TeX
distributions, for instance Debian.

If you try to do everything yourself it's a lot of work for you.  But
it is also desirable that the various TeX distributions are not too
different.  It is easier to provide help to people who ask on the
mailing lists if all the TeX distributions are quite similar.


Reinhard Kotucha			              Phone: +49-511-4592165
Marschnerstr. 25
D-30167 Hannover	                      mailto:reinhard.kotucha at web.de
Microsoft isn't the answer. Microsoft is the question, and the answer is NO.

More information about the tex-live mailing list