설치하기Windows/WSLtexlive (rev. 1.34)

UEDRSPIHCRSSRSS

설치하기Windows/WS Ltexlive

Windows SubSystem for Linux (이하 WSL) 환경에서 texlive를 설치하고 운영하는 방법을 설명한다. 아래 설명은 Windows 10 version 1903을 기준으로 작성하였다.


1. 목적

  • Windows 시스템에서 texlive win32가 아니라 Linux용 texlive를 설치 운용한다.
  • 본격적으로 Linux를 쓰고자 하는 것은 아니다. tex의 운용은 모두 windows 사이드에서 작업하려 한다.
  • texlive는 ubuntu가 제공하는 debian 패키지 버전이 아니라 ctan의 최신 버전을 설치할 것이다.
  • 일반적으로 말해서 linux의 binaries가 더 안정적이다. win32에서 일어나는 자잘한 문제들을 피해가는 데 이보다 좋은 방법은 없다. 특히 까닭없이 tex 프로그램을 차단하는 백신 프로그램의 괴롭힘에서 벗어날 수 있다.

2. 준비

2.1. WSL 활성화

  1. WSL을 활성화해야 한다. PowerShell관리자 권한으로 열고(메뉴에서 "PowerShell"이라고 친 다음 "Windows PowerShell"이 나타나면 거기서 오른쪽 클릭하여 "관리자 권한"으로 연다) 다음 명령을 써넣는다.
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    
  2. 엔터를 치면 설정이 이루어지고 로그아웃 또는 재부팅을 요구할 것이다. 엔터를 눌러서 재부팅한다.

2.2. texlive iso image 다운로드

  • 네트워크 설치도 물론 가능하지만 일을 간단히 하기 위하여 iso image로 설치하려 한다.
  • CTAN mirror의 systems/texlive/images 폴더에서 texlive iso를 다운로드받는다.
  • 다운로드받은 상태로 둔다.

2.3. 사용자 path 추가

  • 우분투에 설치되는 tex 실행명령들을 windows에서 부르기 위해 폴더 하나를 만들고 path에 넣어둔다.
  • C:\texscripts라는 이름의 폴더를 만든다.
  • Windows 설정의 검색 창에 "고급 시스템 설정"이라고 써넣으면 고급 시스템 설정 보기를 열 수 있다.
  • *환경변수*, *사용자 변수* *Path* 편집을 눌러서 "새로 만들기"로 C:\texscripts를 추가하고 확인을 누른다.


3. Ubuntu 설치

  • WSL에 섶치할 수 있는 Linux는 몇 가지 버전이 있다. 그 중에서 가장 만만한 ubuntu를 선택하자.
  • Microsoft Store를 열어서 "Ubuntu"로 검색하면 둘 또는 세 개 정도의 앱이 보인다. 최신 버전인 듯한 Ubuntu 20.04 LTS를 다운로드받아 설치하자.
  • 앞서 WSL을 활성화해두었다면 우분투가 설치되면서 id와 password를 요구할 것이다. 적절하게 대응하면 된다. 이 password는 우분투 쪽에서 sudo 명령을 싫애할 때 필요하다.
  • ubuntu 설치가 완료되면 Windows 어디에서나 bash라는 명령을 실행할 수 있게 된다. WSL의 리눅스란 bash 셸에서 운용하는 것이라고 생각해도 무방하다.

4. texlive 설치

4.1. 유틸리티 설치

  1. 설치된 우분투를 업그레이드 한다.
    $ sudo apt update
    $ sudo apt upgrade
    
    업그레이드 후에 exit 명령으로 창을 닫았다가 bash를 실행하여 다시 들어오는 것이 좋다.
  2. 몇 가지 유틸리티를 설치한다. 다음 예시 중에서 pygments는 minted 패키지를 위해서, default-jre는 arara를 위해서 설치하는 것이다. 이것이 무엇이고 어디에 쓰는 것인지 모른다면 설치하지 않아도 상관없다.
    $ sudo apt install build-essential python-pygments default-jre
    

4.2. texlive.iso 마운트

  • 윈도우즈의 다운로드 폴더로 가서, 다운로드 받아둔 texlive.iso를 우클릭하여 뜨는 메뉴에서 "탑재(mount)"를 누른다.
  • 그러면 탐색기가 가상 DVD 드라이브 위치로 변하는데, 이 드라이브 이름을 주소창에서 확인하여 둔다. 대부분의 경우는 D: 일 것이다. (이 폴더의 파일 아무 것도 건드리지 않는다. 우리는 Windows에 이것을 설치하려는 것이 아니므로 탑재만 해두는 것이다.)
  • bash 셸에서 다음 명령을 실행하자. (드라이브가 D일 경우)
    $ sudo mkdir /mnt/d
    $ sudo mount -t drvfs d: /mnt/d
    

4.3. texlive 설치

  • bash 셸로 돌아와서, 다음 순서로 명령을 입력하자.
    $ cd /usr/local
    $ sudo mkdir texlive
    $ sudo chown -R $(whoami) texlive/
    
    이것은 /usr/local/texlive 폴더의 권한을 사용자에게 부여하는 것으로 앞으로 texlive 관련 명령을 내릴 때 sudo를 쓰지 않기 위함이다.
  • 이제, 인스톨 명령을 다음과 같이 내린다.
    $ /mnt/d/install-tl
    
    이 단계에서, OL을 차례로 눌러서 "create symlinks in standard directories"라는 것을 활성화하라는 것이다. 질문에 다 Yes로 답하고 R을 눌러서 인스톨 화면으로 돌아온다. (Q가 아님)
  • I를 눌러서 인스톨을 시작한다. 설치 자체는 얼마 걸리지 않는다.
  • 설치 종료후 만약을 위해, 다음 명령을 꼭 한 번 실행해준다.
    $ sudo ln -s /usr/local/texlive/2020/bin/x86_64-linux/* /usr/local/bin
    
  • KTUG Private Repository 설정은 다음과 같이 한다.
    $ tlmgr option repository http://mirror.navercorp.com/CTAN/systems/texlive/tlnet
    $ tlmgr repository add http://ftp.ktug.org/KTUG/texlive/tlnet ktug
    $ tlmgr pinning add ktug "*"
    
  • 다음 명령을 실행하여 잘 되었는지 확인한다.
    $ tlmgr install jiwonlipsum
    
  • 업데이트 한 번 해주자.
    $ tlmgr update --all --self
    


5. 폰트 문제

5.1. texmf.cnf 수정

  • 다음 명령을 실행하면 texmf.cnf를 수정할 수 있다.
    $ nano `kpsewhich texmf.cnf`
    
  • 다음과 같은 내용을 이 파일에 적어넣고 저장한다.
    OSFONTDIR = {/usr/share/fonts//;/usr/local/share/fonts//;~/.fonts//}
    

5.2. texlive fonts 폴더

  • TeX Live에 설치되는 폰트의 활용을 위해 다음 명령을 내려둔다.
    $ sudo ln -s /usr/local/texlive/2020/texmf-dist/fonts/truetype /usr/local/share/fonts/truetype
    $ sudo ln -s /usr/local/texlive/2020/texmf-dist/fonts/opentype /usr/local/share/fonts/opentype
    

5.3. Windows의 폰트 폴더

  1. Windows 폰트를 TeX에서 사용해야 할 것이다. 그러므로 다음과 같은 조치를 취해두는 것이 좋다.
    $ sudo ln -s /mnt/c/Windows/Fonts /usr/local/share/fonts/windowsfonts
    
  2. 자신의 Windows에서의 %LOCALAPPDATA% 환경 변수에 할당된 문자열을 확인하여야 한다. 자신의 Windows (ubuntu가 아니라) 로그인 이름이 예컨대 mini라면, cmd에서 echo %localappdata%를 치면 C:\Users\mini\AppData\Local이라고 나올 것이다. 달라지는 것은 로그인 이름뿐인데, 이것은 아스키 문자로만 되어 있어야 안전하다. 윈도우즈 로그인 이름으로 한글을 쓰지 말자
  3. 이제 다음 명령을 하나 더 실행해 둔다. 아래 예시 문장에서 'mini'는 Windows 로그인 이름이다.
    $ sudo ln -s /mnt/c/Users/mini/AppData/Local/Microsoft/Windows/Fonts /usr/local/share/fonts/winlocalfonts
    

5.4. 폰트 관련 알아둘 것

  1. 우분투에서 설치한 폰트는 TeX에서 사용가능. 예컨대 noto cjk를 다음처럼 설치하면 즉시 사용할 수 있다.
    $ sudo apt install fonts-noto-cjk
    
  2. Windows에서 설치한 폰트도 즉시 사용 가능. 단, 윈도우즈 글꼴 정보가 보여주는 폰트의 "한글 이름"은 사용할 수 없다. otfinfo로 해당 글꼴 정보를 확인한 후에 사용하자. 예를 들어 HWP와 함께 설치되는 "한컴산뜻돋움"의 폰트 정보를 확인하기 위해
    > otfinfo -a /mnt/c/Windows/Fonts/HANSANTTEUTDOTUM-REGULAR.ttf
    
    해보면 Han Santteut Dotum이라는 이름을 알아낼 수 있다.

6. Windows 실행 스크립트

6.1. 컴파일 명령과 유틸리티

  • 이제 윈도우즈로 돌아와서, cmd 창을 하나 열고 아까 path에 포함하였던 c:\texscripts 폴더로 이동하자.
    > cd \texscripts
    
  • 다음과 같은 내용으로 된 ls.cmd라는 파일을 하나 만든다.
    @echo off
    bash --login -c "%~n0 %*"
    
  • cmd에서 ls 명령을 내려서 정상 동작하는지 확인하라. 그런 다음 이 파일을 다음과 같이 복사한다.
    > copy ls.cmd tlmgr.cmd
    > copy ls.cmd pdflatex.cmd
    > copy ls.cmd latex.cmd
    > copy ls.cmd xelatex.cmd
    > copy ls.cmd lualatex.cmd
    > copy ls.cmd latexmk.cmd
    
  • 더 원하는 tex 명령이 있으면 위와 같은 방식으로 복사하면 된다. 즉, 파일 내용을 똑같고 이름만 다른 것이다. 이밖에 kpsewhich, fc-list, otfinfo, arara와 같은 유틸리티도 같은 방법으로 복사해서 사용한다.
  • 윈도우즈의 powershell 또는 cmd에서 이 스크립트를 이용하여 컴파일할 수 있다.

6.2. texdoc

  • texdoc은 pdf viewer가 필요하다. 원한다면 X11을 설치하고 evince와 같은 뷰어를 이용할 수 있다. 그러나 이 페이지에서는 X11의 추가설치 없이 진행해보려 한다.
  • SumatraPDF는 필수이다. 반드시 설치한다. 설치 위치를 잘 확인해두어야 하는데, 설치 방법에 따라 각각 다 다를 수 있다. 예컨대 C:\Users\mini\AppData\Local\SumatraPDF가 그 설치 위치라고 가정한다. (여기에서 mini는 사용자의 로그인 이름이다. 아니면 C:\Program Files\SumatraPDF일 수도 있으며, 포터블 버전을 가지고 있다면 전혀 다른 위치일 수도 있다.)
  • c:\texscripts 폴더에 texdoc.cmd를 다음과 같은 내용으로 작성한다. (위의 다른 명령과 조금 다르다.)
    @echo off
    bash --login -c "cd ~ && export PDFVIEWER=/mnt/c/Users/mini/AppData/Local/SumatraPDF/SumatraPDF.exe && texdoc %*"
    
    SumatraPDF.exe가 있는 path를 자신의 상황에 맞게 수정해서 적어넣어야 한다.
  • 이제 sumatrapdf로 문서를 읽을 수 있다. cmd 또는 powershell에서 texdoc lshort-ko라고 명령을 내려보자.

7. 에디터와 synctex

  • TeXWorksTeXStudio 같은 레이텍 전용 에디터는 MiKTeX이나 TeXLive 설치 위치를 찾으려 하기 때문에 실행 파일을 찾지 못하는 문제가 있다.
  • 명령행 컴파일은 문제없이 잘 될 것이므로 이를 이용하는 에디터를 활용하는 것이 좋다. 그런데 표준적인 윈도우즈 에디터는 이렇게 설치된 tex으로 컴파일한 synctex.gz 파일에서 적절한 위치를 찾아내지 못할 수 있다. (폴더를 지정하는 방법이 윈도우즈와 리눅스가 다르기 때문)
  • 몇 가지 테스트해본 바에 의하면
    • SumatraPDF로부터 Windows gvim 또는 notepad++로의 inverse search는 잘 작동한다. forward search는 조금 복잡한 설정을 요구하지만 불가능하지는 않아 보인다.
    • VisualStudioCode를 Remote-WSL 모드에서 실행하면 내장 뷰어나 sumatrapdf 어떤 것으로도 잘 동작하는 것으로 보인다. 약간의 설정을 수동으로 조작해야 할 수 있다.
  • 개별 에디터의 설정 등에 대해서는 다른 페이지에서 토론할 일이다.

  • VisualStudioCode를 WSL 모드에서 열려면, bash shell에서 code 명령으로 부르면 된다. 참고로 bash 셸을 여는 더 간단한 방법으로, 탐색기의 폴더에서 Shift-우클릭하였을 때 "이 폴더에서 리눅스 열기"를 선택할 수도 있다.
    • code-edit.jpg
      [JPG image (174.67 KB)]


8. 기타 사항

  • 2017년의 공주대 워크숍에서 WSL texlive에 관하여 다룬 슬라이드가 있다. (외부링크)
  • 리눅스 쪽에서 GUI 앱을 써서 TeX 관련 작업을 하려면 (에디터, 뷰어, 등) X11과 한글입력기를 설치하고 설정해야 한다. 이 문제는 위의 슬라이드에 간략히 제시되어 있음. 리눅스의 TeXworks를 실행할 수 있다는 장점이 있는데, X11이 WSL에 통합되어 있지 않으므로 권장하기는 꺼려진다.