arara가 포함된 TexStudio; extractbb를 찾을 수 없습니다

arara가 포함된 TexStudio; extractbb를 찾을 수 없습니다

의 도움을 받아이전 질문 TexStudio 및 arara, TexStudio 안에서 arara를 시작할 수 있었습니다(야!). 그러나 Xelatex 컴파일(방금 언급한 URL의 두 번째 예제 코드)을 실행하는 동안 다음 오류 메시지가 표시됩니다(컴파일이 완료되지 않았습니다).

(/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존재하며 (내 컴퓨터에서는) 다음 위치에 있습니다./usr/local/texlive/2022/bin/x86_64-linux/extractbb

그냥 추측해 보겠습니다. 이것이 경로( 'I can't find file `"|extractbb --version')의 문제가 아니라 아마도 대신 쉘 권한( runpopen command not allowed : extractbb)의 문제일 가능성이 있습니까??? 수정 방법에 대한 제안을 주시면 감사하겠습니다!

------편집, texmf.cfg에 관한 David Carlisle의 의견을 따르세요----

내 "개인" texmf.cfg에 대한 유일한 사용자 정의는 다음을 추가하는 것입니다.

shell_escape_commands = pagelayoutapi

반면에변경되지 않은,"일반" texmf.cfg는 /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf다음을 나타냅니다.

% 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,\

/usr/local/texlive/2022/texmf.cnf편집 --egreg의 변경 사항이 실제로 문제를 해결했지만 지침(파일 내의 주석으로 제공됨)이 반대이기 때문에 egreg 의 답변에 대한 응답을 다시 살펴보았습니다. 다음 위치에 있는 모든 원래 줄은 다음과 같습니다 /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]
%

제가 이 훈계를 어떻게든 잘못 해석했는지(--> 전체 내용을 복사하지 마십시오), 아니면 그러한 교육적 설명 자체에 결함이 있는지 알고 싶어서 이 대화를 계속하고 있습니다.

답변1

그것은 확실히 당신의 수정 잘못입니다. 와 함께

shell_escape_commands = pagelayoutapi

당신은 허용하고 있습니다오직pagelayoutapi제한된 쉘 탈출의 애플리케이션 . 당신이 시도한다면

kpsewhich --var-value shell_escape_commands

명령줄에서 보면

pagelayoutapi

(방금 내 컴퓨터에서 시험해 보았습니다).

상위 레벨 파일을 수정하는 경우 전체 목록을 복사하여 추가해야 합니다 texmf.cnf.

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

독서는 어떻게 texmf.cnf이루어지나요?

texmf.cnfTeX 트리에는 일반적으로 두 개의 파일이 있습니다 . 하나는 최상위 수준에 있고 다른 하나는 에 있습니다 texmf-dist. 의 출력

kpsewhich -a texmf.cnf

내 컴퓨터에는

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

이러한 파일이 더 있을 수 있지만 꼭 알아야 할 것은 에 표시된 순서대로 읽힌다는 것입니다 kpsewhich -a.

파일에 설정된 변수의 값은 다음과 같습니다.~ 아니다이후 파일에 의해 재정의됩니다. "기본"(그러나 마지막으로 읽은) 파일에는 권장 사항이 있습니다.

% 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]

"전체의 복사본이 아님"은 모든 변수를 추가하는 것이 아니라 값을 변경해야 하는 변수만 추가하는 것을 의미합니다. 모든 것을 추가하면 많은 값을 읽고 삭제해야 하므로 초기화 속도가 느려집니다.

texmf.cnf최상위 파일 에서 말하면

shell_escape_commands =

제한된 쉘에서는 외부 프로그램이 허용되지 않습니다. 변수는 증분적으로 설정되지 않습니다. 해당 값으로 시작하는 이후 줄은 무시됩니다.

관련 정보