안녕하십니까. 가입한지 2년 활동을 늘 잘안하는 똘이대마왕입니다.
리눅스도 쓰다보니 겉멋이 들어서, 이젠 프로그램 설치할때도 할줄도 모르는 최적화 운운하며 패키지로 깔지않고
소스 받아 컴파일을 합니다. 괴수분들에게는 생활이였지만 엔드유저에겐 별--필요도 없었던 컴파일 과정.
굇수의 환상과 같은 옵션들과 심하게는 소스마져 파헤치고 나서야 최적화에 들어간다는 이야기는 사실 대형 프로그램
가령 MySQL같은 애들이나 최적화잘하면 빛을 본다지요. 저같은 유저는 저런거 손도 못대고 끽해야 엊그제 기존에 쓰던 터미널용 프로그램들 성공하고 나서 적는 글이라 굇수님들은 보시고 틀린 사항 있으면 짚어주신다면 감사하겠습니다. 제가 밑에 예제로 나갈 아이들은 차라리 패키지로 까는게 이득인 애들입니다.^^ 전-- 겉멋들어서…
일단 간단히 얕은 상식 아래 컴파일에 대해서 다들 알만한 내용을 소개합니다. 초보위주에서;;
컴파일은 C 나 기타 고급언어들로 짜여진 애들을 컴퓨터가 알아먹느 저급언어로 바꿔주는 것을 말합니다.
실행되는 파일을 만드는 과정중에 링크니 어쩌니 하는 애들까지는 사실 제 수준에서는 알필요가 없을거 같아서
생략합니다만…소스에서 설치과정까지 총 필요한 명령어는 크게 3개면 끝나니깐요
./configure
make
sudo make install
이제 하나하나 해보겠습니다.
아참 제일 먼저…다 필요 없고…무조건 받아야 할 녀석이 있어요.
sudo apt-get install build-essential
이거 한방에 컴파일에 필요한 "기본" 녀석들을 받을수가 있어용. 학생이 공부할려면 연필이랑 책이랑 참고서, 노트정도는 필요하잖아요 그리고 나서 이제는 일단 제일 만만한 녀석중 하나인 htop.
이녀석은 음. 장황하게 설명하자면 ps aux라는 명령어를 연속적으로 보여주는 top를 좀더 발전시켜 놓은 프로그램인데 윈도우즈로 치자면 프로그램 관리자…정도? 프로세스 관리자? 이걸 우분투에서 쓸 필요는 없지만 (더 좋은게 있으니깐요) 일단 제가 터미널을 좋아해서…소스를 받아볼까요?
sudo apt-get source htop
이러면 소스를 간단히 받아오긴 하는데 현재 위치한 디렉토리에 받아옵니다. 그래서 일단 src디렉을 따로 만드시거나 처음부터 /usr/local/src 에 넣으시거나 하면 됩니다. 여기서 잠깐 /usr/디렉에 대해 틀릴수도 있지만 제가 생각하는 쪽으로 생각해볼께요.
윈도우즈에서 프로그램을 설치하면 대부분 디폴트설정에서는 c:\program files\ 로 들어가게 됩니다.
리눅스에는 프로그램을 설치하면 기본적으로 /usr/ 아래로 들어가게 되는데 윈도우즈 프로그램 마냥 이쁘게 한 디렉토리안에 c:\program files\linux\ubuntu 이런식으로 가지런히 모아서 들어가있는게 아니라
usr/bin - 실행파일. 윈도우 식으로 말하자면 .exe
usr/include 기타등등 - 몰라요
usr/lib 기타등등 - 참고하는 라이브러리들치[b:74kba2sz]
[b]usr/local 앞으로 우리가 프로그램을 설치하게될 위치[/b:74kba2sz]
usr/sbin 최고관리자권한용 프로그램들
usr/share 쉽게 말하자면 수많은 것들이 있지만 fonts가 위치한 디렉토리[b:74kba2sz] 하지만 우리는 fonts를 저 위치에 넣지 않는다.[/b:74kba2sz]
usr/src 소스가 위치한 곳. 가보면 아니나 다를까 리눅스 커널 소스가 댕그러니. 커널 컴파일 할때 여기 두고 한다죠
자. 저거 다 몰라도 되요. 하지만 중요한건 바로 usr/local 이라는거 잊지 말아용.
일단 기본적으로 우리는 저 local 디렉토리에 설치할겁니다. 왜 냐면 패키지로 설치 하지 않고 소스를 받아서 컴파일후 디폴트 설정으로 설치하게 되면 local 디렉이 아닌 usr/bin 이나 usr/lib등등 여러 디렉토리에 걸쳐서 파일이 흩어져서 설치되는데 이 경우(컴팔해서 깐 경우) 업데이트나 삭제시 굇수들도 (안그러겠지만 실수로 디폴트에다가 쓰잘데없는거 깔았을시) 이거 찾아서 지운다 하면 미치고 환장할 노릇이라고들 하십니다.
물론 방법이 없는것도 아닙니다. 소스에서 Make uninstall 을 "제작자가 만들어놨으면" 싹 지워지겠지만 그렇지 못한 경우가 꽤 있고 그리고 설치를 다끝낸 소스파일은 그야말로 꿔다놓은 보릿자루마냥 자리만 차지하고 있게 됩니다. 그래서 결론은 이렇게 깔면 나중에 정말 답이 안나오지요. 그럼 어떤 방법들이 있을까요…
-패키징을 한다-
안해봐서 모르지만 과정중에 패키징을 하면 컴파일을 한 컴퓨터에서의 최적화 상태및 업데이트, 설치가 간편한 녀석으로 바꿀수 있다합니다. 사실 전 몰라요. 굇수님들 댓글로 좀 가르쳐 주십시오 굽신 굽신. 가장 추천하는 방법이라던데…
-stow 를 이용한다-
제가 사용하는 방법입니다. 업데이트는 나올때 마다 새로 컴팔 해줘야 하지만 삭제 하나는 쉽습니다. 깔끔하게 관리가 가능하여 일단 쓰고 있는 방법입니다. 아마 패키징 안한다면 이방법이 최선일듯. 제 지식아래에선
stow는 /usr/local/stow라는 디렉토리 아래에 프로그램들을 설치하고 나머지 파일들은 전부 심볼릭(바로가기같은거)으로 가져오거나 참조할수있게 만들어줘서 man페이지및 라이브러리 파일들의 문제등을 해결해줍니다.
저는…당연히 stow를 이용한 방법을 쓸겁니다. 다운로드 합시다.
sudo apt-get install stow
그냥 쉽게 받아집니다. 이거 까지 컴팔 하고 있다하면 이야기 너무 길어짐. 땅을 파야겠다고 삽을 만들고 있으면 좀 곤란함…그것도 대장간에서 잘할줄도 모르는 망치질 담금질 해가면서…그냥 철물점에 가면 싸게 살수 있음.굉장히 좋은 제품으로
자 그리고 /usr/local에 stow디렉토리 만들어줍니다.
cd /usr/local
sudo mkdir stow
앞으로 저 디렉토리에 모두 깔겁니다. 이제 설치해 볼까요?
아까 받았던 htop파일은 총 3개의 파일로 구성되어있으며 자동으로 그중 origin파일을 디렉까지 만들어서 풀어줍니다.
cd htop-버전-
대부분이 사용자가 간단히 설치 할수 있도록 configure 스크립트 파일이 있기 때문에 그걸로 컴파일에 앞서
설정을 해주겠습니다.
./configure --prefix /usr/local/stow/htop
저 말은 configure를 실행시키는데 저 경로에다가 설치하겠다라고 미리 설정하는것입니다. 뭐 모든 소스파일에 있는 README파일을 참고하면 더 자신의 컴퓨터에 맞는 설정이 가능하겠지만 htop한테 그런거 줘봐야;;; 혹시 굇수님들중;;;
이과정에서 필요한 라이브러리와 의존성에 관련된 에러메세지를 보게 될수도 있는데 htop정도는 아무 에러없이 기존에 있는걸로 잘 가더라구용. 만약 에러 메세지가 끝으로 종료되버리면 에러메시지중 뭐가 없다 없다 적혀있습니다 그거 sudo apt-get으로 깔수있거나 없으면 구글링 하시면 다 나오는데 지금 수준에서는 필요없을듯 합니다.
다음으로 make를 합니다. 이 과정이 진정 컴파일 과정인데 프로그램 덩치에 따라선 몇시간 몇일이 걸린다고 하더군요. 오직 컴파일로만 모든 설치를 한다는 굇수 전용 배포판인 젠투 경우에 컴피즈 까지 올리는 굇수님은 자랑스레 몇날 몇일 걸렸음 이건 미친짓이지만 매력적임.(근데 데탑용으로도 젠투를 쓰나요?) 이라고 하셨음. 우리는 저렇게 최적화하여 성능을 극대화된 자신의 컴을 보고싶지 않기에 저런건 그냥 sudo apt-get install로;;;;;
make
이제…정말 뭔가 알수 없는 글들이 쏱아져 나옵니다. htop는 작은 프로그램이라 아마 30초도 안걸리고 끝나겠지만 조마조마 한 시간입니다. 뭔가 되고 있다는 생각이 들어요. 고개가 절로 끄덕여집니다.에러없이 잘 넘어갔나요?
특별히 에러메세지가 없다면 이제는 설치 시간입니다. 아까 처음에 설정했던 경로로 컴파일후 나온 결과물을 옮기는 과정입니다. 이때는 usr/local로 보내는거기 때문에 root 권한이 필요로 합니다.
sudo make install
그리 오래 걸리지 않습니다. 짜잔.하지만 지금은 실행이 안됩니다. 왜냐…stow 로 한번 링크들을 걸어줘야
PATH걸린 (아무곳에서나 명령어를 쳐도 실행되게끔해주는) 곳으로 가니깐요.
cd /usr/local/stow/
sudo stow htop
자 이제 자랑 스레 htop를 쳐보세요 자신이 직접 컴파일한, 안했지만-_-최적화 되있는듯한, 왠지 더빨라보이는 컴파일 해서 설치한 htop가 실행될겁니다. ㅎㅎㅎ 참쉽죠?
그리고 혹시 신버전 나와서 바꿔줄때 지우는 법은
sudo stow -D 프로그램 이름 입니다.
그리고 stow밑에 깔린 프로그램 디렉토리를 통체로 지워주세요. ^^
끝입니다. 혹시 괴수님들 보고계신다면 부가설명이나 좀더 팁들을 부탁드립니다. 초보자 입장에서 적은거라 틀린부분도 많을듯 합니다. 감사합니다. 유익한 정보 되었길 빕니다. 똘이대마왕이였습니다.