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. 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.1. 유틸리티 설치 ¶
- 설치된 우분투를 업그레이드 한다.
$ sudo apt update $ sudo apt upgrade
업그레이드 후에 exit 명령으로 창을 닫았다가 bash를 실행하여 다시 들어오는 것이 좋다. - 몇 가지 유틸리티를 설치한다. 다음 예시 중에서 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
이 단계에서,O
와L
을 차례로 눌러서 "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.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의 폰트 폴더 ¶
- Windows 폰트를 TeX에서 사용해야 할 것이다. 그러므로 다음과 같은 조치를 취해두는 것이 좋다.
$ sudo ln -s /mnt/c/Windows/Fonts /usr/local/share/fonts/windowsfonts
- 자신의 Windows에서의
%LOCALAPPDATA%
환경 변수에 할당된 문자열을 확인하여야 한다. 자신의 Windows (ubuntu가 아니라) 로그인 이름이 예컨대mini
라면, cmd에서echo %localappdata%
를 치면C:\Users\mini\AppData\Local
이라고 나올 것이다. 달라지는 것은 로그인 이름뿐인데, 이것은 아스키 문자로만 되어 있어야 안전하다. 윈도우즈 로그인 이름으로 한글을 쓰지 말자 - 이제 다음 명령을 하나 더 실행해 둔다. 아래 예시 문장에서 'mini'는 Windows 로그인 이름이다.
$ sudo ln -s /mnt/c/Users/mini/AppData/Local/Microsoft/Windows/Fonts /usr/local/share/fonts/winlocalfonts
5.4. 폰트 관련 알아둘 것 ¶
- 우분투에서 설치한 폰트는 TeX에서 사용가능. 예컨대 noto cjk를 다음처럼 설치하면 즉시 사용할 수 있다.
$ sudo apt install fonts-noto-cjk
- Windows에서 설치한 폰트도 즉시 사용 가능. 단, 윈도우즈 글꼴 정보가 보여주는 폰트의 "한글 이름"은 사용할 수 없다. otfinfo로 해당 글꼴 정보를 확인한 후에 사용하자. 예를 들어 HWP와 함께 설치되는 "한컴산뜻돋움"의 폰트 정보를 확인하기 위해
> otfinfo -a /mnt/c/Windows/Fonts/HANSANTTEUTDOTUM-REGULAR.ttf
해보면Han Santteut Dotum
이라는 이름을 알아낼 수 있다.
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 ¶
- TeXWorks나 TeXStudio 같은 레이텍 전용 에디터는 MiKTeX이나 TeXLive 설치 위치를 찾으려 하기 때문에 실행 파일을 찾지 못하는 문제가 있다.
- 명령행 컴파일은 문제없이 잘 될 것이므로 이를 이용하는 에디터를 활용하는 것이 좋다. 그런데 표준적인 윈도우즈 에디터는 이렇게 설치된 tex으로 컴파일한 synctex.gz 파일에서 적절한 위치를 찾아내지 못할 수 있다. (폴더를 지정하는 방법이 윈도우즈와 리눅스가 다르기 때문)
- 몇 가지 테스트해본 바에 의하면
- 개별 에디터의 설정 등에 대해서는 다른 페이지에서 토론할 일이다.
- VisualStudioCode를 WSL 모드에서 열려면, bash shell에서
code
명령으로 부르면 된다. 참고로 bash 셸을 여는 더 간단한 방법으로, 탐색기의 폴더에서 Shift-우클릭하였을 때 "이 폴더에서 리눅스 열기"를 선택할 수도 있다.- [JPG image (174.67 KB)]