· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Pkgsrc For Linux User

리눅스 사용자를 위한 pkgsrc 사용법

pkgsrc를 리눅스에서 사용하는 방법을 다루도록 하겠습니다.



  • 컴파일 방식의 패키지 시스템은 젠투리눅스만 가진 것이 아니다!

1. pkgsrc 소개

pkgsrc는 맨 처음 NetBSD를 위한 패키지 시스템으로 개발 되었습니다. 이제는 NetBSD 뿐만이 아닌 Darwin (Mac OS X), FreeBSD, IRIX, Linux, OpenBSD, Solaris등 멀티플랫폼을 지원하고 있습니다.

레드햇, 데비안, 슬렉웨어 등 모든 리눅스 배포판에서 사용할 수 있습니다.

2. 장점

  • 젠투 리눅스 처럼 모든 것을 컴파일 해서 설치합니다.
  • /usr/pkg 디렉토리 안에 모든 실행 파일 및 라이브러리를 설치하기 때문에 일관성 있게 관리 할 수 있습니다.
  • 의존성이 있는 패키지는 관계된 패키지를 자동으로 같이 설치합니다.
  • 모든 리눅스 배포판에서 사용가능합니다.
  • 최신 소스를 프로그램 공식 사이트에서 받아옵니다.
  • 패키지 리스트 업데이트가 빠릅니다.

특히 레드햇을 쓰고 싶은데 프로그램은 소스를 컴파일해서 설치하고 싶다면 pkgsrc를 이용하면 됩니다. 일일이 소스를 받아서 설치할 필요가 없습니다. 컴파일해서 설치한 후 삭제도 간편하게 할 수 있습니다.

3. pkgsrc 설치

ftp.netbsd.org에서 pkgsrc.tar.gz를 받거나 CVS에서 체크아웃으로 받습니다. netbsd.org 중앙서버는 사람들이 많이 몰려서 속도도 느리고 접속이 안되는 경우가 있습니다. ftp나 CVS는 속도가 빠른 한국 미러를 이용하는게 좋습니다.

pkgsrc.tar.gz는 하루에 한번씩 anoncvs.netbsd.org의 pkgsrc를 압축한 것입니다. 압축을 해제한 뒤 꼭 cvs up으로 패키지 리스트를 업데이트 하시기바랍니다.

3.1. pkgsrc 받기

3.1.1. ftp에서 받기

ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz

pkgsrc를 받은뒤에 /usr에 압축을 해제 합니다.

3.1.2. CVS에서 체크아웃

/usr 디렉토리로 이동합니다.
usr# cvs -d:pserver:anoncvs@anoncvs.netbsd.org:/cvsroot login
패스워드로 anoncvs를 입력
usr# cvs -z5 -d:pserver:anoncvs@anoncvs.netbsd.org:/cvsroot co -P pkgsrc

3.2. bootstrap 설치

pkgsrc를 사용하기 위한 최소한의 유틸리티를 설치합니다.

데비안의 경우 libncurses5-dev 패키지를 설치해야 합니다.

/usr/pkgsrc/bootstrap으로 이동합니다.
# cd /usr/pkgsrc/bootstrap
/usr/pkgsrc/bootstrap# ./bootstrap

mk.conf 복사
/usr/pkgsrc/bootstrap# cp work/mk.conf.example /etc/mk.conf

환경변수의 PATH에 /usr/pkg/bin 디렉토리를 추가합니다.

3.3. pkg_install 설치

기본적인 pkg_info, pkg_delete 등의 명령을 설치합니다.

/usr/pkgsrc/pkgtools/pkg_install로 이동합니다.
# cd /usr/pkgsrc/pkgtools/pkg_install
/usr/pkgsrc/pkgtools/pkg_install# bmake install

환경변수의 PATH에 /usr/pkg/sbin 디렉토리를 추가합니다.

4. 패키지 설치

/usr/pkgsrc로 이동합니다. 디렉토리에 프로그램 종류별로 잘 분류되어 있습니다.

각각 프로그램들은 그 프로그램의 공식 사이트에서 소스파일을 받아 컴파일해서 설치합니다.

의존성이 있는 패키지들은 자동으로 같이 설치합니다.

vim을 설치하고자 하는 경우.
# cd /usr/pkgsrc/editors/vim
/usr/pkgsrc/editors/vim# bmake install

KDE 설치
# cd /usr/pkgsrc/meta-pkg/kde3
/usr/pkgsrc/meta-pkg/kde3# bmake install

GNOME 설치
# cd /usr/pkgsrc/meta-pkg/gnome
/usr/pkgsrc/meta-pkg/gnome# bmake install

5. 최신 패키지 리스트 업데이트

젠투리눅스의 emerge rsync와 똑같은 역할을 합니다. 패키지들의 리스트를 최신 상태로 업데이트 합니다. 매일 60~80회 정도 갱신이 됩니다.

ftp에서 받았거나 CVS를 체크아웃 한 경우 모두 아래처럼 cvs up으로 업데이트 합니다.
# cd /usr/pkgsrc
/usr/pkgsrc# cvs up

6. 패키지 관리

6.1. 설치된 패키지 리스트 보기

# pkg_info

6.2. 패키지 삭제

# pkg_delete 패키지 이름

6.3. 바이너리 패키지 만들기

패키지를 설치 한뒤 아래 명령으로 *.tgz 형식의 바이너리 패키지를 따로 만들 수 있습니다. vim의 경우
/usr/pkgsrc/editors/vim# bmake package
/usr/pkgsrc/packages 디렉토리 아래에 바이너리 패키지들이 생성됩니다.

6.4. 패키지 설치때마다 바이너리 패키지를 자동으로 만들게 하기

패키지를 설치할 때마다 *.tgz 형식의 바이너리 패키지를 자동으로 만들게 할 수 있습니다. 이렇게 되면 나중에 시스템을 복구할 때 *.tgz 파일을 백업했다가 다시 설치하면 다시 컴파일 하지 않고도 손쉽게 설치할 수 있습니다.

/etc/mk.conf 에 다음을 추가합니다.
DEPENDS_TARGET=package

bmake install로 패키지를 설치하면 의존성 관계에 있는 패키지까지 모두 바이너리 패키지로 만들어집니다. /usr/pkgsrc/packages 디렉토리 아래에 바이너리 패키지들이 생성됩니다.

(단순히 bmake package로 패키지를 생성할수도 있습니다. --ageldama)

6.5. 바이너리 패키지 설치

바이너리 패키지를 설치합니다.
# pkg_add 패키지 이름.tgz

7. 일반 사용자 계정에서 사용

root가 아닌 일반 사용자 계정에서 pkgsrc를 사용하려면 약간의 설정이 필요합니다.

/home/pyrasis 아래에 pkg, var 디렉토리를 설치합니다.
# cd /home/pyrasis/pkgsrc/bootstrap
/home/pyrasis/pkgsrc/bootstrap$ ./bootstrap --prefix=/home/pyrasis/pkg \
    --pkgdbdir=/home/pyrasis/var/db/pkg --sysconfdir=/home/pyrasis/pkg/etc \
    --ignore-user-check

mk.conf/home/pyrasis/pkg/etc에 복사합니다.
/home/pyrasis/pkgsrc/bootstrap$ cp work/mk.conf.example /home/pyrasis/pkg/etc/mk.conf

환경변수의 PATH에 /home/pyrasis/pkg/bin 디렉토리를 추가합니다.

mk.conf의 위치를 지정해 줍니다. 이 부분은 각 사용자 계정의 .profile이나 .bashrc 파일에 추가합니다.
$ export MAKECONF=/home/pyrasis/pkg/etc/mk.conf


8. 질문과 답변

pkgsrc에서 make install을 실행하고 중간에 사고로 컴파일하고 설치되던 것들이 중단되면 어떻게 해야 하나요? 시스템을 복구하고 그냥 다시 make install을 해도 되나요?
검색해 보니 해결책이 있군요. mk.conf 파일에 PKG_RESUME_TRANSFERS=yes 문구를 써 주면 된다고 합니다.

pkgsrc가 gentoo의 portage와 다른 점이라면 어떤 것이 있을까요?
다른점이라면 portage는 젠투 리눅스에서 밖에 사용하지 못한다는 점이고, pkgsrc는 *BSD, Linux, Solaris, IRIX등 여러 플랫폼에서 사용가능하다는 점입니다.

기존의 리눅스 배포판에서도 사용할 수 있다고 하였는데, pkgsrc 자체적으로 의존성 정보를 어딘가 저장하고 있다면, 예를 들어 foo라는 프로그램을 pkgsrc로 깔려고 할 때 bar라는 프로그램이 필요한데 이미 패키지로 설치가 되어 있다면 어떻게 되는지요?
RPM이나 DEB등 여타 다른 패키지 시스템으로 설치된건 인식하지 못합니다. 오직 pkgsrc로만 설치된 패키지만 인식합니다. 의존성 있는 패키지가 pkgsrc로 설치 되었다면 그냥 넘어 갑니다. (pkgsrc는 /usr/pkg 안에 모든 파일과 라이브러리가 들어가기 때문에 다른 패키지 시스템이 설치한것을 덮어 쓰거나 어지럽히지는 않습니다.)

조금 당연한 질문 같기도 한데.... pkgsrc 자체의 사용 방법은 어느 OS에서나 동일하겠지요? NetBSD에서만 특별히 다른 옵션이나 기능이 더 들어가거나 하는 부분은 없나요?
네 없습니다. 다른점이 있다면 리눅스는 BSD make가 없기 때문에 bmake라고 따로 설치하고 NetBSD는 기본적으로 BSD make가 있으므로 그냥 make install 입니다. --pyrasis

bmake install이 끝난 다음에 만들어지는 시작 스크립트는 BSD에서 쓰이는 시작 스크립트인 것 같습니다. Apache와 같은 데몬들의 시작 스크립트는 직접 작성해야 합니까?
/usr/pkg/share/examples/rc에 자동으로 설치되어 있습니다. 원하는 위치에 복사해서 사용할 수 있습니다. 아참. pkgtools/rc.subr을 먼저 설치하신 다음에 해야지 작동이 됩니다. ;-) --ageldama



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2007-01-08 02:53:18
Processing time 0.0736 sec