[OS X TeX] MacTeX 2007 setup query

Maarten Sneep maarten.sneep at xs4all.nl
Mon Feb 11 22:34:55 CET 2008


On 11 feb 2008, at 09:24, Rowland McDonnell wrote:

>>
>> On 9 feb 2008, at 07:16, Rowland McDonnell wrote:
>>
>>>> TeX Live has provisions for a local texmf tree which can be
>>>> accessed by all users on a machine. This tree is placed in
>>>>
>>>> /usr/local/texlive/texmf-local
>>>>
>>>> This tree is NOT overwritten when the 2008 version is installed.
>>>
>>> We don't know that because the 2008 installer has not been
>>> released.  In any case, that directory tree might be overwritten
>>> some other way.
>>>
>>> Am I being paranoid and excessively mis-trustful?  Could be - but
>>> then again, I've had a lot of bad experiences with installers.
>>
>> This is the way the TeXLive installer has worked for years.
>
> Perhaps so, but the way MacTeX 2006 worked is that
> /usr/local/teTeX/share/texmf.local/ was used by MacTeX.
>
> Is this behaviour going to re-appear in a future version of MacTeX?
> That's my main concern.

teTeX is dead, it will not reappear. So that path will never appear  
again.

>> The
>> standard TeXLive installer is a shell script. With the number of  
>> shell
>> functions they use it is a bit tricky to figure out what they do,
>
> Trickier in this case, where the normal user has no idea how to view  
> the
> script (although I see you tell me where it is later on in the email).

That script is not hte standard TeXLive install script. The standard  
script is a large shell script, spread out over three different files,  
and it requires a fair bit of digging to figure out what goes on, even  
if you do know the basic structure.

The MacTeX postflight script is a lot more straightforward as it uses  
no shell functions, and is basically a linear sequence of shell  
commands. The one thing that remains to be tested is the absence of  
the texmf-local in the package archive. This is once to test, as a  
mistake is easily made when packaging.

>> but
>> the TeXLive installer indeed does not touch the directory if it is
>> there already.
>
> Righto.
>
>> I just checked the postflight script in the MacTeX installer package
>> (2007 edition), and the tree is created there only if it doesn't  
>> exist
>> already (see end of message).
>>
>> And since the author of MacTeX 2008 is making this statement,
>
> Is that you or Richard Koch?

I was referring to Richard's "This is the way the TeXLive installer  
has worked for years. "

>> I think
>> you can be pretty sure this statement isn't going to change for the
>> next release.
>
> Okay.  That'll do.
>
>>> I'd like to have my local texmf tree in a position that the MacTeX
>>> installer and so on don't even think about to avoid the risk of
>>> having my data messed about with.
>>>
>>> On the other hand, is there /good/ reason to think that it's a safe
>>> place to put local additions for all users?
>>
>> This is what the TeXLive documentation says about this tree:
>>
>> TEXMFLOCAL
>> This tree is where the TEX system (not as part of the initial
>> installation, but rather as time goes by) puts non-version-specific
>> files, primarily fonts. The default value is /usr/local/texlive/ 
>> texmf-
>> local, independent of the current TEX Live release, because it’s also
>> the recommended location to put any local packages or configuration
>> settings. (http://tug.org/texlive/doc/texlive-en/live.html)
>
> Which sounds to me like a /very/ good reason for having my own
> system-wide additional directory tree separate to texmf-local, and not
> put any of my stuff in texmf-local.
>
> When the documentation says `the TEX system puts non-version-specific
> files, primarily fonts', what does the `putting'?

Nothing, at this stage that I'm aware off. The TeXLive documentation  
also calls it the 'Recommended location to put any local packages or  
configuration settings', which I think fully applies to your situation.

> Is that a reference to some sort of automation I know nothing  
> about?  If
> not, what does it mean?

Don't know, I'll forward this to Karl Berry, he ought to know.

> [I am not used to `the TeX system' doing anything but sitting there
> being manually maintained, and I'm not happy at the thought that my
> local additions are going to be mixed up with some sort of automated
> system for adding and deleting files.]

I've forwarded this question to Karl as well.

>> I think there are four options for you:
>>
>> * Modify texmf.cnf to point TEXMFLOCAL to your tree
>>
>> * Modify texmf.cnf to add your tree to the search list (similar to  
>> how
>> you do it now). This has the advantage that TeX & Co will always
>> search the disk, thus not requiring a mktexlsr call after adding a
>> package. Depending on the size
>
> No matter what, it's bound to be quicker than OzTeX 3 running on my  
> old
> Performa 475. ;-)
>
> (on the other hand, maybe a mktexlsr to build an index would be  
> useful -
> but I'll leave that for another day)

It would be useful to know the number of directories and files we're  
talking about:

find /Users/Shared/texmf.rjmm -type d | wc -l
find /Users/Shared/texmf.rjmm -type f | wc -l
du -sh /Users/Shared/texmf.rjmm

will count the number of directories and files in your texmf tree, and  
the total size. The standard TeXLive tree from MacTeX totals to 5188,  
58074 and 1.3 GB on my system.

>> * Create a symbolic link to your tree at the location /usr/local/
>> texlive/texmf-local which points to your tree.
>
> That's roughly what I've done as a stand-in measure; except I've  
> used a
> MacOS alias.

I'm unsure whether that works at all, keep in mind that tex and  
friends are unix tools that know nothing about macintosh aliases.
This command in the terminal should make it work:
ln -s /Users/Shared/texmf.rjmm /usr/local/texlive/texmf-local
(be sure to remove the existing alias first).

>> Of course if you
>> update, you'll have to temporarily remove the link to completely
>> eliminate the link between tex and your tree.
>
> Why?  Surely the worst that's likely to happen is that my link will  
> get
> replaced?

Depends on your level of anxiety.

>> * Put your tree in the TeXLive location /usr/local/texlive/texmf- 
>> local
>> and keep a backup. I don't know how frequently you change items in
>> this shared tree, but this location is covered by Time Machine on
>> Leopard.
>
> I won't be using MacOS X 10.5 - no Classic.
>
>> You'll probably go with the second option, as it is the most
>> convenient from an end-user perspective.
>
> Ish, ish.  Using an alias to point /usr/local/texlive/texmf-local at  
> `my
> local tree that exists somewhere else' is easier to set up.   But  
> that's
> a bit dodgy because of the reference in the docs to the TeX system
> adding stuff to the texmf-local tree, not to mention MacTeX 2006's way
> of using it for `MacTex 2006 stuff'.

MacTeX 2006 is no longer around, and I can't speak for Gerben, but  
from his comments I got the impression that using the texmf-local tree  
for managed packages was one of the lesser ideas. There are no longer  
any sub-packages, in later edition the additional packages went into a  
separate tree (texmf.gwtex iirc), which also alleviated the problem.  
So I can see where you're coming from, but fortunately we (the team  
building and testing MacTeX) have learnt a lot over the last few  
years. An additional suggestion: add a label to your files in the  
tree. This will help to identify your files in case of (future) trouble.

>
>> On line 114 of /usr/local/texlive/2007/texmf/web2c/texmf.cnf the  
>> TEXMF
>> variable is set:
>>
>> TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!
>> $TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST}
>>
>>
>>
>> Add your tree before this line:
>>
>> TEXMFRM = /Users/Shared/texmf.rjmm
>
> Okay (I'd've understood `Add your tree before that line' rather more
> easily).
>
>> and modify line 114 to
>>
>> TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFRM,!!
>>
> $TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!! 
> $TEXMFDIST}
>
> Okay - that's straightforward.  I've made that modification, and a  
> basic
> `Can I LaTeX a file using a package from my additional tree' test  
> works.
>
>> I don't think you'll need to modify SYSTEXMF.
>
> texmf.cnf says of this list:
>
> `The system trees.  These are the trees that are shared by all users.'
>
> Given that, how can it be right to not modify it?
>
>
>> This tree is used for
>> generated fonts, and the default will be just fine.
>
> Eh?  But multiple trees are specified by SYSTEXMF, and surely the
> texlive designers weren't so mad they arranged to put generated founts
> in multiple places?
>
> The texlive documentation states that the default place to put  
> founts is
> the TEXMFVAR tree - which isn't listed in SYSTEXMF.
>
> texmf.cnf specifies of SYSTEXMF:
>
> `if a tree appears in this list, the mktex* scripts will use  
> VARTEXFONTS
> for generated files, if the original tree isn't writable; otherwise  
> the
> current working directory will be used.'
>
> Which tells me two things about where generate founts are put:
>
> 1) It's more complicated than `they're just put here'
> 2) I have no idea where generated founts are put.
>
> Any idea how can I find out?  texmf.cnf isn't a lot of help on this  
> one,
> and the texlive documentation is rather confusing for someone new to  
> it
> like me.
>
> [btw, if MacTeX 2007 deals with generated founts in a similar way to  
> the
> previous installer, I'll /definitely/ be wanting to make some changes.
> But that'll be a problem for another day - just getting basic  
> operation
> out of MacTeX 2007 is my aim at the moment.]

I'm out of my depth at this stage. Someone else?

>> Besides you'll
>> need to make sure that some permissions are set correctly if a tree  
>> is
>> going to be suitable for this type of use. At least that is how I  
>> read
>> the comments.
>
> Write permissions will be needed for something or other, possibly.   
> But
> the MacTeX I've got installed at the moment seems to put generated
> founts in a single place (not the multiple trees specified by the
> SYSTEXMF variable) - a `user specific temporary directory' from which
> they seem to be removed at some point.  Certainly, I've had TeX
> re-generated founts that it's generated before.  I'd like to be able  
> to
> keep generated founts - but as I explain above, that's a problem for
> another day.
>
>> This is very similar to what you had figured out, except a missing
>> comma.
>
> ??  Missing comma?  Where?  (I ask because I want to understand things
> properly, and I can't see anything like a missing comma - which  
> implies
> that I've failed to understand the syntax properly).

In your message of the 9th you wrote:
TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFRM!!$TEXMFSYSCONFIG,!! 
$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST}

The comma after $TEXMFRM and before the double exclamation is missing.

>> There is a fifth option (cue Monty Python jokes, I started out with
>> three options), but this requires the execution of a single command
>> for each user on your system. Beyond that, there is no configuration
>> to be changed. The disadvantage is that there will be no separate per
>> user texmf tree. Execute
>>
>> ln -s /Users/Shared/texmf.rjmm ~/Library/texmf
>>
>> This only works if you don't already have a private tree.
>
> Righto.
>
>>> Either that, or could someone convince me that it's safe to use the
>>> standard mechanism for a local system-wide texmf tree?  At the
>>> moment, I'm unconvinced.
>>
>> Given our previous encounters on the list, I doubt that we can. It
>> will however work without a hitch on future updates.
>
> I'm still concerned about texmf-local being the place that `the TeX
> system' puts files in.  That suggests I'll have some hitches due to
> automation getting in my way - do you know what automation I might run
> into?  If I knew what automation existed, I could read its
> documentation.  I can see no reference to such automation in the  
> texlive
> documentation, but I could easily have missed something.
>
> (the texlive documentation is definitely `optimised for Unix
> experts'...)

I've forwarded this question to Karl Berry.

> (or just plain:
>
> MacTeX-2007.mpkg/Contents/Packages/TeXLive-2007.pkg/Contents/ 
> Resources/
> postflight
>
> for those of us who just have the installer)

Correct.

>> # Add /usr/local/texlive/texmf-local if completely absent
>>
>> if [[ ! -d /usr/local/texlive/texmf-local ]]; then
>>  mkdir /usr/local/texlive/texmf-local
>>  mkdir /usr/local/texlive/texmf-local/bibtex
>>  mkdir -p /usr/local/texlive/texmf-local/bibtex/bib/local
>>  mkdir -p /usr/local/texlive/texmf-local/bibtex/bst/local
>>  mkdir -p /usr/local/texlive/texmf-local/dvips/local
>>  mkdir /usr/local/texlive/texmf-local/fonts
>>  mkdir -p /usr/local/texlive/texmf-local/fonts/source/local
>>  mkdir -p /usr/local/texlive/texmf-local/fonts/tfm/local
>>  mkdir -p /usr/local/texlive/texmf-local/fonts/type1/local
>>  mkdir -p /usr/local/texlive/texmf-local/fonts/vf/local
>>  mkdir -p /usr/local/texlive/texmf-local/metapost/local
>>  mkdir /usr/local/texlive/texmf-local/tex
>>  mkdir -p /usr/local/texlive/texmf-local/tex/latex/local
>>  mkdir -p /usr/local/texlive/texmf-local/tex/plain/local
>>  mkdir /usr/local/texlive/texmf-local/web2c
>>  chmod -R 755 /usr/local/texlive/texmf-local
>> fi
>>
>> The first line is the important one: "if the directory /usr/local/
>> texlive/texmf-local does not exist then…" See man test for the test  
>> (-
>> d) itself. The 2008 version will be created by adding a few lines to
>> the end of this script, the beginning will be used unaltered.
>
> Well, that's okay for the next version, I suppose.  <shrug>  Just so
> long as I can be sure that nothing will clobber my local extras
> directory in between major updates, I expect things will be okay.
>
> However, using your suggestion on how to add a new local extras texmf
> tree to the search path is probably best - and it's what I've done.
>
> So stage 1 in `setting up MacTeX 2006' is over...  I might have a
> usefully working system in a week or two. ;-)

Glad to be of help.

Maarten


More information about the macostex-archives mailing list