소스 파일 패키징 경험

3일 동안 열심히 삽질한 결과를 드디어 패키지로 만들었다. 그래서 이 글에 다가 패키징한 결과를 적을 것이다.

1. 준비 과정
dh_make, devscripts 패키지 설치
그리고 gpg 생성 및 ppa 등록.


2. 패키지 과정

1) 소스 파일의 압축을 푼다. (압축을 푼 후에 폴더 이름은 소문자와 숫자, +, -, . 기호로 이루어져야 한다.)
2) 소스 파일을 수정할 부분이 있으면 미리 수정한다.
3) 소스 파일 폴더 내에서 다음 명령어를 입력한다.
dh_make -c <저작권명> -s -f ../<소스 압축 파일>
3-1) .bashrc 파일 맨 아래에 아래 명령을 미리 추가해두자. 그러면 이메일과 이름 입력을 반복할 필요가 없다.
DEBFULLNAME="Firstname Lastname"
DEBEMAIL="your.email.address@example.org"
4) /debian 폴더가 생성되고, 그 폴더 내에서 rm *.ex *.EX README.Debian 를 해준다.
5) changlog, control, copyright 를 수정해준다. 이때 changlog 의 버전명을 잘 입력해준다. 나중에 ppa 에 패키지를 등록하고 나면 패치 버전을 등록할 때 버전의 숫자만 바꿔서 등록해줘야 한다.

그리고 control 에서 build-depends 에는 설치할 때 필요한 모든 패키지를 적는다. 그래야 ppa 에 올렸을 때 빌드 과정에서 오류가 안 생긴다. Depends 에는 패키지 의존 파일들을 적어주면 된다.

이 모든 과정은 https://wiki.ubuntu.com/PackagingGuide/Complete 을 참고하면 된다.

6) 파일 수정이 모두 끝났으면 debuild -S 를 실행 한다. debuild 를 실행하면 바이너리 패키지만 생성해준다.

6-1)
debian 패키징 방식이 계속 변경되고 있다... 이전과 같이 gpg 사인을 하면 실패가 되는데, 그전에
~/.devscripts 파일에 다음 내용을 추가해주자.
DEBSIGN_KEYID=Your_GPG_keyID
DEBUILD_LINTIAN_OPTS=-i -I --show-overrides
여기서 Your_GPG_keyID 는 gpg 에 나타나는 키 ID를 적어주면 된다. 그러면 gpg 사인이 제대로 된다.

7) 소스 폴더 하위에 소스 패키지가 생성된다.
8) ppa 에 올리기 위해 미리 ppa 를 생성해두자. 생성 방법은 아래 내용을 참고하면 된다.
런치패드 가입 및 gpg 생성 : http://ubuntu.or.kr/wiki/doku.php/launchpad (참고로 gpg 프로그램으로 seahorse 대신 kgpg 를 사용했다. 그리고 패키지를 만들기 전에 gpg 작업이 선행되어야 한다.)

9) 런치패드에 올리기 위한 준비 작업 및 ppa 에 패키지를 등록한다. 자세한 방법은 아래 참고
http://ubuntu.or.kr/wiki/doku.php/%EB%9F%B0%EC%B9%98%ED%8C%A8%EB%93%9C%EC%97%90_%EC%98%AC%EB%A6%AC%EA%B8%B0_%EC%9C%84%ED%95%9C_%EC%A4%80%EB%B9%84%EC%9E%91%EC%97%85

(주의 ppa 올릴 때 폴더의 경로에 공백이 있을 경우 gpg 사인이 제대로 되지 않음.)

9-1)
위 과정이 다 되었다면, dput [Alias] [Package Name] 을 실행 해주면 된다.

10) 패키지 빌드(서버 상황에 따라서 빌드 시간이 많이 다름) 결과를 확인하자. 실패 했다면 오류가 있다는 것이고, 성공 했다면 바이너리 패키지를 다운 받을 수 있다.


3. 오류의 종류

1) 바이너리 패키지 생성 실패 : 패키지 의존성을 해결되지 않았을 경우 문제가 생길 수 있다.
2) gpg 사인 불가능 : gpg 키를 다시 생성해주자. 참고로 키를 만들 대 "추가 설명"은 반드시 비우자. 나중에 패키징을 할 때 이름, 이메일, 추가 설명까지 비교를 하는데, 동일 하지 않으면 인증이 안된다.

3) ppa 패키지 등록 거절(이메일로 확인 가능) : 패키지의 원본 소스 버전이 같을 경우 거절 당할 수 있다. 만약, 패키지를 올렸는데, 빌드에 실패해서 다시 올리려고 한다면 패키지 버전명을 숫자만 바꿔서 패치 방식으로 올려주면 된다.



여기까지 해서 경험 상의 내용이고, 더 자세한 것은 아래를 참고하자. 내가 지금까지 참고 했던 모든 레퍼런스이다.

데비안 패키지 가이드(한국어) : http://www.debian.org/doc/maint-guide/ch-start.ko.html (버전이 오래 되서 안 맞는 것이 많다.)
데비안 패키지 가이드(영어) : http://www.debian.org/doc/maint-guide/index.en.html (버전은 최신, 영어 압박!)
우분투 패키징 가이드(영어) : https://wiki.ubuntu.com/PackagingGuide/Complete (버전은 최신인데, 영어 압박...)
런치패드 업로딩 가이드(영어) : https://help.launchpad.net/Packaging/PPA/Uploading
런치패드 업로딩 에러 가이드(영어) : https://help.launchpad.net/Packaging/UploadErrors
컴파일해서 패키지 생성하기(한국어) : http://ubuntu.or.kr/viewtopic.php?f=9&t=1538 (오래된 방법 사용)
소스 패키징과 ppa 업로드(한국어) : http://www.ubuntu.or.kr/viewtopic.php?f=9&t=11541 (오래된 방법 사용)

ps. 나중에 더 자세하게 배우게 되면 따로 방법을 올리겠다.

댓글 없음:

댓글 쓰기