$PATH의 명령이 실행되지 않고 Debian 12에서 "ln" 링크가 작동하지 않습니다.

$PATH의 명령이 실행되지 않고 Debian 12에서 "ln" 링크가 작동하지 않습니다.

컴퓨터 시스템은 Debian 12입니다. LaTeX를 업데이트해야 하기 때문에 명령을 시도 sudo tlmgr update --all했는데 sudo: tlmgr: command not found. 하지만 which tlmgr돌아가서 /usr/local/texlive/2023/bin/x86_64-linux/tlmgr정말 sudo /usr/local/texlive/2023/bin/x86_64-linux/tlmgr update --all일하고 있어요. 그러나 sudo echo $PATH반환된

/home/usr1/.local/bin:/usr/local/texlive/2023/bin/x86_64-linux:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

포함되어 있는데 왜 반환되는지 /usr/local/texlive/2023/bin/x86_64-linux:이해할 수 없습니다 .sudo tlmgr update --allsudo: tlmgr: command not found

다음을 통해 심볼릭 링크를 만들었지 sudo ln -s /usr/local/texlive/2023/bin/x86_64-linux/tlmgr /usr/bin/tlmgrsudo tlmgr update --all반환됩니다 .

"wndws" is not exported by the TeXLive::TLUtils module
Can't continue after import errors at /usr/bin/tlmgr line 100.

확인해보니 ls -l /usr/bin/tlmgr1결과가 나왔어요 lrwxrwxrwx 1 root root 46 Nov 2 11:30 /usr/bin/tlmgr -> /usr/local/texlive/2023/bin/x86_64-linux/tlmgr. 맞는 것 같습니다.

왜 추가해야 하며 tlmgr/usr/bin/작동하지 않습니까 sudo tlmgr update --all?

답변1

분명히 /usr/local/texlive/2023/bin/x86_64-linux/tlmgr$0를 (셸 용어로) 살펴봄으로써 LaTeX 설치 위치를 결정하십시오. 전체 경로로 실행하면 설치의 나머지 부분을 파악 /usr/local/texlive/2023/하고 필요한 모든 구성 요소의 올바른 버전을 찾는 것이 쉽습니다.

그러나 심볼릭 링크를 사용하면 이것이 무너집니다. 단순히 필요한 것을 찾을 수 없거나 Debian 12의 표준 패키지 버전의 LaTeX가 설치되어 있는 경우 분명히 더 많은 것을 갖기보다는 검색 /usr하고 /usr/share/texlive찾은 다음 사용하려고 할 수 있습니다. 데비안 표준 버전보다 기능이 향상되었습니다./usr/share/texlive/tlpkg/TeXLive/TLUtils.pm/usr/local/texlive/2023/[...something...]/TLUtils.pm

당신이 본대로 :

grep wndws /usr/share/texlive/tlpkg/TeXLive/TLUtils.pm

아무런 결과도 생성되지 않았으므로 분명히 아무 것도 가져오려고 하지 않습니다 wndws.tlmgr

일반적으로 말해서, 자신만의 가방을 만드는 것이 아니라면 꼭 필요한 경우가 아니면 *.deb가방에 물건을 넣지 마세요 . /usr/bin/대신 /usr/local/bin.

이 특별한 경우에는 tlmgr심볼릭 링크 대신 간단한 래퍼 스크립트를 사용해야 합니다. 왜냐하면 심볼릭 링크가 시작되는 경로에 민감하기 때문입니다. 따라서 /usr/local/bin/tlmgr다음을 사용하여 만듭니다.

#!/bin/sh
exec /usr/local/texlive/2023/bin/x86_64-linux/tlmgr "$@"

그런 다음 실행 가능하게 만드는 데 사용하십시오 chmod a+x /usr/local/bin/tlmgr.

( exec이것은 초기에 프로세스 목록을 복잡하게 만드는 추가 쉘 프로세스를 방지하고 "$@"스크립트에 제공된 모든 인수가 tlmgr변경 없이 실제 인수로 전달되는 것을 방지합니다.)

관련 정보