데비안 패키지 만들기 (1) - deb 파일 만들기
GOAL ?
: 간단한 예제로 데비안 패키지를 만들고 .deb 파일까지 만들어 실행해보기
빈 디렉토리에서 부터
빈 디렉토리에서부터 간다한 데비안 패키지를 만들어보겠습니다.
1. debhello-0.0 디렉토리를 만듭니다.
mkdir debhello-0.0
debhello-0.0/ 하위에 소스 디렉토리를 만들고 c언어로된 간단한 파일을 만들어줍니다.
<hello.c 소스 예제>
#include <stdio.h>
int
main()
{
printf("Hello, world!\\n");
return 0;
}
그리고 src/ 폴더 위치에 Makefile 을 생성해줍니다.
touch Makefile
vi Makefile
cat Makefile
그리고 패키지를 빌드하기위해서는(= .deb 실행파일을 만들기 위해서) debhello-0.0/ 디렉토리 위치에 원본 파일에 대한 압축 tarball 파일이 필요합니다.
debhello-0.0/ 위치로 이동해서 현재 폴더를 압축해주면됩니다.(압축형식을 'tar.gz' 형식으로)
tar -zcvf debhello-0.0.tar.gz debhello-0.0
그러고 debhello-0.0/ 디렉토리 하위로 들어가서
debmake 명령어를 실행해 데비안 패키지 템플릿을 생성합니다.
debmake
demake 명령은 명령줄 옵션을 기반으로 이러한 모든 템플릿 파일을 생성합니다. 옵션을 주지 않으면 모두 디폴트 값을 기반으로 생성됩니다.
또한debmake 명령어를 사용하면기본값으로 아래와 같이생성됩니다.
• 소스 패키지 이름: debhello
• 업스트림 버전: 0.0
• 바이너리 패키지 이름: debhello
• 데비안 개정판: 1
• 패키지 유형: bin(ELF 이진 실행 패키지)
그리고 아래의 파일과 디렉토리가 생성됩니다.
1) debhello_0.0.orig.tar.gz
2) debhello-0.0/debian/
첫 번째 {패키지명}.orig.tar.gz 파일은 패키지를 나중에 수정 및 재배포 등을 하더라도 원작자의 소스등을 가지고있어야하는 데비안 패키지 규칙상 필요한 파일입니다. 때문에 반드시 초기 버전 원본 소스를 가지고있어야 패키지 빌드가 가능하도록 되어있습니다.(debuild 명령어 수행시 필요 조건)
두번째 debian/ 디렉토리 하위에 생성되는 디렉토리와 파일들은 모두 패키지의 버전 및 빌드 규칙등을 정의해둔 데비안 패키지 템플릿 파일들입니다. 후에 소스를 변경하여 다음 버전의 패키지를 만들고자 할때 이곳의 changelog를 변경하고 커밋하면 변경사항에 대한 패치파일이 생성됩니다.
빌드를 하기 전에 기본 데비안 패키지의 템플릿이 생성되었으면 이제 데비안 패키지를 유지관리하기 위해서는 몇 가지 수동 수정이 필요합니다.
1) debian/rules 수정하기 (필수적)
: 패키지를 설치했을때 시스템 파일의 일부로 파일을 설치하려면 Makefile에서 /usr/local의 $(프리픽스) 값을 입력해야 합니다.
debian/rules에서 해당 수행을 하는데 기본으로 주석처리 되있는 부분 중 박스 친 부분들을 해제 시켜줍니다.
2) debian/control 수정하기
: default 값에서 새롭게 생성하는 패키지의 maintainer 라면 관련 정보를 입력해줍니다.
3) debian/copyright 수정하기
3)debian/changelog수정하기
수정을 완료한 다음 /debhello-0.0 디렉토리로 이동한다음
debuild 명령어를 통해 패키지를 build를 합니다
debuild
• debhello_0.0.origin.tar.gz는 업스트림 tarball (원본 패키지)의 심볼 링크입니다.
• debhello_0.0-1.debian.tar.xz 에는 maintainer 가 생성한 컨텐츠가 포함되어 있습니다.
• debhello_0.0-1.dsc는 Debian 소스 패키지의 메타데이터 파일입니다.(= 소스파일 -> 후에 apt저장소에 deb파일만 말고 소스를 올릴때 사용)
• debhello_0.0-1_amd64.deb는 Debian 바이너리 패키지입니다.
• debhello_0.0-1_amd64.changes는 Debian 바이너리 패키지의 메타데이터 파일입니다.
** debhello_0.0-1.debian.tar.xz 에는 업스트림 소스에 대한 데비안 변경 사항이 포함되어 있습니다.
이제 생성한 패키지가 정상적으로 패키징 되었는지 설치하고 실행해보겠습니다.
패키지 설치에 필요한 파일은 debhello_0.0-1.amd64.deb 파일로 더블클릭해서 설치하거나
debuild dpkg -i debhello_0.0-1.amd64.deb
명령어를 통해 설치할 수 있다.
설치 중에 이런 오류가 나는 경우 /usr/bin/ 에 hello.sh 라는 동일한 실행명령어가 있기 때문에 나는 오류로
해당 패키지가 필요하지 않다면 지우고 다시 설치하면 됩니다. ( apt remove --auto-remove hello
)
설치가 완료되면 터미널에 실행명령어 'hello' 를 통해 실행해 볼 수 있습니다.
다음번엔 패키지의 버전 관리에 대해서 다루어 보겠습니다.
-----------------------------------------------------------------------------------------------------