Pkgsrc For Linux User
리눅스 사용자를 위한 pkgsrc 사용법
pkgsrc를 리눅스에서 사용하는 방법을 다루도록 하겠습니다.
2. 장점 ¶
3. pkgsrc 설치 ¶ftp.netbsd.org에서
pkgsrc.tar.gz 를 받거나 CVS에서 체크아웃으로 받습니다. netbsd.org 중앙서버는 사람들이 많이 몰려서 속도도 느리고 접속이 안되는 경우가 있습니다. ftp나 CVS는 속도가 빠른 한국 미러를 이용하는게 좋습니다.
pkgsrc.tar.gz 는 하루에 한번씩 anoncvs.netbsd.org의 pkgsrc를 압축한 것입니다. 압축을 해제한 뒤 꼭 cvs up으로 패키지 리스트를 업데이트 하시기바랍니다.
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.3. 바이너리 패키지 만들기 ¶패키지를 설치 한뒤 아래 명령으로 *.tgz 형식의 바이너리 패키지를 따로 만들 수 있습니다. vim의 경우
/usr/pkgsrc/editors/vim# bmake package
6.4. 패키지 설치때마다 바이너리 패키지를 자동으로 만들게 하기 ¶패키지를 설치할 때마다 *.tgz 형식의 바이너리 패키지를 자동으로 만들게 할 수 있습니다. 이렇게 되면 나중에 시스템을 복구할 때 *.tgz 파일을 백업했다가 다시 설치하면 다시 컴파일 하지 않고도 손쉽게 설치할 수 있습니다.
/etc/mk.conf 에 다음을 추가합니다.
DEPENDS_TARGET=package
bmake install로 패키지를 설치하면 의존성 관계에 있는 패키지까지 모두 바이너리 패키지로 만들어집니다. /usr/pkgsrc/packages 디렉토리 아래에 바이너리 패키지들이 생성됩니다.
(단순히 bmake package로 패키지를 생성할수도 있습니다. --ageldama)
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을 먼저 설치하신 다음에 해야지 작동이 됩니다.
![]() |
Recent investments will yield a slight profit. |