deb 패키지 만들기
데비안, 우분투 계열 에서 만든 응용프로그램을 패키지로 만들어 배포할려면 deb 라는 패키지 파일을 만들어야 한다.
패키지를 만들어 배포하면 설치하기도 쉽고 빌드하기도 쉽다. 패키지 파일을 만드는것은 의외로 쉽다.
1.먼저 패키지 폴더를 만듬니다.
deb 파일은 apk 처럼 앞축된 파일 입니다. 따라서 deb 파일도 앞축 매니저로 열면 열림니다.
패키지 폴더는 설치될 컴퓨터의 루트 ( / ) 폴더와 맞먹는다.
이 말은 루트 디렉토리에 복사 또는 생성이 된다.( 생각을 해보면 이걸이용해서 컴퓨터 어딘가에 악성 코드를 심어도 모를것 같다... 이걸 보면 인증된 패키지만 설치해야 하는 이유를 알것 같다....)
2.패키지 폴더안 DEBIAN 폴더 및 control, preinst, postinst, postrm, prerm 파일 만들기
패키지 폴더는 설치될 컴퓨터에 루트 디렉토리와 맞먹는 다고 하지만 예외적으로 DEBIAN 폴더는 패키지의 전반적인 데이터 파일이 존제 하기 떄문에 이 폴더는 복사 및 이동 되지 않는다.(설치 할떄도 필요 없다.)
3.이제 DEBIAN폴더안에 파일을 만들자
control 파일은 패키지의 의존성, 버전, 이름. 설명 등 여러가지 정보가 들어 있다.
control 파일의 예
Package: pkg-build-essential
Version: 1.3.4
Section: devel
Priority: optional
Architecture: all
Depends: build-essential, subversion, openjdk-7-jdk, libmysqlclient-dev, libmysql++-dev,
libcurl4-openssl-dev,libjson0, libjson0-dev, libjsoncpp0, libjsoncpp-dev, python-twisted-core,
flex, cmake
Recommends: libjson0-dbg, python-mysqldb
Maintainer: Developers <kukuta@gmail.com>
Homepage: http://kukuta.tistory.com
Description: Server Development base library install package
1.0.1 : bug fetch..#1
1.1.1 : bug fetch..#2
1.2.0 : bug fetch..#3
출처: http://kukuta.tistory.com/171
preinst 파일은 deb 패키지가 앞축 해제되기 전에 실행될 스크립트 입니다.
postinst 파일은 deb 패키지가 앞축 해제된 후 패키지가 설치 및 업그래이드 한후 필요한 모든 명령이 담겨 있습니다. 스크립트 입니다.
prerm 파일은 deb 패키지가 삭제되기전에 실행됨니다. 스크립트 입니다.
postrm 파일은 deb 패키지가 삭제된 후에 실행됨니다. 스크립트 입니다.
DEBIAN 폴더안 파일들이 조금 어려울 수있습니다. 다음 글을 참조하시면 됨니다.(영어지만)
preinst
This script executes before that package will be unpacked from its Debian archive (".deb") file. Many 'preinst' scripts stop services for packages which are being upgraded until their installation or upgrade is completed (following the successful execution of the 'postinst' script).
postinst
This script typically completes any required configuration of the package foo once foo has been unpacked from its Debian archive (".deb") file. Often, 'postinst' scripts ask the user for input, and/or warn the user that if he accepts default values, he should remember to go back and re-configure that package as the situation warrants. Many 'postinst' scripts then execute any commands necessary to start or restart a service once a new package has been installed or upgraded.
prerm
This script typically stops any daemons which are associated with a package. It is executed before the removal of files associated with the package.
postrm
This script typically modifies links or other files associated with foo, and/or removes files created by the package. (Also see What is a Virtual Package?, Section 6.8.)
Currently all of the control files can be found in directory /var/lib/dpkg/info. The files relevant to package foo begin with the name "foo" and have file extensions of "preinst", "postinst", etc., as appropriate. The file foo.list in that directory lists all of the files that were installed with the package foo. (Note that the location of these files is a dpkg internal; you should not rely on it.)
출처 : https://www.hivelocity.net/kb/what-are-preinst-postinst-prerm-and-postrm-script-2/
이제 패키지 폴더에 자신이 만든 패키지 (만든 프로그램 )을 시스템에 들어가야 할 위치에 맞게 넣어주시면 됨니다.
이제 다 넣으셧으면
dpkg -b <패키지 폴더 >
명령어로 묵으시면 됨니다.
'Linux' 카테고리의 다른 글
[Linux] zsh에서 agnoster테마 사용하기 [tested in Ubuntu] (0) | 2015.12.21 |
---|---|
[Linux] .desktop 파일 만들기 (0) | 2015.12.01 |
리눅스의 파일/다이렉트 구조 (0) | 2014.10.03 |
리눅스 명령어) chkconfig 명령어 (0) | 2014.09.28 |
리눅스 명령어) strings (0) | 2014.09.25 |