Seite 1 von 1

LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 10:23
von khzimmer
Hallo Wissende,

bei mir (und bei einem meiner User auf deren eigenem Rechner) erzeugt io.open("../Testfile", "w") mit TeX Live 2024 einen error,
während es mit TeX Live 2023 problemlos funktioniert. :(

Ich installierte TL 2024 vorhin, also am 6.4.2024.
\documentclass{article}
\begin{document}
\directlua{
local myDocument, err = io.open("../Testfile", "w")
if not myDocument then
  print(" ERROR OPENING FILE:", err)
end
}
\end{document}
Beachten: Mein obiges Beispiel erzeugt, hier im Forum-System, keinen Error.
Lokal bei mir tritt aber mit heutigem TL 2024 der Fehler auf.


Danke für Eure Hilfe. :)

Karl-Heinz

Re: LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 13:09
von Unwissender
Wie genau lautet der Fehler denn? Sieh mal in der Protokoll-Datei (*.log) nach. Poste den Fehler dann in deinem nächsten Beitrag oder hänge die komplette Datei an ebendiesen an.

Solltest du den genauen Fehler dort selbst entdecken können, kannst du ihn ja mal in die Suchmaschine deiner Wahl eingeben und in den Ergebnissen dann nach möglichen Lösungen suchen.

Re: LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 13:51
von khzimmer
Leider wird kein Fehler aussgegeben.
Dies erscheint in der Konsole:

ERROR OPENING FILE: nil


In der .log-Datei steht dazu gar nichts.

Re: LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 14:17
von Unwissender
Das ist jetzt schon etwas ärgerlich, denn mit NIL ist hier keineswegs der Fluss gemeint. Da müssen echte Experten ran, von denen einige bei "TeX - LaTeX Stack Exchange" aktiv sind.

Re: LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 14:59
von khzimmer
Auf jeden Fall danke für Deinen Versuch zu helfen, das war freundlich. :)

Re: LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 17:03
von khzimmer
Leider fand ich noch keine Lösung.

io.open(Dateiname, "w") funktioniert seit TL 2024 nur noch dann,
wenn Dateiname entweder nur einen simplen Namen enthält, oder der vorangestellte Pfad sich auf ein Verzeichnis unterhalb des aktuellen Verzeichnisses (current directory) bezieht.

Mit TL 2023 war es noch möglich, die Datei in ein Verzeichnis zu schreiben, das oberhalb lag.

Weiß jemand einen workaround?

Ich teste auch dies, es funktioniert ebenso wenig:
\documentclass{article}
\begin{document}
\directlua{
local destFileName = "Testfile"
local myDocument, err = io.open(destFileName, "w")
if not myDocument then
  print(" ERROR OPENING FILE:", err)
  return
end
myDocument:write("Hello from Lua!")
myDocument:close()
local finalFileName = "../"..destFileName
print("Moving file: "..finalFileName)
print (os.rename(destFileName, finalFileName))
}
\end{document}
Bei diesem Beispiel gibt es immerhin eine Fehlermeldung:

Moving file: ../Testfile
nil LuaTeX: operation not permitted -1


Obwohl ich natürlich Schreibrechte im oberen Verzeichnis habe.

Re: LuaTeX: Ist io.open("../dateiname", "w") mit TL 2024 nicht mehr möglich?

Verfasst: Sa 6. Apr 2024, 17:32
von khzimmer
Neue Vermuting: Der Fehler scheint auf Seiten von TeX/LaTeX zu liegen.

Grund meiner Annahme: Ich speichere diese Zeilen als .lua-Datei: testing_io.open.lua
local destFileName = "Testfile"
local myDocument, err = io.open(destFileName, "w")
if not myDocument then
  print(" ERROR OPENING FILE:", err)
  return
end
myDocument:write("Hello from Lua!")
myDocument:close()
local finalFileName = "../"..destFileName
print("Moving file: "..finalFileName)
print (os.rename(destFileName, finalFileName))
Dann rufe ich den Befehl auf:

~/TeX_Live_2024/bin/x86_64-linux/lualatex --luaonly testing_io.open.lua

… und es klappt problemlos.

Aber sobald die Zeilen, wie oben im zweiten Code-Beispiel, in \directlua{ } stehen, erhalte ich "operation not permitted".