If you are developer….

 이 글은 글쓴이의 임의내로 실제 상황의 내용을 각색하여 적는 글 입니다.

 회사에 입사한지 이제 4개월차. 아직까지는 일하는 것 보다는 회사의 분위기 정도만 눈에 약간 들어오는 것 같다.

 수습기간은 끝이났고, 이제는 하는 일에 대해 어느정도 책임감을 느껴야 할 때… 어느 프로그램의 패치를 진행하는 일이 주어졌다.

 입사한지 얼마 되지 않아서 작성한 프로그램을 고객의 요청으로 약간 수정해야 하는 작업인데, 패치 날짜가 바로 다음날까지 다가왔다.

 시스템 프로그램의 특성상, 개발보다 구성이 더 어렵다는 것은 알고 있었지만, 부끄럽게도 패치 전날까지 나는 수정한 프로그램의 어떠한 테스트도 진행하고 있지 못하고 있었다.

 테스트 환경을 설정한다는 이유로 무려 보름(!)의 시간을 설치와 재설치로 보내버리고 더욱이 마지막까지 테스트 환경의 구축은 완성하지 못하고 있었다.

 결국 팀장님께 도움을 요청해서 겨우겨우 테스트 환경을 구축할 수 있었다.

 이미 시간은 밤 10시를 넘어가고… 괜히 신입한명 때문에 팀장님은 일찍 퇴근도 못하시고 남아계셨다.

 마치 “Pair-Programming”을 하듯 팀장님의 설정 모습을 지켜보고, 내가 했던 설정과 구성들에 대한 Feedback을 받으며 한창 작업에 열을 올리다가 문득 설정의 난관에 부딫혔다.

 그때 팀장님께서는 로그파일을 하나씩 하나씩 열어보시더니 이내 곧 오류사항을 수정하기 시작하셨다.

 그 팀장님의 덤덤한 모습에 나는 문득 어떻게 그런 오류들을 수정할 수 있냐고 물어보았다.

 나는 일을 어떻게 진행하면 되는지에 대한 물음을 던진 것이었는데, 팀장님은 그것보다 더 높은 곳을 보고 계셨다.

 Worker 가 아닌 Developer 로서의 길을 말씀해주신것이다.

 ” 만약 네가 개발자라면, 어떠한 상황을 만나든, 어떠한 문제를 만나든, 그 많은 정보들 속에서 사실 하나를 끄집어 내야해. 그리고 그 사실을 바탕으로 또다른 진실을 끌어내야하지. 그리고 다시금 뽑아낸 정보를 토대로 또 다른 진실을 끌어내고 이런 일을 계속 반복하는 거야. 문제를 해결할 때까지. 이건 개발에서만의 일이 아니야. 이 세상 모든 상황에 적용시킬 수가 있지.

 ” 만약 네가 개발자라면 말이지.”

KISS : Keep it simple, Stupid.

 요 며칠간 골머리를 썩히는 문제가 있었다.

 내 리눅스 데스크탑에서 어떤 프로그램 하나가 설치되지 않는 것이었다.

 분명 다른 리눅스 머신 & Unix 머신에서는 돌아가는 프로그램이지만 유독 내 데스크탑에서는 설치가 되지 않는 것이었다.

 무엇이 문제일까…

 수차례의 시도 끝에 결국 VMware를 이용하기로 했다.

 VMware란 가상으로 컴퓨터를 만들어서 윈도우나 기타 다른 OS를 설치하여 사용할 수 있게끔 해주는 가상 컴퓨터 제작 프로그램이다.

 이미 나는 이 시점에서 그 프로그램이 완벽하게 설치되어 운영중인 가상머신 이미지 파일을 가지고 있었다.

 그런데 내 컴퓨터에는 VMware가 아닌 이와 비슷한 Virtual Box를 설치하여 사용하고 있었다.

 그래서 VMware에서 만든 가상머신 이미지파일은 이용할 수 없는 것이었다.

 한동안 생각을 하다가 여러가지 방법으로 Virtual Box에서 VMWare에서 만든 가상머신 이미지 파일을 사용할 수 있는 방법에 대해 생각해보고 여러모로 시도를 해 보았다.

 무엇이 문제일까, 왜 안되는 것일까, 도대체 어떤 점이 문제인 것인가?

 며칠을 고민하다 결국 해결점을 찾았다. 정말 단순했다.

 리눅스용 VMWare를 설치하여 그 해당 가상머신 이미지 파일을 사용한 것이다.

 간단했다. 그동안 내가 고심했던 기술적인 문제들은 처음부터 고려의 대상이 아니었던 것이다. 문제의 해결점은 보다 근본적이며 단순한 곳에 있었다.

 혹자는 그래도 그동안의 시도와 경험이 나중에 도움이 될테니 좋은 일이 아니겠냐고 말할지도 모르겠다. 나도 그 생각은 동의한다. 실제로 그동안의 고민과 경험으로 얻는 것이 꽤 있었다.

 하지만 왜 처음부터 그 생각을 하지 못했을까.. 그렇게 할 수 있음에도 다른 방법을 찾아보려고 노력한 것과 전혀 해결점이 보이지 않아서 해결점을 찾으려고 노력한 것과는 정말 큰 차이가 있다.

 그렇게 어려운 문제도 아니었는데 그동안 너무 나만의 공간 속에서 문제를 해결하려고 했던 것 같다.

 문제의 근본적인 원인을 파악하기보다 현상 자체를 보고 그 현상만을 해결하려고 노력했던 것은 아니었을까..

 문득 예전부터 전해진 오래된 컴퓨터 농담이 생각난다.

 KISS

 Keep it Simple, Stupid. 간단하게 해, 이 멍충아!

apt source list for Debian sarge

 gcc 버전 문제로 인하여 데비안-3.1 Sarge 를 설치하던 중, 더이상 기존의 stable apt 업데이트는 sarge 및 기타 하위 버전을 지원하지 않는 것을 알았다.

 아마도, 다른 아카이브로 옮겨간 듯 싶어 잠시 공식 아카이브를 찾아보니 다음의 메시지를 볼 수 있었다.

See http://www.debian.org/ for information about Debian GNU/Linux.

This FTP site is a repository for old debian releases. For new releases
please see ftp://ftp.debian.org/debian/.

Releases are stored by their codenames under the dists/ directory.
etch is Debian 4.0
sarge is Debian 3.1
woody is Debian 3.0
potato is Debian 2.2
slink is Debian 2.1
hamm is Debian 2.0
bo is Debian 1.3
rex is Debian 1.2
buzz is Debian 1.1

If you are using APT the relevent sources.list entries are like:
deb http://archive.debian.org/debian/ $RELEASE main contrib
for example:
  deb http://archive.debian.org/debian/ sarge main contrib

즉, /etc/apt/sources.list 파일안에

deb http://archive.debian.org/debian/ sarge main contrib
라인을 추가하면 된다. :)

물론 가장 기본적인 소스 리스트 이므로 앞으로 더 필요한 소스 리스트들이 있다면 별도로 추가해서 사용해야 할 것이다.


배포판에 설치된 GCC 버전정보

 Linux/Unix 프로그래밍을 하다보면 GCC 버전에 영향을 받는 경우가 있다.

 예를 들면 ACE 라이브러리를 컴파일 할 경우, gcc-4.x 대의 버전에는 컴파일 오류가 발생한다.

 그래서 부득이 gcc/g++ 을 다시 설치하려고 해도 여의치 않는 경우가 많다. 이럴 경우 다른 배포판을 찾아보게 되는데, 여기에 배포판마다 가지고 있는 gcc의 버전 정보를 싣는다.

Distribution Version Compiler version Provided by Date
BeOS R5.1, Zeta gcc 2.9-beos-000224 Yuri Kiryanov 18 June 2004
Debian Release 2.2 gcc 2.95.2 Craig Southeren <craigs@postincrement.com> 15 June 2004
Release 3.0
(Woody)
gcc 2.95.4 Craig Southeren <craigs@postincrement.com> 11 June 2004
Sarge gcc 3.3.5 (final stable version)
gcc 3.3.3 (interim releases)

Kilian Krause <kk@verfaction.de>
15 June 2005
Sid gcc 4.0.1 Kilian Krause <kk@verfaction.de> 19 July 2004
FreeBSD Release 4.8 gcc 2.95.4 Craig Southeren <craigs@postincrement.com> 15 June 2004
Release 4.9
(Stable)
gcc 2.95.4 20020320 Pavel Pavlov <block111@mail.ru> 14 June 2004
Gentoo Stable gcc 3.3.3 Brian Raymond <brian.raymond@dataline.com> 11 June 2004
Mandrake Release 7 (Air) gcc 2.95.2 Craig Southeren <craigs@postincrement.com> 11 June 2004
Release 9.1 gcc 3.2.2 Rene Schallner <rs@rocksolid.at> 11 June 2004
Release 9.2 (FiveStar) gcc 3.3.1 Alexandre Aractingi <aaractingi@libertysurf.fr> 11 June 2004
Release 10.0 gcc 3.3.2 Rene Schallner <rs@rocksolid.at> 11 June 2004
Release 10.1 gcc 3.4.1 Frederic Crozat <fcrozat@mandrakesoft.com> 30 Sep 2004
MontaVista Professional 3.1
for XScale
gcc version 3.3.1 (MontaVista 3.3.1-3.0.10.0300532 2003-12-24) Yuri Kiryanov 18 June 2004
NetBSD Release 1.6.1 gcc 2.95.3 Craig Southeren <craigs@postincrement.com> 15 June 2004
OSX 10.1 Server Edition gcc 2.95.2 Craig Southeren <craigs@postincrement.com> 15 June 2004
10.2 Jaguar gcc 3.1 Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> 11 June 2004
10.2 Server Edition gcc 3.3 20030304 Craig Southeren <craigs@postincrement.com> 15 June 2004
10.3 Panther gcc 3.3 20030304 Brian Raymond <brian.raymond@dataline.com> 22 June 2004
10.4 Tiger gcc 4.0.0
(powerpc-apple-darwin8-gcc-4.0.0)
Hannes Friederich <hannesf@ee.ethz.ch> 15 June 2005
OpenBSD Release 3.4 gcc 2.95.3 Craig Southeren <craigs@postincrement.com> 15 June 2004
Red Hat Release 6.1
(Cartman)
gcc egcs-2.91.66 Bruce Ferrell <bferrell@baywinds.org> 11 June 2004
Release 6.2 (Zoot) gcc egcs-2.91.66 Alexandre Aractingi <aaractingi@libertysurf.fr>  
Release 7.3 (Valhalla) gcc 2.96 20040412 Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> 11 June 2004
Release 8.0A (Second-Edition) gcc 3.2 20020903
(Red Hat Linux 8.0 3.2-7)
Federico Pinna <f.pinna@reitek.com> 11 June 2004
Release 9 (Shrike) gcc 3.2.2
(gcc 2.96 available as “gcc296”)
Craig Southeren <craigs@postincrement.com> 11 June 2004
Advanced Server release 2.1AS/m
(Pensacola)
gcc 2.96 Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> 11 June 2004
Enterprise Linux AS release 3
(Taroon Update 2)
gcc 3.2.3 Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> 11 June 2004
Fedora Core 1 gcc 3.2.2 / gcc 3.2.3 Craig Southeren
<craigs@postincrement.com>
11 June 2004
Fedora Core 2 gcc 3.4.0 / gcc 3.3.3 Derek Smithies <derek@indranet.co.nz> 11 June 2004
Fedora Core 3 gcc 3.4.2 / gcc 4.0.0 Craig Southeren
<craigs@postincrement.com>
14 June 2005
Fedora Core 4 gcc 4.0.0 Craig Southeren
<craigs@postincrement.com>
14 June 2005
Slackware Version 9.1 gcc 3.2.3 Craig Southeren <craigs@postincrement.com> 11 June 2004
Version 10.0 gcc 3.3.4 Craig Southeren <craigs@postincrement.com> 24 June 2004
Suse Release 8 ES on AMD64 gcc 3.2.2 Craig Southeren <craigs@postincrement.com> 15 June 2004
Version 9.0 gcc 3.3.1 Jan Willamowius <jan@willamowius.de> 11 June 2004
Version 9.1 gcc 3.3.3 Kilian Krause <kk@verfaction.de> 17 June 2004
Tornado
(VxWorks)
2.0.1 for ARM gcc 2.7.9-970819
egcs-971225 tornado 2.0
Mark DeBruin
mark.de.bruin@philips.com
11 June 2004
2.1.1 for ARM gcc 2.9-010413 Mark DeBruin
mark.de.bruin@philips.com
11 June 2004
2.1.1 for MIPS gcc 2.96 Mark DeBruin
mark.de.bruin@philips.com
11 June 2004
2.2.1 for MIPS gcc 2.96-mips3264-010729 Mark DeBruin
mark.de.bruin@philips.com
26 August 2004
2.2.1 for XScale gcc 2.9-010413 Mark DeBruin
mark.de.bruin@philips.com
11 June 2004

 출처 : http://www.voxgratia.org/docs/compilers.html#intro