
Con algo de ayuda delpregunta previa TexStudio y arara, Pude comenzar con arara dentro de TexStudio (¡Yay!). Pero mientras ejecutaba una compilación de Xelatex (el segundo código de ejemplo en la URL que acabo de mencionar), recibí este mensaje de error (no terminó de compilarse):
(/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
extractbb
existe y (en mi máquina) está en/usr/local/texlive/2022/bin/x86_64-linux/extractbb
Sólo una suposición: ¿Es posible que esto no sea tanto un problema con la ruta ( 'I can't find file `"|extractbb --version'
), sino quizás con el permiso del shell ( runpopen command not allowed : extractbb
)? ¡Cualquier sugerencia sobre cómo solucionarlo será apreciada!
------editar, seguir el comentario de David Carlisle con respecto a texmf.cfg-----
Mis únicas personalizaciones para mi texmf.cfg "personal" es la adición de
shell_escape_commands = pagelayoutapi
mientras que elsin alterar,"general" texmf.cfg en /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf
indica que
% 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,\
EDITAR: respuesta a la respuesta de egreg. Volví a mirar /usr/local/texlive/2022/texmf.cnf
porque, aunque los cambios de egreg de hecho resolvieron el problema, las instrucciones (proporcionadas como comentarios dentro del archivo) son contrarias, indican que SÓLO debes colocar los cambios en ese archivo, NO todas las líneas originales presentes en /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]
%
Continúo esta conversación porque me gustaría saber si de alguna manera he malinterpretado esta advertencia (--> no copiar todo), o si esos comentarios instructivos son en sí mismos defectuosos.
Respuesta1
Definitivamente es culpa de tu modificación. Con
shell_escape_commands = pagelayoutapi
tu estas permitiendosolola aplicación pagelayoutapi
en el shell-escape restringido. Si intentas
kpsewhich --var-value shell_escape_commands
desde la línea de comando, deberías ver
pagelayoutapi
(Recién probado en mi máquina).
Debe copiar la lista completa y agregarle al modificar el texmf.cnf
archivo de nivel superior:
shell_escape_commands = \
bibtex,bibtex8,\
extractbb,\
gregorio,\
kpsewhich,\
makeindex,\
repstopdf,\
r-mpost,\
texosquery-jre8,\
pagelayoutapi,\
¿Cómo texmf.cnf
funciona la lectura?
Generalmente hay dos texmf.cnf
archivos en el árbol TeX. Uno está en el nivel superior, el otro está en texmf-dist
. La salida de
kpsewhich -a texmf.cnf
en mi máquina está
/usr/local/texlive/2022/texmf.cnf
/usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf
Puede que haya más archivos de este tipo, pero lo esencial es saber que se leen en el orden mostrado por kpsewhich -a
.
Los valores de las variables que se establecen en un archivo sonnoanulado por archivos posteriores. Hay una recomendación en el archivo "principal" (pero leído por última vez), a saber
% 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]
"NO UNA COPIA DE TODO" se refiere a no agregar todas las variables, sino solo aquellas cuyo valor necesita cambiar. Si agrega todo, la inicialización sería más lenta, porque sería necesario leer y descartar muchos valores.
Si dices en el texmf.cnf
archivo de nivel superior
shell_escape_commands =
no se permite ningún programa externo en el shell restringido. Las variables no se establecen de forma incremental: las líneas posteriores que comienzan con ese valor se ignoran.