>> Edit article
이름
제목
패스워드
리눅스 및 Unix사용자들을 위한 관리 팁인다. rpm과 deselect같은 패키지 툴킷이 나오기 전에 리눅스 사용자들은 stow라는 관리 툴킷을 가지고 있었습니다. 고전적이기는 하지만 매우 유용한 툴로 저는 지금도 사용하고 있습니다. 아직 모르고 계시는 분들을 위해 이 팁을 실고자 합니다. 1) stow같은 설치 툴이 필요한 이유 보통의 컴파일해서 설치하는 프로그램들은 /usr/local을 기본으로 하여 binary 는 /usr/local/bin에, 라이브러리 및 header화일들은 /usr/local/lib와 /usr/local/include같은 곳에 설치를 합니다. 이렇게 /usr/local을 쓰는 이유는 /usr밑에 있는 시스템 자원을 건드리지 않기 위함입니다. 그런데 만약에 /usr/local에 깔았던 프로그램이 문제가 생겨서 지워야 한다면 어떻게 하시겠습니까? (rpm으로 말하자면 'rpm -e'로 삭제하는 경우에 해당되겠죠.) 이럴 경우 설치한 관리자는 그 프로그램에 관계되는 모든 화일을 지우기 위해서는 원래 설치했던 화일들을 알아야 할겁니다. 만약 지워야되는 화일의 수가 다행이 적고, 설치했던 화일의 이름도 모두 알고 있다면 문제가 안되겠지만 그렇지 않을 경우는 완벽한 제거가 힘들어 질 겁니다. 이럴 경우 관리자는 각 패키지별로 따로 따로 다른 디렉토리에 설치하면 좋지 않을까 생각하게 될 겁니다. 일단 예를 들어 설명해 보지요. 2) 예제 - mutt 설치하기 o mutt 소스 받아오기 o mutt 컴파일 하기 % gunzip -c [mutt 소스 화일] | tar xvf - % cd [mutt 소스 디렉토리] % configure 이 때 prefix라는 옵션이 있는 것을 볼 수 있는데 이것은 필요한 화일들이 prefix를 기준으로 bin, lib, include등의 디렉토리들로 깔릴거라는 것을 의미합니다. 대부분의 컴파일해서 깔아야 하는 프로그램들은 /usr/local을 prefix로 해서 /usr/local/bin, /usr/local/include등에 mutt관련 화일들이 깔릴 거라는 것을 의미 합니다. % make % su # make prefix=/usr/local/program/mutt install 이 라인이 의미하는 바는 컴파일된 화일들은 /usr/local/program/mutt라는 디렉토리를 기준으로 bin, include, lib등에 mutt 관련 패키지들을 설치하겠다는 것을 의미합니다. 어떤 경우는 prefix대신 PREFIX라고 써야 하는 경우도 있는데 이것은 make를 실행하기 위한 Makefile을 살펴보아서 결정하면 됩니다. make에 대해 아신다면 쉽게 이해하실 수 있을 겁니다. 그리고 /usr/local/program이라는 디렉토리가 없다면 미리 만들어 두십시요. 다음의 디렉토리로 옮긴 후 확인해 보죠. # cd /usr/local/program # ls . .. mutt # ls mutt . .. bin include etc share ls 명령어로 확인해보면 컴파일된 mutt화일들은 /usr/local/program/mutt 디렉토리 밑으로 모두 설치되어 있는 것을 확인할 수 있을 겁니다. 이 상태에서 다음의 명령어를 내려보죠. # pwd /usr/local/program # ls . .. mutt # ls mutt/bin/mutt mutt/bin/mutt # ls /usr/local/bin/mutt ls: /usr/local/bin/mutt: no such file or directory # stow mutt # ls /usr/local/bin/mutt /usr/local/bin/mutt 이 명령어를 내리면 /usr/local/program 디렉토리 밑에 있는 mutt라는 디렉토리에서 bin에 있는 화일들은 /usr/local/bin으로, include밑에 있는 화일들은 /usr/local/include 밑으로 링크를 걸어줍니다. 만약 링크를 걸 화일이 /usr/local밑에 해당 디렉토리에 있다면 에러메세지를 띄우면서 문제 있음을 밝혀 줍니다. 그리고 해당 디렉토리가 없으면 새로이 만들어 줍니다. 즉 /usr/local밑에 bin, include등으로 직접 mutt관계 화일을 설치하지 않고 링크만 만들어 주어서 /usr/local밑으로 설치한 효과를 내주게 됩니다. 이렇게 해놓고 나중에 mutt를 지우고자 한다면 # cd /usr/local/program # ls . .. mutt # stow -D mutt # ls /usr/local/bin/mutt ls: /usr/local/bin/mutt: no such file or directory 이렇게 하면 /usr/local밑으로 걸려 있던 모든 링크를 지워주므로 /usr/local 디렉토리로부터 mutt관련 부분을 지워버릴 수 있고 완전히 mutt를 지워 버리고자 한다면 'stow -D' 이후에 # rm -rf /usr/local/program/mutt 를 실행해서 안전하게 지울 수 있겠죠. 3) stow 프로그램 이용시 주의 사항. stow라는 프로그램은 위에서 보았듯이 실제 필요한 프로그램을 각각 다른 디렉토리 로 설치하고 다만 이를 /usr/local같은 곳으로 링크를 걸어주어 관리의 묘미를 살려주는 일종의 툴입니다. stow는 perl를 기반으로 짜여져 있습니다. 다만 stow도 프로그램인 만큼 초기 stow를 설치하는 것과 각 프로그램마다 prefix를 적어주는 것에 유의 하셔야 합니다. *) stow 설치 stow를 /usr/local/program/stow라는 디렉토리에 설치했다고 해보죠. # cd /usr/local/program # ls . .. stow mutt # stow/bin/stow stow <- stow자체를 /usr/local밑으로 링크 설치를 한다. *) prefix 설정 주의 나중에 링크를 건 다음 많은 리소스 화일들은 /usr/local을 기준으로 찾아 보도록 해주는 것이 좋으므로 make compile시에는 prefix를 /usr/local로 해주는 것이 좋습니다. 다만 make install로 설치시 최종 목적지만 /usr/local이 아닌 다른 디렉토리에 해주도록 prefix를 적어주면 되는 것입니다. 이상으로 stow에 대한 tip을 마칠까 합니다. 다소 불편한 점은 있지만 고급 관리자 가 되기 위해서는 이런 technique을 갖고 있는 것도 좋으리라 보이네요. 참 서버 관리해 보신 분들은 아시겠지만 /usr/local은 다른 파티션이나 하드에 놓아서 분리해 놓는 것이 좋습니다. 간혹 OS를 새로깔거나 할 때 전에 깔았던 패키지를을 다시 까는 노력을 줄일 수 있기 때문입니다. 제가 다음에는 Netscape 한글판을 /usr/X11R6/lib/X11등의 디레토리를 건드리지 않고 설치하는 방법에 관해 글을 올릴까 합니다. (최준호님이나 박원규 님의 설치 방법은 /usr 파티션을 건들기 때문에 관리자 입장에서 아주 좋은 방법은 아닙니다.) 질문 있으시면 언제든 연락주시고 좋은 하루되시길 빕니다. -- 내 서명???
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved