NetBSD 공작소

TeX Live 2008 패키지

pkgsrc에서 쓸 수 있는 텍은 아직도 teTeX-3.0이다. TeX Live가 나온지 수 년이 지나 이제 대부분의 시스템에서 텍의 표준으로 자리잡았건만, NetBSD 사용자들은 여전히 XeTeX이나 LuaTeX은 구경도 못 하고 있다. 이 점은 다른 BSD도 별반 다르지 않다. pkgsrc를 쓰고 있는 DragonFly BSD는 차치하고서라도, FreeBSD Ports에서조차 여전히 TeX Live는 찾아볼 수 없고, 그나마 사정이 좀 나은 OpenBSD는 TeX Live 2007로 버티고 있다. 텍이란게 워낙 엔진 자체는 별 변화가 없고, LuaTeX 같은 새로운 엔진도 하위 호환성을 중시하다보니, 몇 년 전 버젼으로도 별 어려움없이 버틸 수 있기 때문일 것이다.

문제는 엔진이 아니라 패키지들이다. ko.TeX처럼 활발히 개발되고 있는 패키지를 쓰고 있다면 종종 해당 패키지에서 필요로 하는 다른 패키지들을 업그레이드해야 할 필요가 생긴다. 특히 최신의 ko.TeX은 TeX Live 2007 이상이 필요하다고 하여, teTeX-3.0으로도 잘 돌아가는 tex-dhucs로 만족하며 지내야했다.

그러던 차에 새 ko.TeX과 LuaTeX에 욕심이 생겨 결국 TeX Live 2008을 pkgsrc에 넣기로 맘을 먹었다. 배포하는 파일을 찾아보니 TeX Live 2007때보다는 그래도 배포판 개발자들을 좀 더 배려하는 분위기가 조성된 것 같긴 한데… 파일 하나가 900MB에 달한다! 바이너리 파일을 제외한 나머지를 모두 통째로 묶어놓았는데, 이걸 한 패키지로 만들면 내 T23에서는 압축 풀고 설치하는 데에만 반나절은 걸릴 것이었다. 결국 문서 파일과 소스, 비교적 잘 안 쓰이는 파일들을 제외하고 texlive-texmf-base로 만들었는데, 그래도 여전히 300MB를 훌쩍 넘는다. 그래도 바이너리 빌드에 필요한 소스 파일은 20MB 남짓한 파일로 따로 제공하고 있어서 비교적 용이했다. 결과물은 일단 pkgsrc-wip에 넣어 두었으며, web2c 패키지를 설치하면 latex, pdftex 등의 명령을 쓸 수 있다.

pkgsrc-wip은 pkgsrc work-in-progress로 아직 개발 중인 패키지들을 넣어 두는 곳이다. 여기 있는 패키지들은 충분한 검토와 테스트를 거친 후 pkgsrc에 정식 패키지로 들어간다. 대신 패키지들의 질은 천차만별이다. 바로 pkgsrc로 옮길 수 있는 완벽한 패키지부터, 만들다 만 상태에서 괜히 설치했다가 시스템 말아먹기 딱 좋은 패키지까지 다 있다고 보면 된다. 그렇다고 TeX Live 패키지들이 불안하다는 것은 아니고… NetBSD와 맥 오에스 텐에서 실험해보니 잘 동작했다. 다만 300MB도 좀 큰 것 같아서, 필요한 파일들을 좀 더 엄격히 선별해서 넣을 예정이다. 바이너리는 텍이나 라텍 엔진들 외에는 아직 패키지로 만들지 않았는데, 이것도 추가로 만들 필요가 있다. dvipsk 등이 빠져 있어서 텍 파일에서 포스트스크립트를 만들 수는 없지만, pdftex이 잘 동작하므로 바로 PDF로 만드는 것이 가능하다.

이제 TeX Live를 쓸 수 있는 기반이 갖춰졌으므로 ko.TeX 패키지도 만들 수 있게 되었다.

NetBSD 씨디 만들기

새로 나온 NetBSD 5 베타버젼을 써 보려면, 소스로부터 직접 빌드를 해야 한다. 아마도 릴리스 후보가 나오는 시점이 되면 씨디 이미지도 배포가 되겠지만, 이제 막 안정 브랜치가 나온지라 얼마간 시간이 걸릴 것이다. 어차피 오픈 소스는 여기저기 뜯어 고쳐가며 써야 제맛이니, 이번 기회에 NetBSD 5 베타도 써 볼 겸, NetBSD 소스를 가지고 NetBSD를 빌드하는 방법을 알아보자.

소스 받기

NetBSD 소스는 CVS로 받는 것이 가장 쉽다. NetBSD CVS 써버는 SSH 접속을 지원하므로, 환경 변수 CVS_RSH을 “ssh”로 설정해서 cvs(1) 명령이 SSH를 이용하도록 하자.

% export CVS_RSH="ssh"

CVS 써버는 anoncvs.NetBSD.org를 쓰면 되는데, 가까운 곳에 미러 싸이트가 있으면 그걸 이용해도 좋다.

% export CVSROOT="anoncvs@anoncvs.NetBSD.org:/cvsroot"

이제 cvs(1) 명령으로 netbsd-5 브랜치를 받아오기만 하면 된다.

% cvs co -r netbsd-5 -P src

-r netbsd-5 옵션을 주지 않으면 개발 브랜치(netbsd-current)를 받아 온다. NetBSD 소스는 커널뿐만 아니라 각종 라이브러리와 프로그램, 개발 툴을 모두 포함하고 있기 때문에 크기가 수백메가는 가뿐히 넘는다. 처음으로 받는 것이라면 제법 시간이 걸릴 것이다. 그래도 일단 한 번 받아놓으면, 이후로는 cvs(1)가 알아서 바뀐 내용만을 가져오므로 그다지 오래 걸리지 않을 것이다.

파일 이름이 스크롤되는 것을 한참 보고 나면 src란 디렉토리가 생겨 있을 것이다. 그 디렉토리로 이동하면 NetBSD를 빌드할 준비가 끝난 것이다.

% cd src

빌드하기

NetBSD를 빌드하는 것은 매우 간단하다. NetBSD 소스의 최상위 디렉토리에는 build.sh라는 스크립트가 있는데, 이 스크립트에 몇몇 옵션만 주면 모든 과정을 알아서 처리해준다. NetBSD 전체를 빌드하려면 다음과 같이 한다.

% ./build.sh -O ../obj -T ../tools -U release

-O 옵션은 컴파일한 결과물이 저장될 디렉토리를 가리킨다. -O ../obj 옵션을 사용하면 NetBSD 소스 디렉토리(src)에는 아무런 파일도 생기지 않고, 새로 생성되는 모든 파일은 ../obj에 들어간다.

-T 옵션은 NetBSD 컴파일에 쓰일 툴을 저장할 디렉토리이다. NetBSD는 주어진 툴(컴파일러, 링커 등)로 일단 NetBSD 용 툴을 만들고, 새로 만들어진 툴을 이용해서 자신을 빌드하는 방식으로 되어 있다. 복잡해 보이지만 나중에 크로스컴파일을 하게 되면 이 방식이 얼마나 유용한지 알게 될 것이다.

-U 옵션은 일반 사용자로 NetBSD를 빌드하는 경우에 필요한 옵션이다. root로 컴파일한다면(권장하지 않는다) 주지 않아도 무방하다.

빌드 시간은 컴퓨터 속도에 따라 다르지만, 인텔 코어 듀오 기종에서도 수십분은 족히 걸린다. 좀 오래된 컴퓨터라면 몇 시간 이상도 각오해야하니, 아예 신경끄고 다른 일을 하는 것이 속편하다.

빌드가 끝나면 씨디 이미지를 만들 차례이다. 이것 역시 build.sh가 간단히 해결해준다. 같은 명령으로 release 대신 iso-image를 만들라고만 하면 된다.

% ./build.sh -O ../obj -T ../tools -U iso-image

이 과정은 이미 있는 파일들로 씨디 이미지를 만들기만 하면 되므로 비교적 금방 끝난다. 다 끝난 후에는 obj 디렉토리 밑에서 iso 이미지를 찾을 수 있다. 이제 공씨디를 구하는 일만 남았다.

인라이튼먼트 DR17

Enlightenment-0.16.999.050

나온지 7년이 넘은 씽크패드 T23을 쓰다 보니, 덩치 큰 프로그램을 돌리려면 망설여질 때가 많다. 특히나 그놈과 KDE같은 데스크탑 환경은 워낙 기본적으로 사용하는 메모리가 많을 뿐 아니라 버젼이 올라갈 때마다 상황이 점점 심각해져서, 이젠 진지하게 대안을 찾아야겠다고 생각하게 되었다. 그러던 중 메모리 스와핑으로 굳어있는 마우스 커서를 하염없이 바라보고 있다가 문득 떠오른 것이 인라이튼먼트 창 관리자였다.

FVWM이 인기있는 창 관리자이던 시절, 인라이튼먼트는 파격적인 그래픽과 애니메이션으로 시스템에 무리(!)를 주는 창 관리자로 악명을 떨쳤지만, 십년의 세월이 흐르다보니 어느새 “가벼운” 창 관리자임을 강조하는 지경에 올라있었다. 그렇다고 해서 인라이튼먼트가 십년간 정체되어 있던 것은 결코 아니다. 인라이튼먼트를 만들면서 함께 나온 수많은 라이브러리가 다른 프로젝트에서 채택되어 쓰이고 있다. 그놈에서도 널리 쓰고 있는 imlib2나 esound가 대표적인 예이다.

인라이튼먼트의 최신 버젼은 DR16이라고 불리는 0.16.8.14이며, pkgsrc에서는 wm/enlightenment에서 이보다 조금 이전 버젼인 0.16.8.8을 제공한다. 0.16은 기본에 충실하고 키보드만으로 거의 모든 조작이 가능한 파워유저를 위한 창 관리자라고 할 수 있다. 하지만 첫 버젼이 발표된 지 8년이나 되었고, 데스크탑 환경으로 사용하기에는 부족한 면이 있다. 새로 개발중인 버젼은 0.17인데, 아직 정식으로 릴리스되지 않았다는 단점이 있지만 차세대 데스크탑 환경을 목표로 꾸준히 발전하고 있다. 정식 릴리스가 없는 탓에 pkgsrc에는 포함되어 있지 않지만, pkgsrc-wip을 찾아보니 wip/e17이란 이름으로 0.16.999.043이 들어 있었다. 이걸 최신 개발 버젼인 0.16.999.050으로 갱신하고 몇가지 버그를 고쳐주니 그럭저럭 쓸만하게 되었다. 아직 모든 기능을 다 쓸 수 있을만큼 완벽하지는 않지만, 설치하고 삭제하는데에는 아무 문제가 없어 보인다. wip/e17를 설치하고 enlightenment_start를 .xinitrc나 .xsession에 넣어 주면 바로 써 볼 수 있다. 전체적으로 상당히 깔끔하고, 독특한 생김새가 인상적이다. 다만 창 제목이나 메뉴 등에서 한글이 표시가 안 되는 문제가 있는데, 아마도 폰트셋이 제대로 설정되지 않아서 생기는 문제로 보인다. 조금만 손을 보면 그놈이나 KDE 대신 가볍게 쓸 수 있는 쓸만한 데스크탑 환경이 될 것 같다.