포트와 패키지 시스템

포트와 패키지 시스템은 소프트웨어의 설정과 설치를 단순화하기 위해 설계된 소프트웨어 빌드 시스템입니다. 포트는 FreeBSD상에서 소프트웨어를 컴파일하기 위한 지시 혹은 명령을 가리키며 패키지는 미리 컴파일된 포트를 말합니다.

포트는 인터넷에서 소스를 받아서 설치를 하기 때문에 패키지보다 조금 시간이 더 걸린다는 단점이 있습니다만, 자신의 환경에 맞추어 컴파일 및 수정을 할 수 있으므로 패키지 보다 더 자유롭고 성능상 이점이 있습니다.

처음 포트 트리를 설치 하였다면 /usr/ports 에 포트 트리가 설치되어 있을 것입니다. 없다면 다시 설치 할 수 있습니다. FreeBSD FTP에 접속하여 사용중인 FreeBSD 버전에 해당하는 디렉토리로 이동하면 ports라는 디렉토리가 있을 겁니다. 거기에서 ports.tgz와 install.sh를 다운받아 install.sh를 실행하면 포트 트리가 설치됩니다.

/usr/ports의 각 디렉토리를 살펴보면 아주 많은 것들이 있습니다. 그 중에서 자신이 원하는 포트를 찾는 것은 만만치 않을 것입니다. /usr/ports/INDEX 파일에는 모든 포트 목록이 알파벳 순으로 열거되어 있습니다. 여기서 이름으로 포트를 찾아 보도록 합시다. /usr/ports 디렉토리에서

# grep -i ^vim-lite INDEX

하면 포트의 버전과 포트가 있는 디렉토리 기본적으로 설치되는 디렉토리 간략한 설명 등이 나타 납니다.

혹은 키워드나 이름으로 검색하는 방법을 알아 봅시다. /usr/ports 디렉토리에서

# make search name=vim-lite

하면 위의 결과 보다 깨끗한 결과를 보실 수 있습니다. 그런데 정확한 이름을 모르고 대략적인 이름만 안다면 키워드로 검색할 수 있습니다. 위에서 name 대시 key를 입력하면 됩니다. 그런데 보통 결과가 너무 많을 경우가 대부분입니다. 그러나 여러 FreeBSD 관련 웹사이트나 검색을 이용하시면 원하시는 포트를 찾으실 수 있을 겁니다.

그러나 포트에 있다고 마음껏 설치해도 된다는 것은 아닙니다. 포트 중에는 법적 제한이나 상업적인 용도로 사용될 경우 제한이 있는 소프트웨어도 있습니다. 그 목록은 /usr/ports/LEGAL 이라는 파일에 포함되어 있습니다. 한번쯤 살펴 보는 것이 좋을 듯합니다.

먼저 패키지의 설치에 대해서 알아 봅시다. 전 패키지를 잘 이용하지 않으나 다음에 급히 설치해야 할 소프트웨어가 있거나 많은 시스템에 설치해야 할 경우를 대비해 알아두면 좋을 듯합니다.

패키지는 보통 tar 압축파일로 있습니다. "패키지이름-버전.tgz" 보통 이런 식으로 존재하는 것같습니다.
이것을 설치하려면 pkg_add 명령어를 통해 설치합니다.

# pkg_add vim-lite-6.2.221_1.tgz

아무런 메시지가 안나와도 설치에 성공한 것입니다. 물론 메시지가 나올 때도 있습니다. 그때는 메시지의 내용대로 해주시면 됩니다. 설치시에 소프트웨어의 의존성을 함께 검사하여 필요한 패키지 또한 설치합니다. 그리고 FTP로 설치할 수 있습니다.

# pkg_add -r vim-lite

하면 최신 버전을 찾아 설치합니다. 이번엔 패키지를 지워봅시다.

# pkg_delete vim-lite-6.2.221_1

이렇게 하면 패키지가 지워집니다. 이때 버전을 정확히 알고 있어야 합니다.

FreeBSD에는 설치한 소프트웨어의 목록을 저장하는 곳이 있습니다. /var/db/pkg 디렉토리에보면, 설치한 소프트웨어가 각 디렉토리의 이름으로 저장되어 있습니다. 이 디렉토리 안에는 +COMMENT +DESC +CONTENTS 등의 파일들이 있는데 여기에는 각각 패키지에 대한 간략한 설명, 긴설명, 그리고 패키지에 의해 설치된 모든 파일이 설명등이 들어 있습니다.
파일을 열어서 직접보기 힘드니 다른 툴을 사용해 봅시다.

# pkg_info

이렇게 하면 설치된 패키지 이름과 버전 그리고 간략한 설명등이 나옵니다. 여러가지 옵션이 있는데 -a 는 모든 패키지를 말합니다. 그리고 -R 은 상위 의존성을 출력하며 -r은 하위 의존성을 출력합니다.

# pkg_info -arR

하면 모든 패키지들의 상하위 의존성을 출력해 줍니다.

패키지가 차지하는 용량을 알고 싶다면

# pkg_info -s vim-lite-6.2.221_1

입력하면 됩니다. 만약 어떤 파일이 어떤 패키지에 속한 것인지를 알기 위해서는

# pkg_info -W /usr/local/bin/vim

이렇게 입력하면 됩니다.

이번엔 포트를 이용해서 소프트웨어를 설치해보겠습니다. 포트는 인터넷에서 소스를 받아 설치를 하기 때문에 컴퓨터가 인터넷과 연결되어 있어야 하고, 패키지 보다 조금 시간이 더 걸립니다. 하지만 자신에 맞게 소프트웨어를 설치할 수 있고 성능 또한 조금 나아지니 시간을 투자할 가치가 있다고 생각합니다.

vim-lite를 설치 해보도록 하겠습니다. 위에서 설명한대로 설치할 소프트웨어를 찾습니다. 그리고 포트의 위치를 알아냅니다.

# whereis vim-lite

이런식으로 찾으셔도 됩니다. 그리고 포트가 있는 디렉토리로 이동합니다.

# cd /usr/ports/editors/vim-lite

여기서 ls 를 하면 Makefile이 보입니다. Makefile는 이 소프트웨어를 설치할때 어떻게 해라는 그런 말들을 담고 있다고 보시면됩니다. 이 파일을 열어보면 포트의 이름, 버전, 카테고리, 소프트웨어를 구할 수 있는 사이트의 주소 목록, 배포파일 이름, 작성자 등의 정보가들어 있습니다. vim-lite의 Makefile를 보면 실제로 vim-lite는 vim 이라는 포트를 lite버전으로 설치한다는 것을 알 수 있습니다. 잠시 vim 디렉토리로 가서 무엇이 있는지 알아 보도록 합시다.

# cd ../vim

있는 파일은 Makefile와 README.html, distinfo, pkg-descr, pkg-plist 그리고 files라는 디렉토리가 보입니다. 각 파일에 대해 간략히 설명 드리겠습니다.

    * Makefile : 포트를 빌드하기 위해 필요한 명령(?)이 있습니다.
    * README.html : 포트에 대한 간략한 설명이 나와 있습니다.
    * distinfo : 설치 시 필요한 파일들의 체크섬이 들어 있습니다.
    * file 디렉토리 : 포트를 빌드하기 위한 추가 파일이 들어 있습니다.
    * pkg_descr : 포트에 대한 자세한 설명
    * pkg_plist : 포트에 의해 설치될 모든 파일의 목록이 들어 있습니다.


이외에도 파일들이 더 많이 있을 수도 있습니다. 그 파일들은 포트를 빌드하기 위해 필요하거나 설명을 하는 파일들입니다. 이제 설치를 해봅시다.

# make install clean

이런 식으로 하면 설치가 됩니다. 거의 모든 포트가 이런 식으로 설치를 하면 됩니다. 간혹 옵션을 붙여 자신에 맞게 설정할 수 있습니다. 예로 mysql을 설치하려면 한글 지원을 위해서 다음과 같이 합니다.

# make install WITH_CHARSET=euc_kr

이런식으로 옵션을 붙입니다. 옵션이 있는 경우 포트 설치전에 그 옵션들을 설명해 줄 수 있습니다.
그럼 make install 하면 어떤 과정을 통해서 빌드가 되는지 알아보도록 합시다.

포트는 make를 다루실 수 있다면 조금 더 이해하기 쉬운 과정이리라 생각합니다만, 잘 모르신다하더라도 이렇게 설치가 되는구나 하시면 될 듯합니다. 아무튼 그 과정을 따라 가보면,

    1 make fetch : 만약 /usr/ports/distfiles에 필요한 파일이 없다면 다운 받습니다.
    2 make checksum : 받은 파일이 정확한지 체크합니다.
    3 make depends : 의존관계가 있는 소프트웨어가 있는지 검사하고 없다면 의존관계에 있는 모든 포트를 같이 설치 합니다.
    4 make extract : 압축을 풉니다. works/ 디렉토리에서 수행됩니다.
    5 make patch : FreeBSD에 맞는 패치를 수행합니다.
    6 make configure : 설정 스크립트가 필요한지 여부를 검사하고 필요하면 실행합니다.
    7 make build : 컴파일 합니다.
    8 make install : 소프트웨어를 설치하고, /var/db/pkg 에 기록합니다.



이러한 과정을 거쳐 포트가 설치됩니다. 그럼 끝에 붙는 clean은 무엇일까요?
위의 모든 것을 하고 난뒤 make clean이 실행됩니다. 빌드된 많은 파일들이 그대로 존재하게 되는데 이는 디스크의 많은 용량을 차지 합니다. 이것을 제거하는 것이 make clean입니다.
그러나 /usr/ports/distfiles 에 있는 것은 삭제되지 않습니다. (FreeBSD 5.2) 비록 압축되있는 파일이있다 하더라도 나중에 용량이 많아질 수 있으니 디스크 용량이 적다면 여기는 직접 삭제하셔야 합니다

 

 

from ngps


Posted by 영웅기삼
,