Updated:

How to make debian package

1. Install Basic Packaging Software

  • shell 환경 변수를 setting합니다. 환경변수를 setting하지 않으면 뒤에 나올 dch로 changelog를 만들어 줄 때 user localhost email이 자동으로 들어가기 때문에 수정이 필요.
$ vi ~/.bashrc
DEBEMAIL="smilejj91@naver.com"
DEBFULLNAME="smilejj91"
export DEBMAIL DEBFULLNAME
$ apt-get install -y build-essential git-buildpackage sbuild schroot debootstrap debhelper tmax-archive-keyring dput piuparts
  • git config 등록
$ git config --global user.email "smilejj91@naver.com"
$ git config --global user.name "Jaejeon Lim"

2. Git Project 생성

  • 소스 패키지 다운로드
$ apt source --download-only {binary package name}
$ gbp import-dsc {source package name}_{version}.dsc
$ cd {source package name}
$ git checkout master
$ git checkout -b devel # branch 정책은 입맛에 맞게
$ git remote add origin {소스 관리를 위해 생성한 git project 주소}
$ git push -u origin --all
$ git push -u origin --tags

3-1. Fix Package

  • debian/source/format 파일에 3.0 (quilt)로 명시된 경우
$ git checkout devel
$ gbp pq import # patch-queue branch 자동 생성 및 진입

# Fix source 
$ vi {Files}

# Build Test (Optional)
$ debuild -us -uc -b 
$ dpkg -i ../{package}.deb

$ git commit
$ gbp pq export --commit
$ gbp pq drop # patch-queue branch 자동 삭제 및 devel branch 자동 진입
$ gbp dch -c -N {new version} --debian-branch=devel
$ gbp dch -c -R -D {distribution} --debian-branch=devel # change debian/changelog distribution
$ git tag {new version}
$ git push origin devel
  • debian/source/format 파일에 native로 명시된 경우
$ git checkout devel

# Fix source
$ vi Files

# Build Test (Optional)
$ debuild -us -uc -b 
$ dpkg -i ../{package}.deb

$ git commit
$ git checkout devel
$ gbp dch -c -N {new version} --debian-branch=devel
$ gbp dch -c -R -D {distribution} --debian-branch=devel # change debian/changelog distribution
$ git tag {new version}
$ git push origin devel

3-2. Make New Package

  • 새로운 패키지를 만드는 경우
$ mkdir new_package
$ cd new_package
$ git init --initial-branch=debian/master

# 파일 생성 및 수정
## Case 1. Upstream 있는 경우
$ gbp import-orig -u {version} {tarball}
## Case 2. Upstream 없는 경우
$ git add src
$ git commit

# make debian directory
$ apt-get install -y dh-make
$ dh_make -p {package name}_{version} --createorig

# debian/* 파일 적절하게 수정

4. Sandboxing Build (dist: bullseye, arch: amd64)

  • sbuild를 사용하려면 chroot를 생성하고 sbuild 그룹에 자신을 추가
# 최초 1회 실행
$ sbuild-createchroot --include=eatmydata,ccache,gnupg --arch=amd64 \
--components=main,contrib,non-free bullseye \
/srv/chroot/bullseye-amd64-sbuild http://deb.debian.org/debian
$ sbuild-adduser root
$ cp /usr/share/doc/sbuild/examples/example.sbuildrc ~/.sbuildrc
$ newgrp sbuild

$ sbuild -A -d bullseye --run-piuparts --run-autopkgtest

Leave a comment