2009년 6월 19일 금요일

패키지 생성하는 법

대부분의 유저들이 자기가 원하는 프로그램의 설치를 위해 패키지를 사용해 보셨을겁니다. 힘들게 프로그램 소스를 컴파일해서 설치를 하는 것보다 미리 컴파일 되어 있는 파일들을 묶어놓은 패키지를 설치하는것이 한결 편하고 간단하죠..  
  
하지만 지금까지는 누군가가 만들어 놓은 패키지만을 설치했었습니다. 이제 직접 패키지를 만들어서 한번 설치를 해보세요.  
  
특히 소스 컴파일을 해서 동일 아키텍쳐를 가진 시스템에 자주 설치를 해야할 프로그램이 있다면 한번만 컴파일 해서 패키지로 만들어 놓고 다음부터는 패키지만 설치를 하면 되기 때문에 아주 유용합니다. 이런 경우에는 소스 컴파일을 할 때 --prefix 옵션을 사용해서 설치 디렉토리를 다른 곳으로 바꾸어놓고 설치를 한 후 그 디렉토리를 패키지를 만들때 소스 디렉토리로 사용하시면 편리합니다.  
  
  
그럼 지금부터 /usr/local 디렉토리를 base로 하는 패키지를 만들어보겠습니다.   
  
  
  
1. 패키지로 만들 파일들을 임시 작업 디렉토리로 복사한다.   
  
# mkdir -p /var/tmp/pkg/PKGNAME  
# cd /var/tmp/pkg/PKGNAME  
# cp -rp /src/mypkg/* .  
# ls -l  
total 6  
drwxr-xr-x   5 bin      bin         4096 Apr 21 11:08 bin  
drwxr-xr-x  15 bin      bin         4608 Apr 21 11:08 lib  
drwxr-xr-x   2 bin      bin         1536 Apr 20 23:00 sbin  
  
  
--> 베이스 디렉토리가 /usr/local/ 이기 때문에 패키지로 만들 파일들을 위와 같이 디렉토리를 구성하고 그 안에 넣어두었습니다.  bin 안에 파일들은 /usr/local/bin , lib는 /usr/local/lib , sbin은 /usr/local/sbin 디렉토리로 설치가 됩니다.  
  
  
  
2. 설치될 파일들의 퍼미션을 원하는대로 조정한다.  
  
  
  
3. protoype 파일을 생성한다.  
  
# cd /var/tmp/pkg/PKGNAME  
# find . -print | pkgproto > ../prototype  
  
  
   
4. pkginfo 파일을 생성한다.  
  
# cd /var/tmp/pkg/PKGNAME  
# vi pkginfo  
PKG=PKGname  
NAME=Test Package for Solaris School User  
VERSION=1.0  
CATEGORY=application  
ARCH=SPARC  
VENDOR=Moon Microsystems :-)  
BASEDIR=/usr/local  
EMAIL=admin@_NOSPAM_unixedu.org  
  
  
  
5. pkginfo 파일의 위치를 prototype 파일에 추가해준다.  
  
# vi /var/tmp/pkg/prototype  
.  
. (생략)  
.  
i pkginfo=/var/tmp/pkg/PKGNAME/pkginfo  
  
  
  
6. 패키지를 생성한다.  
  
# cd /var/tmp/pkg/PKGNAME  
# pkgmk -f ../prototype -b/var/tmp/pkg/PKGNAME  
  
/var/spool/pkg/PKGNAME 이라는 디렉토리에 지금 만든 패키지가 생성이 되어 있습니다.   
  
# ls /var/spool/pkg  
total 2  
drwxr-xr-x   3 root     other        512 Apr 21 19:52 PKGNAME  
  
  
  
7. 하지만 여기에는 pkginfo, pkgmap 파일과 reloc 디렉토리가 위치해 있기 때문에 이것을 우리가 사용하는 패키지 스트림 형태로 변환을 해주어야 합니다.  
  
# pkgtrans -s /var/spool/pkg /tmp/PKGNAME.pkg  
# gzip /tmp/PKGNAME.pkg  
  
  
  
8. 이제 완성된 /tmp/PKGNAME.pkg.gz를 여기저기 뿌리고 다니면 됩니다~~



출처 너 무슨생각하니? | 형수형
원본 http://blog.naver.com/gudtn7995/90000358463

댓글 없음:

댓글 쓰기