MacTeX 2020: „Formatpfad kann nicht geändert werden“

MacTeX 2020: „Formatpfad kann nicht geändert werden“

Ich habe MacTeX 2020 installiert und kann ConTeXt nicht zum Laufen bringen (funktioniert aber auf einem anderen Rechner, auf dem ich von MacTeX 2019 aktualisiert habe). Der Fehler ist:

$ context file.tex
mtx-context     | warning: no format found, forcing remake (commandline driven)
[…] snip lots of lines
resolvers       | formats | changing to format path '/var/folders/rj/hfjmjx796q102y4v23vh038c0000gp/T/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/formats/luatex'
resolvers       | formats | unable to change to format path '/var/folders/rj/hfjmjx796q102y4v23vh038c0000gp/T/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/formats/luatex'
mtx-context     | error, no format found with name: cont-en, aborting
system          | total runtime: 5.315 seconds

ich leseMark IV ausführenaus dem Wiki und versuchte, auszuführen

context --make
context --make cont-en

aber sie beenden mit der gleichen unable to change to format pathMeldung. Ich nehme an, das ist das Kernproblem. Nachdem ich diese Befehle ausgeführt habe, erhalte ich immer noch den gleichen Fehler, wenn ich versuche, mein PDF zu erstellen.

Wie kann ich das beheben?

Antwort1

Die Lösung für dieses Problem habe ich von der ConTeXt-Mailingliste erhalten (Link zum Thread), ich zitiere daraus:

Diese Meldungen kommen aus der Mitte der Datei luat-fmt.lua (Zeilen 180 und 183 auf meinem System), wenn ConTeXt versucht, das Arbeitsverzeichnis zu ändern (das bedeutet „ändern“ in diesem Zusammenhang, einfach in ein anderes Verzeichnis wechseln, wie bei cd oder chdir). Der entsprechende Auszug ist

report_format("changing to format path %a",validformatpath)
lfs.chdir(validformatpath)
if dir.current() ~= validformatpath then
  return fatalerror(startupdir,"unable to change to format path %a",validformatpath)
end

In Ihrem Fallgültiger Formatpfadist ein Unterverzeichnis von $TMPDIRunter /var/folders/. Wenn Ihr Mac jedoch meinem ähnelt, /varist tatsächlich ein symbolischer Link zu /private/var, sodass dir.current()ein Pfad gemeldet wird, der mit beginnt, /privateund der Test fehlschlägt.

Sie können dies umgehen, indem Sie TMPDIReinen anderen Wert festlegen, der nicht mit /var– beginnt, und /tmpauch nicht mit „, da dies auch ein symbolischer Link ist :-) Mit einem temporären Verzeichnis in Ihrem Home-Ordner sollte es funktionieren.

Ich mache also Folgendes:

env TMPDIR=~/tmp context <file>

Sie können dies als Alias ​​in Ihrer Shell einrichten, ich habe beispielsweise Folgendes für Fische:

function context
  env TMPDIR=~/tmp /Library/TeX/texbin/context $argv
end

verwandte Informationen