Sanjoy Mahajan wrote:
In any case, I have probably misunderstood the thread. Has a summary been posted somewhere that I might consult?
I need to summarize all the Linux installation methods on the Wiki, once I get it all straight in my head. Right now in reality and in my head it's a nightmare because of all the flavors (texlive, tetex 2 or 3, etc.) and the gazillion map files that could be anywhere. ConTeXt tries to work everywhere so it has a hard life.
I don't know much about what MacOS X does, but if you're not using a graphical installation method, it should be like BSD 4.[0123] Unix that I once used. In which case it should work mostly like Linux.
Here's what I do now and did just half hour ago to update to the 2006.08.08 version. I use bash (a mostly sh-compatiable shell), which the MacOS terminal runs too I think. The $ below is my bash prompt and everything after it is what I type:
$ TEXMFLOCAL=/home/sanjoy/texmf texmfstart ctxtools --updatecontext
This fixes the problem that ctxtools uses (I think) Windows quoting in this source line:
tree = `kpsewhich --expand-path $TEXMFLOCAL`.chomp rescue nil
In Unix ruby (like in Perl) the $TEXMFLOCAL is expanded by the shell because of the $, and the result is run by the backticks. Usually TEXMFLOCAL has no setting in the shell or environment so ruby runs the command with $TEXMFLOCAL replaced by an empty string, giving:
kpsewhich --expand-path
So kpsewhich complains that it didn't get an argument for --expand-path (or --expand-var). The long-term fix is to figure out how to quote that works in Windows and Unix, but I don't know how since I don't use Windows.
The short-term hack is to set TEXMFLOCAL just while running ctxtools, which is done by the command above that I run.
So maybe try that using the vanilla distribution (so with \012 restored) and report back what happens and let's see if we can find a fix if something else doesn't work. My computers run Linux but my partner has a MacOS 10.3 machine and I'll use it for ConTeXt experiments if needed.
does this one work ok? (the stupid thing is that kpsewhich is not made for user friendlyness, e.g.\ a natural solution would be to support kpsewhich --expand-path TEXMFLOCAL i.e. it expects an internal var so why not be clever and put the $ in front of it internally; there are more places in kpsewhich where robust cross-platformness can be provided but it has a low priority i guess def locatedlocaltree if System.unix? then tree = `kpsewhich --expand-path '$TEXMFLOCAL'`.chomp rescue nil unless tree && FileTest.directory?(tree) then tree = `kpsewhich --expand-path '$TEXMF'`.chomp rescue nil end else tree = `kpsewhich --expand-path $TEXMFLOCAL`.chomp rescue nil unless tree && FileTest.directory?(tree) then tree = `kpsewhich --expand-path $TEXMF`.chomp rescue nil end end return tree end -- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------