TexStudio mit Arara; Extractbb kann nicht gefunden werden

TexStudio mit Arara; Extractbb kann nicht gefunden werden

Mit etwas Hilfe vonvorherige Frage TexStudio und arara, ich konnte mit arara in TexStudio loslegen (Juhu!). Aber während ich eine Xelatex-Kompilierung ausführte (der zweite Beispielcode in der gerade angegebenen URL), erhielt ich diese Fehlermeldung (die Kompilierung wurde nicht abgeschlossen):

(/usr/local/texlive/2022/texmf-dist/tex/latex/supertabular/supertabular.sty
))
(/usr/local/texlive/2022/texmf-dist/tex/latex/glossaries/styles/glossary-tree.s
ty
))
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
! I can't find file `"|extractbb --version"'.
<to be read again> 
                   \scan_stop: 
l.72     \l__sys_internal_tl
                            
(Press Enter to retry, or Control-D to exit)
Please type another input file name: 
runpopen command not allowed: extractbb

extractbbexistiert und (auf meiner Maschine) ist es bei/usr/local/texlive/2022/bin/x86_64-linux/extractbb

Nur eine Vermutung: Ist es möglich, dass das Problem nicht so sehr am Pfad ( 'I can't find file `"|extractbb --version') liegt, sondern vielleicht stattdessen an der Shell-Berechtigung ( runpopen command not allowed : extractbb)??? Ich bin für alle Vorschläge zur Behebung des Problems dankbar!

------Bearbeiten, folgen Sie dem Kommentar von David Carlisle zu texmf.cfg-----

Meine einzigen Anpassungen für meine "persönliche" texmf.cfg sind das Hinzufügen von

shell_escape_commands = pagelayoutapi

während dieunverändert,"general" texmf.cfg at /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnfzeigt an, dass

% The default is true, because we already avoid adding the standard
% extension(s) in the usual cases.  E.g., babel.sty will only look for
% babel.sty, not babel.sty.tex, regardless of this setting.
try_std_extension_first = t

% Enable system commands via \write18{...}.  When enabled fully (set to
% t), obviously insecure.  When enabled partially (set to p), only the
% commands listed in shell_escape_commands are allowed.  Although this
% is not fully secure either, it is much better, and so useful that we
% enable it for everything but bare tex.
shell_escape = p

% No spaces in this command list.
% 
% The programs listed here are as safe as any we know: they either do
% not write any output files, respect openout_any, or have hard-coded
% restrictions similar to or higher than openout_any=p.  They also have
% no features to invoke arbitrary other programs, and no known
% exploitable bugs.  All to the best of our knowledge.  They also have
% practical use for being called from TeX.
% 
shell_escape_commands = \
bibtex,bibtex8,\
extractbb,\
gregorio,\
kpsewhich,\
makeindex,\
repstopdf,\
r-mpost,\
texosquery-jre8,\

BEARBEITEN - Ich habe mir die Antwort auf egregs Antwort noch einmal angesehen /usr/local/texlive/2022/texmf.cnf, denn obwohl egregs Änderungen das Problem tatsächlich gelöst haben, sind die Anweisungen (in der Datei als Kommentare bereitgestellt) dem entgegengesetzt. Sie geben an, dass Sie NUR die Änderungen in diese Datei einfügen sollten, NICHT alle ursprünglichen Zeilen unter /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf:

% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf-dist/web2c/texmf.cnf).
% And include *only* your changed values, *NOT A COPY OF THE WHOLE THING!* [caps added here for emphasis--Birdman]
%

Ich führe dieses Gespräch weiter, weil ich gerne wissen würde, ob ich diese Ermahnung (--> nicht alles abzuschreiben) irgendwie missverstanden habe oder ob die Anleitungskommentare selbst fehlerhaft sind.

Antwort1

Es liegt definitiv an Ihrer Modifikation. Mit

shell_escape_commands = pagelayoutapi

du wirst zulassennurdie Anwendung pagelayoutapiin der eingeschränkten Shell-Escape-Funktion. Wenn Sie versuchen

kpsewhich --var-value shell_escape_commands

Von der Kommandozeile aus sollten Sie nur sehen:

pagelayoutapi

(gerade auf meiner Maschine ausprobiert).

Sie müssen die gesamte Liste kopieren und anhängen, wenn Sie die texmf.cnfDatei der höheren Ebene ändern:

shell_escape_commands = \
bibtex,bibtex8,\
extractbb,\
gregorio,\
kpsewhich,\
makeindex,\
repstopdf,\
r-mpost,\
texosquery-jre8,\
pagelayoutapi,\

Wie texmf.cnffunktioniert das Lesen?

Normalerweise gibt es zwei texmf.cnfDateien im TeX-Baum. Eine befindet sich auf der obersten Ebene, die andere in texmf-dist. Die Ausgabe von

kpsewhich -a texmf.cnf

auf meiner Maschine ist

/usr/local/texlive/2022/texmf.cnf
/usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf

Es kann noch mehr dieser Dateien geben, wichtig ist aber, dass sie in der angegebenen Reihenfolge gelesen werden kpsewhich -a.

Werte von Variablen, die in einer Datei gesetzt werden, sindnichtvon späteren Dateien überschrieben. Es gibt eine Empfehlung in der „Hauptdatei“ (die aber zuletzt gelesen wurde), nämlich

% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf-dist/web2c/texmf.cnf).
% And include *only* your changed values, *NOT A COPY OF THE WHOLE THING!* [caps added here for emphasis--Birdman]

„KEINE KOPIE DES GANZEN“ bedeutet, dass nicht jede Variable hinzugefügt wird, sondern nur diejenigen, deren Wert geändert werden muss. Wenn Sie alles hinzufügen, wäre die Initialisierung langsamer, da viele Werte gelesen und verworfen werden müssten.

Wenn Sie in der texmf.cnfDatei der obersten Ebene sagen

shell_escape_commands =

In der eingeschränkten Shell sind keine externen Programme zulässig. Die Variablen werden nicht inkrementell festgelegt: Spätere Zeilen, die mit diesem Wert beginnen, werden ignoriert.

verwandte Informationen