처음으로 멘터가 되었습니다

FreeBSD에서는 새로운 커미터를 뽑을 때, 기존의 커미터가
멘터가 되어서 계정 생성, 커밋 리뷰, 문화에 대한 적응 등에
도움을 주게 되어 있습니다. 보통 새로운 커미터를 추천한 사람이
멘터가 되는데, 그렇지 않은 경우도 있긴 합니다.

제가 FreeBSD 커미터가 될 때는 2002년 6월엔가 최준호님께서 멘터가 되셔서 들어가게 되었습니다. 거의 이제 3년이 넘었는데 아직 새로운 커미터를 멘터링할 기회가 한 번도 없었네요. 흐흐. 그러다가, 얼마 전부터 갑자기 파이썬 포트에 대한 PR을 1주에 수십개를 저한테 보내는 사람이 하나 생겼는데, 아이고 이거 귀찮아서 어떻게 하나 고민을 하다가, 보내 주는 패치가 상당한 수준이고 bsd.port.mk 구조까지도 hack해서 쓰는 이상한 패치를 보내줄 정도로 내부 지식이 있고 열정이 있는 것 같았습니다. 그래서, PR 통계를 보니, 이 사람이 Ports Fury를 빼고는 최근 PR 순위가 2위이길래 처음으로 커미터로 추천했고, 어제 portmgr팀에서 승인이 났습니다. 옛날에는 새로 커미터 들어오는데 막 몇달씩 걸리고 그랬는데, 요새는 승인이 이틀, 계정 30분 해서 이거 3일만에 완전히 CVSROOT/access에 커밋까지 다 돼버렸네요. 흐흐.

하여간, 처음으로 제 멘티가 된 러시아에 사는 Vsevolod Stakhov씨 축하합니다! (라고는 하지만 한국어를 알 리가 없.. -.-;) 이름이 외우기 상당히 힘들었는데 이제 어느 정도 메일 안 보고도 이름을 알 수 있을 것 같네요; 아하하;

ko_KR.eucKR에서의 Vim 커서 문제 (2)

며칠 전에 FreeBSD 소스 커미터가 되신 김정욱님(jkim)과 메일을 주고 받다가 전에 최준호님과 찾아봤던 ko_KR.eucKR에서의 Vim 커서 이동 문제를 얘기했습니다. 그 당시에는 mblen(3)이 FreeBSD에서만 에러난 상황에서 stateful하게 구현되어 있는데,
POSIX에서는 그런 상황이 명시적으로 정의되어 있지 않아서, FreeBSD가 잘못한건지 vim이 잘못한건지 잘 모르겠다는 판단을 하였습니다. 그런데, 김종욱님께서 표준에 정의되지 않은 행동방식에 의존적인 사용을 하는 vim의 잘못이라고 말씀을 해 주시는군요. 아앗. 그럴수가. 그렇게 생각할 수도 있구나. 하며 순간 백년묵은 체증이 사라지는 듯한.. ;;

vim은 패치가 엄청나게 자주 나오고 포트에서도 다 그걸 넣는 편이라, 따로 vim 포트에서 로컬 패치를 넣을 필요는 없을 것 같고 그냥 메인스트림에 바로 넣기로 마음먹고 버그 보고 메일을 보냈습니다. 일본 사람들도 한참 두리번하다가 해결 못한 것인데 곧 고쳐지면 좋겠군요~ 🙂

FreeBSD 6.0 스테이블 브랜치

요새 말년이라 이것 저것 일이 많아서 글 쓸 여유가 잘 없군요. 으흐흐.

그동안 광복절 기념으로 릴리스할 예정으로 작업이 활발하게 진행되고 있었던 FreeBSD 6.0이 드디어 내일 스테이블 브랜치가 됩니다. 즉, 현재 프리즈되어있는 HEAD에서 RELENG_6가 갈라져 나와서, 이제 RELENG_6 브랜치로 세팅하면 6.0-PRERELEASE로 나오게 되겠죠~

이번 6.0에서는 5.x에서 안정버전이지만 아직 많이 채택되지 않은 상태였으니, 이제 6.0이 안정버전으로 들어가면 그냥 4에서 6으로 건너뛰는 곳도 꽤 되지 않을까 합니다. 흐흐. FreeBSD 6의 여러가지 새로운 것들에 대해서는 최근에 OSNews에 올라왔던 jhb, rwatson, scottl의 인터뷰에서 아주 잘 설명되어 있습니다.

Summer of Code에서 FreeBSD에 추천한 프로젝트가 모두 20개인데, BSD 인스톨러 통합, FreeSBIE 통합, UFS 저널링, CVSUp C 프로젝트, GEOM 저널링, MacOS launchd 통합, 커널 메타언어 등 솔깃한 것들이 많이 올라왔는데, 한 반정도만 성공해도 FreeBSD 7이 굉장히 재미있어질 것 같네요~ 🙂

FreeBSD 최근 소식

요새 여러모로 일이 많아서 좀 바빠서 메일을 통 못 읽다가, 밀린 CVS 메일을 보다보니 재미있는 게 여러개 있군요.. 🙂

구글 Summer of Code 프로젝트
구글 Summer of Code에 FreeBSD가 멘터로 활동할 여러가지 주제들이 목록으로 정리되어 올라왔습니다. Xen지원이나 BSD Installer 통합, CVSUp을 C로 재작성하는 일, UFS 저널링 지원 추가 같은 것들이 매우 흥미로워 보입니다. 🙂 저는 개인적으로는 BSD iconv를 유저랜드에 통합하고 kiconv에 DBCS/SBCS 외에 가변 바이트 지원을 추가하는 작업에 관심이 많은데 학생이 아니라 참가도 못하고~ 병특 끝나기 전이라 시간도 없을 것 같고~ 이히히;

WPA 클라이언트 베이스로
BSD 할아버지들 중에서 가장 활발한 활동을 하고 있는 샘 아저씨가 드디어 WPA 지원을 베이스에 넣었습니다. 🙂 이름은 wpa_supplicant입니당. EAP-TTLS까지도 언급이 되어 있는 걸 봐서 아직 써보지는 않았지만 매우 기대가 되는군요. 🙂

ISC dhclient에서 OpenBSD dhclient로 교체
FreeBSD에서 오랫동안 쓰던 ISC dhcpd에 포함되어 있는 dhclient를 이제 OpenBSD의 dhclient로 교체하였습니다. contrib이 아니라 그냥 베이스에 머지해버릴 정도로 강한 애착이.. 흐;

Kip Macy가 커미터로~
FreeBSD로 Xen을 포팅하는 작업을 오랫동안 열심히 추진하던 Kip Macy가 그동안 그 분야를 잘 아는 커미터가 없는 통에 커밋권한을 못 얻고 있다가 최근에 드디어 소스 커미터로 들어오게 되었습니다. 드디어 FreeBSD도 Xen의 문명 혜택을 받게 되겠군요. ^.^

므해해해

FreeBSD 6.0 코드 프리즈 임박

FreeBSD 6.0 릴리스를 위한 오랫동안의 열띤 토론 끝에, 이제 다음 주에 코드 프리즈가 시작됩니다. 구체적인 일정은 다음과 같이 잡혀 있는데, 물론 실제로 진행되다가 복병을 만나면 좀 늦어지겠죠. 🙂

  • 2005년 6월 10일: 피쳐 프리즈, 코드 슬러시 (약한 프리즈)
  • 2005년 7월 10일: RELENG_6 브랜치 (여기부터는 releng팀 승인이 있어야 커밋 가능)
  • 2005년 8월 1일: RELENG_6_0 브랜치 (6.0 릴리스 브랜치)
  • 2005년 8월 15일: FreeBSD 6.0 릴리스

광복절 기념 릴리스인가 보군요. 🙂

젠투에서도 py-freebsd를 사용합니다

엊그제 Gentoo/FreeBSD 프로젝트 개발자 중의 한 명이 제게 메일을 보내 왔습니다. 그 내용은 Gentoo의 패키지 관리 툴이 아무래도 파이썬으로 되어 있다보니 파이썬으로 대체로 다 만들어야 하는데, 리눅스에는 없고 FreeBSD에만 있는 파일의 chflags 속성 관리를 위해서 원래는 자기들이 직접 패치한 것을 쓰고 있었는데, py-freebsd가 좋아서 바꿔보려고 한다는 말이었습니다. 🙂

뭐 다른 것은 다 괜찮은데, os.stat()에서 st_flags를 읽어오고 싶은데, 파이썬에서 제공을 하지 않는 속성이다보니 참 애매한 상황이라 이를 py-freebsd에서 제공해 달라는 것인데, 가만 생각해보니 py-freebsd에서 지원해 줄 수도 있겠지만 지원하게 되면 소스가 상당히 지저분해질 것 같아서 그냥 파이썬을 고쳐서 커밋해 주고, 그것 백포트 해서 쓰라고 답장을 보내버렸습니다. ;;

이제 Gentoo 소스에 import freebsd 없나 잘 봐 보세용. 이히히 =3=33

FreeBSD에도 패키지를 자동으로!

얼마 전에 회사에서 새로운 서버를 세팅하면서, 데비안에 없는 패키지 몇 개를 깔끔하게 설치하기 위해 방법을 알아보던 중, 회사 동료인 상현씨의 조언으로 checkinstall를 이용해서 설치하게 되었습니다. checkinstall은 인스톨하는 도중에 preload된 동적 라이브러리가 파일 변경사항을 로그로 남겨서, 그 로그를 기반으로 마치 패키지를 이용해서 깐 것처럼 해 주는 도구이더군요. 물론 바이너리 패키지도 만들어 주고 해서, 패키징되지 않은 프로그램을 임시로 재빠르게 깔아야하는 경우에 매우 편리했습니다.

사실 예전에 autoplist.py라고 ktrace기반의 pkg-plist 자동 생성기를 만들었습니다. 그런데, 당시 FreeBSD의 베이스가 정적 링크되어 있었기에 LD_PRELOAD 트릭을 사용할 수가 없어서 ktrace를 기반으로하다보니 너무 부하가 심해서 mozilla같은 대형 포트를 깔 때에는 거의 5분 이상이 걸리는데다 로그를 남기는 하드디스크 용량도 너무 많이 들고 해서 아주 간단한 포트 외에는 쓰기가 힘들었습니다.

FreeBSD는 그래도 간단한 임시 포트를 만들기가 데비안에 비해서는 쉬운 편이긴 하지만, 아무래도 pkg-plist 만드는 압박이 있기에 FreeBSD에도 그런 것이 있으면 삶을 활기차게 사는 데에 큰 도움이 되겠구나. 하는 생각이 들었습니다. 🙂 이제 FreeBSD도 베이스가 완전 동적으로 되었기에, FreeBSD 사용자도 이제 젖과 꿀이 흐르는 자동 plist 생성의 세계로! 그런데, 우선 인스톨 로그를 위한 sysutils/installwatch포트가 워낙 오래된 것이어서 그런지, 5.x에서는 log 심볼의 중복이라던지 여러가지 문제점으로 계속 버스에러로 죽었는데 그 문제를 약간 추적해서 수정해서 메인테이너에게 보냈습니다. (아직 커밋되지는 않았습니다.)

그래서 그걸 이용해서 결국 주말에 pkg_trackinst와 pkg_genplist를 LD_PRELOAD기반으로 만들었습니다.
우선, pkg_trackinst는 패키징이 안 되어있는 소프트웨어를 make install할 때에 당시에 설치되는 파일들을 분석해서 자동으로 패키지로 설치한 것처럼 만들어주고 바이너리 패키지도 만들어서 다른데서도 똑같이 설치할 수 있도록 만들어주는 도구입니다.
그리고, pkg_genplist는 다른 패키징은 다 끝나고 pkg-plist파일만 생성하면 끝나는 상태에서 pkg-plist를 자동으로 생성해 주는 도구입니다.

pkg_trackinst는 오늘까지 만든 부분에서 거의 잘 돌아가고 있지만, 아직 pkg_genplist는 mtree를 사용하지 않고 있어서, 중복된 파일도 막 올려대고 특히 manpage쪽이 문제가 많이 있습니다. 그렇지만, 주말도 거의 끝난데다가.. 다른 시스템들에서도 잘 돌아가는지 보고 싶어서 일단 버전 0.1을 릴리스했습니다. (파이썬 2.4, FreeBSD 5.2이상이 필요하고, 앞에 언급된 installwatch 포트 패치가 적용되어 있어야 합니다.)

패키지 만드는 법이 귀찮지만 pkg_delete는 하고 싶은 분이나 plist 만드는 것이 귀찮아진 분들 한번씩 테스트해봐 주세용. 🙂

FreeBSD GUI 인스톨러

FreeBSD 개발자 메일링 리스트에 새 FreeBSD기반 운영체제라고 Kylin에 대해서 메일이 올라 왔습니다. 그런데, 웹 페이지를 아무리 꼼꼼히 읽어봐도.. 딱히 FreeBSD기반도 아닌 것이.. 매뉴얼을 봐도 다 리눅스 명령어이고.. 아무래도 리눅스처럼 보이는데.. 으흐; -O-

그 메일 쓰레드에 다른 개발자가 답글로 새로운 다른 프로젝트를 찾았다고 글을 올렸는데, 바로 PC-BSD 였습니다. PC-BSD는 그래픽 인스톨러를 넣고 X 환경을 간단하도록 튜닝한 FreeBSD 배포본인 듯 합니다. 일단, 웹 사이트를 정탐해 보니까, 아무래도 웹 사이트 스타일이 FreeSBIE랑 비슷한게.. 비슷한 사람들이 만든 것일까 했는데, 그냥 다른 사람들인 듯 합니다.

아직 그래픽 인스톨러는 아직 아나콘다보다는 좀 안 예쁘기는 합니다마는, 그래도 데비안 그래픽 인스톨러보다는 예쁘(;; -ㅇ-)군요.. 흐흐흐; PC-BSD는 FreeSBIE와는 다르게, KDE를 기본으로 쓰고 있는데, GNOME 인스톨은 따로 특별히 지원하고 있지는 않은 듯 합니다. FreeSBIE는 xfce와 wmaker를 지원하고, PC-BSD는 KDE를 지원하니.. 이제 그놈 기반 인스톨러만 하나 나오면 좋겠는데.. ^_^

그런데, 기왕 BSD 인스톨러면 BSD 라이선스를 썼으면 좋았을텐데, 신비롭게도.. 인스톨러를 GPL로 해놨네요.. (그럼 그냥 젠투 인스톨러로 만들 것이지~ -O-;; =3=33)

OpenSSH jail 패치

서버를 세팅하던 도중에 jail안에 사용자를 몽땅 다 넣어버리려고, chroot 패치를 할까 하다가, 요새 jail에서 jail_attach도 지원하고 하길래, 간단하게 jail 패치로 바꿔 봤습니다.

요렇게 하면 chroot보다 리소스 제한을 좀 더 섬세하게 할 수 있고, top나 ps같은 것도 jail 안의 것만 볼 수 있도록 제한됩니다. 이히히 🙂