Linux Deb 파일 만들기
※ 패키지로 만들 경우엔 의존도 별 패키지 구성이 달라야 합니다. Rpm을 deb로 변환시킬 수 있으나 패키지내에서도 필요 라이브러리가 달라 문제가 될 수 있습니다. 패키지 구성에 대한 정합성을 확보하여 만드시기 바랍니다.
디렉토리 구조
데비안 패키지 생성은 어렵지 않다. 먼저 데비안 패키지 파일에 패키징할 파일을 저장한 [작업 디렉토리]를 하나 만든다.
그리고 그 아래 [홈 디렉토리]에 설치될 경로와 파일을 저장한다.
ex) /home/test 면 이 패키지를 설치하는 시스템에 /home/test 라는 디렉토리가 생성이되고 [작업 디렉토리]아래에 /home/test/test.jar 라는 파일이 있으면 대상 시스템에도 같은 경로에 파일이 설치된다.
1. 패키지 할 파일들을 “작업 디렉토리”에 이동
- Ex) /nprotect
2. “/Home 디렉토리”에 설치될 경로와 파일 저장
3. “작업 디렉토리” 아래에 “/DEBIAN” 아래는 설정 파일 저장.
- control 이라는 필수 파일 필요. (패키지 명 등 필 수 정보. 아래 예제 참고)
- control 파일 이외에도 추가 설정 파일을 통해서 인스톨 전 후의 추가 작업을 preinst이나, postinst, postrm 등 스크립트를 지정 가능
(preinst : 패키지 설치 전 실행 스크립트, postinst: 패키지 설치 후 실행, Postrm: 패키지 삭제 후 스크립트)
Package: ${build.finalName} Version: ${project.version} Section: misc Priority: low Architecture: amd64 Depends: (의존성따라 등록) Description: (패키지 설명) Maintainer: (개발 이메일) |
4. 최종 패키지 내용 구성이 끝나면 dpkg 명령어를 통해 빌드만 하면 완료.
“dpkg-deb --build {작업 디렉토리명}” 명령어를 실행하면 deb확장자로 패키지 파일 제작 가능
파일 구조
패키지에 대한 정보를 설정하기 위해서는 [작업 디렉토리] 아래에 “/DEBIAN” 디렉토리 안에 각종 설정 파일을 넣어둘 수 있는데, control 이라는 파일은 필수로 필요한 파일이다. 이 파일에는 데비안 패키지의 필수 정보인 패키지명, 정보들이 들어간다.
S
Package: ${build.finalName} Version: ${project.version} Section: misc Priority: low Architecture: amd64 Depends: (의존성따라 등록) Description: (패키지 설명) Maintainer: (개발 이메일) |
Package: Package_TEST Version: 1.0 Section: misc Priority: low Architecture: all Depends: oracle-java8-installer | openjdk-8-jre Description: zzang_yang Maintainer: zzang_yang@mail.com |
각 항목을 살펴보자
- Package : 가장 중요한 항목으로 패키지 명을 정의한다. apt-get install 시, 이 패키지명으로 지정해서 인스톨을 한다.
- Version : 패키지 버전이다. 설치된 패키지를 업그레이드할때 이 버전을 비교하기 때문에 매우 중요한 필드 이다. 버전이 같으면 내용이 다르더라도 업데이트가 되지 않으니 주의가 필요하다.
- Section : 패키지의 분류인데, 크게 중요하지는 않다.
- Architecture : 설치 가능한 CPU 플랫폼 종류를 정의한다.
- Depends : 이 패키지를 실행하기 위해서 필요한 다른 패키지명을 리스팅 한다. 예를 들어 자바 애플리케이션의 경우 JDK를 설치하도록 할 수 있다. 위의 예제는 oracle-java8이나, openjdk-8 런타임을 설치하도록 정의되어 있다.
- Description : 패키지에 대한 설명을 적는다.
- Maintainer : 패키지를 관리하는 개발자 이메일을 적는다.
control 파일 이외에도 추가 설정 파일을 통해서 인스톨전 후의 추가 작업을 preinstall이나, postinstall 스크립트를 지정할 수 있다.