
저는 루분투 11.10을 사용하고 있습니다. TeXlive 2011이 전체 설치되어 있습니다.
방금 TeXlive 2013 실행 스크립트를 설치했습니다 install-tl
. 모든 것이 괜찮았다. 나는 작은 계획을 선택합니다. 괜찮아요.
그래서 따르면가이드우리는 이렇게 해야 합니다:
설치가 완료된 후 TeX Live 바이너리 디렉터리를 PATH에 추가해야 합니다. 단, Windows에서는 설치 프로그램이 이를 처리합니다. 예를 들어:
PATH=/usr/local/texlive/2013/bin/i386-linux:$PATH
i386-linux 대신 쉘 구문, 설치 디렉토리 및 바이너리 플랫폼 이름을 사용하십시오.
여기까지는 문제 없습니다. 나는 나의 것을 변경했고 터미널에서 $PATH
실행할 때 나는 얻었습니다.pdflatex --version
pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013) kpathsea 버전 6.1.1
하지만 마지막 제안을 처리하는 방법을 알고 싶습니다.
특정 시스템에 TeX가 여러 개 설치되어 있는 경우, 둘 사이를 전환하려면 검색 경로를 변경해야 합니다.
그렇게하는 방법?
답변1
Ubuntu/Debian에서 제공하는 TeX Live와 함께 바닐라 TeX Live 2014 및 2015와 같이 컴퓨터에 TeX가 세 개 설치되어 있다고 가정합니다. 세 가지 배포판에 대한 바이너리는 다음 위치에 있습니다.
/usr/local/texlive/2014/bin/<arch>
/usr/local/texlive/2015/bin/<arch>
/usr/bin
어디에 <arch>
있을 수도 있고 i386-linux
, x86_64-linux
컴퓨터의 하드웨어 아키텍처와 관련된 다른 문자열일 수도 있습니다.
PATH
변수를 다음과 같이 설정하면
export PATH=/usr/local/texlive/2015/bin/i386-linux:$PATH
파일 에 .profile
또는 파일을 추가하는 방법 /etc/profile.d
(권장)을 사용하여 호출합니다.
pdftex --version
쉘에서 표시됩니다
pdfTeX 3.14159265-2.6-1.40.16 (TeX Live 2015)
kpathsea version 6.2.1
[...]
그리고 당신은 모든 TeX 프로그램이 다음에 위치한 트리를 사용할 것이라고 확신합니다.
/usr/local/texlive/2015
이는 모든 TeX Live 프로그램이 연결된 라이브러리가 작동하는 방식 때문입니다 kpathsea
. 이는 호출된 바이너리가 있는 디렉터리를 기반으로 여러 런타임 환경 변수를 설정합니다.
쉘에서 다음과 같은 개별 호출을 수행하여 이를 확인할 수 있습니다(다시 말하지만, <arch>
시스템 아키텍처에 해당하는 문자열을 사용하십시오).
kpsewhich plain.tex
/usr/local/texlive/2014/bin/x86_64-linux/kpsewhich plain.tex
/usr/bin/kpsewhich plain.tex
그러면 세 가지 다른 답변을 받게 됩니다.
/usr/local/texlive/2015/texmf-dist/tex/plain/base/plain.tex
/usr/local/texlive/2014/texmf-dist/tex/plain/base/plain.tex
/usr/share/texlive/texmf-dist/tex/plain/base/plain.tex
프로그램은 도서관 kpsewhich
에 대한 공개 인터페이스입니다 kpathsea
.
PATH
GUI 응용 프로그램이 바닐라 TeX Live 바이너리 디렉토리를 볼 수 있는 방식으로 설정되지 않으면 큰 문제가 발생할 수 있습니다.~ 전에 /usr/bin
. 내 테스트 가상 머신에는 다음을 포함하는 texlive.sh
파일 을 배치합니다./etc/profile.d
export PATH=/opt/texbin:${PATH}
/opt/texbin
다음을 수행하여 컴퓨터에 있는 가장 최근의 TeX Live를 가리키는 심볼릭 링크를 만듭니다.
sudo rm /opt/texbin
sudo ln -s /usr/local/texlive/2015/bin/x86_64-linux /opt/texbin
이런 식으로 echo $PATH
다음과 같은 내용이 표시됩니다.
/opt/texbin:...:/usr/bin:...
이후 파일이 제공되지 않으면 /etc/profile.d
앞에 내용이 추가됩니다 PATH
. 중요한 것은 그 /opt/texbin
이전이다 /usr/bin
.
TeX Live의 새 릴리스에서는 기호 링크만 재설정하고 다른 작업은 수행하지 않아도 됩니다. GUI 프로그램과 셸이 올바른 바이너리를 찾습니다. 그러나 위에서 볼 수 있듯이 다른 TeX 배포판에서도 프로그램을 계속 실행할 수 있습니다.
기억하세요: 바닐라 TeX Live를 설치할 때,절대"시스템 디렉터리에 심볼릭 링크 생성" 옵션을 "예"로 설정합니다. 특히 업그레이드 시 TeX Live가 제공하는 배포판이 대신하게 되는 GNU/Linux 시스템에서는 "No"로 설정되어 있는지 확인하십시오.
답변2
@egreg의 답변에 감사드리며 TL 2017을 사용하는 책을 썼지만 TL 2019를 사용하여 패키지 유지 관리를 원했기 때문에 이를 기반으로 자체 솔루션을 기반으로 했습니다.
그러나 Debian 기반 시스템은 컴파일 방식으로 인해 이 솔루션에서 제대로 작동하지 않으므로 다음 sudo
위치에서 솔루션과 BASH 스크립트를 만들었습니다.https://github.com/ServusCarolus/tl-switch
아래에는 이 게시물 현재 저장소에 있는 README.md 파일이 있습니다. 주요 내용은 다음과 같습니다.
TexLive 2019용 넷 설치 프로그램을 다운로드하고 기본값 아래에 루트로 설치했습니다.
/usr/local/texlive/2019
나는 루트와 일반 사용자 계정에 대해 이 작업을 수행했습니다.
sudo mkdir -p /opt/tex/root sudo mkdir /opt/tex/charles sudo chown charles:charles /opt/tex/charles
나는 루트
.bashrc
와 내 사용자를.profile
다음과 같이 수정했습니다.if [ -d "/opt/tex/$USER/bin" ] ; then PATH="/opt/tex/$USER/bin:$PATH" fi
32비트 컴퓨터와 64비트 컴퓨터에 아래 README에 표시된 대로 스크립트를 설치했습니다. 스크립트는 두 바이너리 디렉토리 유형을 모두 찾는 방법을 알고 있습니다.
일반 사용자로서 간단히 tl-switch yes
및 를 입력하여 루트가 되지 않고도 TL 배포판을 전환할 수 있습니다 tl-switch no
. 새 릴리스가 나타나면 tl-switch yes 2020
다음을 통해 전환할 수 있습니다.
위의 답변과 유사하게 스크립트는 사용자의 쓰기 가능한 디렉터리에 있는 바닐라 TL 배포판에 대한 심볼릭 링크를 생성하거나 파괴합니다. /opt/tex
그러나 프로세스에서 일부 오류 검사를 수행하여 시간을 절약합니다.
나는 루트를 통해 sudo su
동일한 방식으로 배포판을 전환하고 tlmgr
일반 사용자의 컨텍스트를 변경하지 않고 업데이트하고 유지 관리를 수행할 수 있습니다. 또한 이 접근 방식은 내가 원하는 만큼의 사용자 및 TL 배포로 확장됩니다.
아래에서는 사람들마다 요구 사항이 다르기 때문에 가능한 다른 솔루션에 대해 설명합니다. 그러나 적어도 이 접근 방식은 sudo
및 secure_path
. 좋은 기반과 프레임워크를 제공해 주신 @egreg에게 다시 한 번 감사드립니다.
tl-스위치
/usr/local/texlive에 설치된 바닐라 TeXLive와 Debian, Ubuntu, Mint 등과 같은 시스템에 설치된 TeXLive의 Linux 배포판 버전 간에 컨텍스트를 전환합니다.
스크립트와 설치는 다음 답변을 기반으로 합니다. 다중 TeXlive 설치
주의 사항: 에 대한 한마디sudo
명령 검색 경로 /etc/profile.d
이전에 바닐라 TL 경로에 대한 심볼릭 링크를 넣기 위해 쉘 스크립트를 생성하더라도 명령은 기본적으로 링크를 따르지 않습니다./usr/bin
sudo
문제는 데비안과 친구들 sudo
이 secure_path
. 사용자의 선호도에 따라 이 문제에 대한 다양한 해결 방법이 있습니다. 보다:
https://stackoverflow.com/questions/257616/why-does-sudo-change-the-path
바닐라 TL을 루트로 설치하고 이 스크립트를 사용할 때, 예를 들어 sudo su
실행하기 전에 컨텍스트를 수퍼유저로 전환하려면 다음을 입력해야 합니다 tlmgr
. 대안은 다음과 같습니다:
최소 침습적 경로, 예:
sudo env PATH=$PATH tlmgr -gui
아래의 공통 그룹 경로를 사용하고 를 사용하지 마십시오 . 그러나 를 통해 설치한 경우와 마찬가지로
sudo
디렉토리가 아래에 존재하도록 설정하십시오 ./usr/local/texlive/
sudo
sudo
위의 링크에서 설명한 것처럼 다양한 방법으로 재정의하세요 . YMMV.
위의 문제에 관계없이 일반적인 사용은 예상대로 작동합니다.
파일을 편집할 때 주의하십시오. 예를 들어 sudo echo "$USER"
루트가 아닌 일반 사용자를 가리켜야 합니다. 이는 ~./
파일 경로 와 같은 바로가기를 피해야 함을 의미합니다 . 명확한 전체 경로를 사용해야 합니다.
의 GUI 인터페이스는 tlmgr
를 통해 실행될 때 루트가 소유한 파일을 생성하지 않지만 를 sudo
실행하는 동안 많은 데스크톱 통합 GUI 프로그램을 사용하지 않아야 합니다 sudo
. 그렇게 하면 홈 디렉토리 트리에 루트가 소유한 파일이 생성될 수 있습니다. 이는 사용자 프로그램이 정보를 제대로 저장하지 못하게 할 수 있습니다.
전체 컨텍스트 전환을 수행하려면 배포에 따라 su
또는 를 수행합니다.sudo su
설명: 그룹 만들기
문제를 피하는 또 다른 방법 sudo
은 TeXLive 설치를 모든 TeX 사용자가 쓸 수 있도록 만드는 것입니다. 여기서 문제는 여러 사용자가 설치에 개입하면 혼란이 발생할 수 있다는 것입니다. 완전성을 위해 다음을 포함합니다.
sudo addgroup texusers
sudo addgroup "$USER" texusers
sudo mkdir -p /usr/local/texlive
sudo chgrp -R texusers /usr/local/texlive
sudo chmod -R 2775 /usr/local/texlive
adduser와 addgroup은 Debian-isms입니다. 다른 배포판(그리고 Debian 기반 배포판도 마찬가지)에는 useradd
및 groupadd
. 해당 명령에 대해서는 매뉴얼 페이지를 참조하십시오. 따라서 대신 다음을 사용합니다.
sudo groupadd texusers
sudo usermod -a -G texusers "$USER"
그런 다음 texusers 그룹의 일부로 TL을 설치할 수 있습니다. 또한보십시오:https://www.tecmint.com/create-a-shared-directory-in-linux/
1단계: 바닐라 TL 설치
바닐라 TL을 설치하려면 다음을 참조하세요.https://www.tug.org/texlive/acquire.html
참고: 바닐라 TL을 설치할 때 심볼릭 링크를 설치하지 마십시오.
2단계: 디렉터리 생성
디렉토리 링크를 생성하기 위해 각 사용자에 대한 경로를 생성합니다.
sudo mkdir -p /opt/tex/root
sudo mkdir "/opt/tex/$USER"
sudo chown "$USER":$USER" "/opt/tex/$USER"
각 사용자에 대해 마지막 두 줄을 반복합니다. $USER를 각 사용자 이름으로 대체할 가능성이 높습니다. 예:
sudo mkdir /opt/tex/bob
sudo chown bob:bob /opt/tex/bob
3단계: 프로필 수정
우리는 이 조각을 각 사용자 .profile
와 루트에 넣습니다 .bashrc
.
if [ -d "/opt/tex/$USER/bin" ] ; then
PATH="/opt/tex/$USER/bin:$PATH"
fi
또 다른 접근 방식은 스니펫을 모든 사람의 에 넣은 .bashrc
다음 source .bashrc
모든 사람의 에 추가하는 것입니다 .profile
. 그러면 터미널을 열 때마다 경로 환경이 갱신됩니다. 또는 로그인 셸을 열도록 터미널을 설정할 수도 있습니다.
루트의 를 편집할 때 파일로 .bashrc
사용 sudo su
하거나 지정하는 것을 잊지 마십시오. /root/.bashrc
그렇지 않으면 대신 sudo nano ~/.bashrc
사용자의 .bashrc
파일을 참조합니다.
4단계: 스크립트 설치
저장소를 다운로드하거나 복제한 디렉터리로 이동하여 tl-switch
스크립트를 찾습니다. 그런 다음 다음을 입력합니다.
sudo cp ./tl-switch /usr/local/bin
chmod +x /usr/local/bin/tl-switch
이제 모든 사용자가 스크립트 실행에 액세스할 수 있습니다.
5단계: 재부팅
설치 절차가 완료된 후 TeXLive를 사용하기 전에 컴퓨터를 다시 시작하여 루트 및 사용자 경로가 제대로 업데이트될 수 있도록 하는 것이 좋습니다.
6단계: Vanilla TeXLive로 전환 및 전환
사용자(또는 루트)가 바닐라 TL 2019에 대한 액세스를 활성화하려면 다음을 입력하기만 하면 됩니다.
tl-switch yes
아래에 다른 설치를 지정하려면 /usr/local/texlive
다음을 사용하십시오.
tl-switch yes 2018
바닐라 TL을 비활성화하고 배포판 버전을 사용하려면 다음을 입력하면 됩니다.
tl-switch no
세션 도중에 컨텍스트를 변경해도 검색 경로는 변경되지 않습니다. 이 문제를 해결하는 한 가지 방법은 위의 3단계에서 언급되었습니다.
마지막 생각들
sudo su
이 방법의 즉각적인 단점은 예를 들어 실행하기 전에 컨텍스트를 수퍼유저로 전환 해야 한다는 것입니다 tlmgr
. 그 이점에는 사용자를 서로 격리하고 광범위한 시스템 수정 없이 컨텍스트를 변경할 수 있다는 점이 포함됩니다. 그러나 문제를 방지하려면 로그아웃하고 다시 로그인하기 전에 컨텍스트만 변경해야 합니다.