OpenSolaris 개발 환경 관련 메모
** 이 스레드는 내용의 변화가 있을 때 마다 수정할 예정입니다.
OpenSolaris를 사용하면서 느끼는 가장 괴로움은 역시 Solaris에 밖힌 이미지인 것 같습니다. 블로그나 irc, ml 등에 올라오는 게시물들은 거의 '서버'에 집중되어 있고 저처럼 데스크탑이나 개발용으로 쓴다는 글은 거의 찾아보기 힘듭니다. 이건 아무래도 90년대를 풍미한 Solaris라는 운영체제의 네임벨류이기도 하면서 OpenSolaris로 대변되는 차세대 Solaris의 시도를 협소하게 만드는 면이 없지 않나라고 생각합니다. 이후 OpenSolaris 2010.3이 Solaris의 기반이 될 예정이기에 이러한 이미지는 더욱 공고해지지 않을까 싶습니다.
아시다시피 OpenSolaris는 서버에만 국한되던(한 때 Solaris10을 데스크탑으로 이용하던 제 입장에서는 꼭 그렇지만은 않았지만) Solaris의 개발용 버젼을 위해 태어난 녀석입니다. 지금의 OpenSolaris라는 이름이 붙기전 3종류의 OpenSolaris가 있었고 그 중 Community 버젼이 지금의 OpenSolaris와 동일한 녀석이라 생각하시면 될 겁니다. Community 버젼은 여러 실험적인 요소(리눅스의 인터페이스라던가)가 포함되어있었고, 그 중 IPS가 현재 리눅스의 repo와 동일한 개념으로 채용되어있습니다. 이 외에도 compiz, firefox, thunderbird 등 데스크탑 유저를 위한 환경도 그대로 물려받게 되었습니다.
하지만 여전히 부족한 점이 많으며, 특히 故SUN의 바람과는 정 반대로 여전히 OpenSolaris를 데스크탑으로 사용하는 유저는 그리 많지 않은 것 같습니다. 많은 사람들이 OpenSolaris에 포함되거나 포함예정의 신기술 - ZFS, CrossBow 등 -에 집중하고 있으며, 그 신기술이란게 거의 서버에 국한되는 면이 큰 것 같더군요. Toshiba에서 나온 OpenSolaris 노트북이라던지 리눅스와 닮은 전반적인 인터페이스라던지 여러가지 시도가 이루어지고 있음에도 아직까지 별로 효과는 없는 것 같습니다.
서론이 깁니다만 그런 이유로 이 스레드를 올려봅니다. 깊은 내용은 0에 가까울테지만 데스크탑 유저 혹은 응용 프로그래머가 OpenSolaris를 사용하면서 겪은 몇 가지 일들을 간략한 메모 형식으로 남겨보려 합니다.
사용 중인 환경
저는 거의 dev를 사용 중이기에 release 버젼과 미묘한 차이가 존재할 수 있습니다. 현재 사용 중인 환경을 적어두니 참고하시기 바랍니다.lateau@kaeko:~$ isainfo -v 64-bit amd64 applications sse4.1 ssse3 cx16 mon sse3 sse2 sse fxsr mmx cmov amd_sysc cx8 tsc fpu 32-bit i386 applications sse4.1 ssse3 ahf cx16 mon sse3 sse2 sse fxsr mmx cmov sep cx8 tsc fpu lateau@kaeko:~$ uname -a SunOS kaeko 5.11 snv_134 i86pc i386 i86pc Solaris # OpenSolaris의 현재 uname 커맨드는 아키텍쳐 정보를 제대로 표시해주지 않습니다. :)
라이브러리와 헤더 파일
* 라이브러리 위치 라이브러리의 위치는 일반적인 유닉스 계열과 동일합니다./usr/lib
/usr/local/lib
/opt/.../lib
이런 식으로 위치합니다. 참조에 대해서는 /usr/lib까지는 시스템 디폴트로 설정되어있으며 그 외는 LD_LIBRARY_PATH로 참조위치를 지정시켜 줄 수 있습니다.
* 헤더 파일 헤더 파일 역시 라이브러리와 동일한 상위 디렉토리에 위치합니다.
* 패키지 설치시의 라이브러리 / 헤더 파일
리눅스 계열에서 쓰이는 name-devel 혹은 name-header 라는 패키지는 OpenSolaris에서 채용하고 있지않습니다. OpenSolaris에서는 한 패키지를 설치할 때 관련 라이브러리와 헤더 파일을 함께 설치하는 것을 기본적으로 보장하고 있습니다. 이 때 공식 IPS에서 내려받은 패키지의 경우는,
/usr/package_name/version/include
/usr/package_name/version/lib
과 같은 경로에 필요한 파일들이 위치하게 됩니다. 이들에 대해서는 시스템에서 PATH를 추가해주지 않으므로 위의 경우와 동일하게 LD_LIBRARY_PATH를 잡아주거나, 컴파일시 인수로 경로를 지정해주어야 할 필요가 있습니다.
* 소스 컴파일시 소스 컴파일로 라이브러리를 설치할 경우는 기본적으로 해당 라이브러리에 의존하겠지만 대체적으로 gmake의 관습을 따르는 것들은 /usr/local/lib에 설치됩니다. 헤더 파일은 당연히 /usr/local/include에 설치되겠죠.
Perl
Perl의 경우 각종 시스템 툴을 위해 기본적으로 설치가 되어있지만 버젼은 조금 낮습니다.lateau@kaeko:~$ perl -v This is perl, v5.8.4 built for i86pc-solaris-64int (with 32 registered patches, see perl -V for more detail)
그리고 perldoc이라던지 cpan에서 제공하는 각종 툴은 사용할 수 없기에, 이러한 툴을 사용하기 위해선 당연하게 소스 코드를 빌드할 필요가 있습니다. 제 경우는 /usr/local/lib/perl5 에 설치가 되어있으며 버젼은 5.10.1이군요.
소스 빌드로 직접 설치하실 경우 시스템 툴을 위해 기존의 perl 링크는 그대로 남겨두는 것을 권장합니다.
python
기본적으로 2.4과 2.6가 설치되어있습니다. 역시 시스템 기본 툴(pkg 커맨드가 python으로 짜여져 있습니다)을 위해 도입되어있습니다. perl과 마찬가지로 최신 버젼을 사용하기 위해서는 직접 빌드할 필요가 있습니다.Ruby
기본적으로 SUNWruby가 IPS에 등록되어있지만 버젼이 꽤 낮고(rubyforge에도 등록된 프로젝트로 몇가지 패치를 추가한 버젼입니다, 최근엔 rails 패키지를 작업 중), 현재 프로젝트가 거의 멈춘 상태로 보여지기에 별로 권장하고 싶지 않네요. 역시 소스 빌드가 필요합니다.* 의존성 소스 빌드로 Ruby를 별탈없이 쓰기위해서는 최소한 readline 정도는 미리 설치해둘 필요가 있습니다. SUNWgnu-readline이 IPS에 등록되어있으니 빌드 전 미리 설치해두면 됩니다. ext/iconv의 경우도 설치해 두는 것이 Ruby의 정상적인 동작을 보장하는데 도움이 됩니다만, 기본적으로 libiconv가 설치되어있었던 것 같네요. 이외의 의존성에 대해서는 make 후 ext 밑에 있는 각종 확장 모듈 안에 *.so와 같은 바이너리 파일이 제대로 생성되어있는지 확인해 보면 됩니다.(아니면 make test로 한번에 테스트하는 방법도 있습니다.) 만약 문제가 있다고 판단되면 IPS에서 해당되는 라이브러리가 있는지 찾아보고 설치한 후 재컴파일...
vim
* syntax color 활성화하기 OpenSolaris설치 후 $ echo $TERM 등으로 확인하면 xterm으로 표시가 됩니다. 이대로는 vim의 color가 제대로 표시가 안되기에
$ vi ~/.profile export TERM=screen
을 한 줄 추가해둡니다.
* ctags
...
* cscope
...
오늘은 여기까지만 쓰겠습니다. 시간날 때 다시 갱신해 두겠습니다.
댓글 달기