Debian Packaing
Debian Packaing Process
2018.04.04
Infrastructure Development Team. 심경섭
목차
I. 개요
II. Debian Packaging Process
III. Debian Directory
IV. Make Package
V. QnA
개요
Packaing ?
• Application 과 관련된 파일들을 쉽게 배포하고, 설치하기 위한 과정
• iOS/Android 에서 App Store/Play Store 의 App 배포 과정과 유사
App 배포 과정
Debian Packaging 과정
Debian Packaging 과정
Debian Packaging Manifest
Debian Kernel Source
Code
개요
• Debian 에서는 어떻게 패키지를 관리할까?
• Debian 에서는 어떻게 패키지를 만들까?
Debian Packaging Process
패키지 등록
• 신규 패키지 등록
• 기존 패키지 확인
• 이슈 등록
• 기존 패키지 수정
• 이슈 등록
Maintainer
• Debian 에서는 패키지마다 담당 관리자가 존재
• Package 는 모두 Maintainer 를 가지고 있음
Maintainer
패키지 확인
• WNPP에서 관련된 목적의 패키지가 있는지 확인
• Work-Needing and Prospective Packages 의 약자
• 패키지들의 리스트가 있는 사이트
• Debian(Repository)에 반영되기를 기다리는 패키지들의 목록이 있는 곳
• https://www.debian.org/devel/wnpp/
• 메일이나 reportbug 프로그램을 이용해서 추가
• 패키지를 추가하는 것이 아닌, 패키지의 상태를 등록하는 것
이슈 등록 (WNPP Report)
이슈 등록 (WNPP Report)
이슈 등록 (WNPP Report)
이슈 등록 (WNPP Report)
이슈 등록 (E-Mail)
WNPP Request Type
• ITP (Intent To Package)
• 패키지의 설명을 저작권과 관련된 URL을 참조해서 제출
• O (Orphaned)
• maintainer가 없어져, 새로운 maintainer가 필요한 상태
• RFA (Request For Adoption)
• 현재 maintainer가 다른 maintainer 를 구하고 있는 상태
• 현재 maintainer가 바쁘거나 흥미가 없는 상태
• 이 패키지는 한동안 유지될 것이지만, 적극적으로 관리되지는 않는 상태
WNPP Request Type
• RFH (Request For Help)
• 현재 maintainer가 패키지를 관리하길 원하나 도움이 필요한 상태
• RFP (Request For Package)
• Debian에서 관리하고 싶은 패키지
• 저작권이나 관련된 URL, 설명을 요청한 상태
Severity Levels
이슈 등록 확인
• Debian BTS 에서 검색으로 확인 할 수 있음
• 이메일이나 키워드로 검색하면, 해당 이슈에 대한 number 가 확인됨
• https://www.debian.org/Bugs/
이슈 등록 확인
• https://wnpp.debian.net
업로드 정책
• stable 에 업로드 하는 것을 엄격하게 제한
• 예를 들어, 현재 stable인 jessie 를 타겟으로 패키지를 새로 올리기 어려움
• 업로드 가능 조건
1. 기존 패키지 혹은 시스템에 치명적인 기능상의 문제가 있을 경우
2. 업로드된 패키지가 설치되지 않는 경우
3. 릴리즈된 아키텍처에 필요한 패키지가 없는 경우
• oldstable 의 경우도 위의 조건을 만족시켜야함
업로드 정책
• 패키지 파일을 ftp 서버에 업로드
• 패키지 파일에는 서명된 changes 파일과 dsc 파일이 포함되어야함
• dsc 파일은 debian source control 파일임
• Source package Layout 에 따라 필요한 파일을 업로드함
• ftp.upload.debian.org 의 /pub/UploadQueue/ 디렉토리에 업로드
• ftp://ftp.upload.debian.org/pub/UploadQueue/
• UploadQueue README 파일 참조
• ftp://ftp.upload.debian.org/pub/UploadQueue/README
Debian Directory
Debian Directory
• Debian pacakge 를 구성하기 위한 패키지 정보를 담은 디렉토리
• changelog, control, copyright, rules 파일이 가장 중요
• 그 외, compat, README, docs, source/format 등의 파일들이 있음
changelog
• Debian 패키지의 변경 기록을 적은 파일
• 패키지 명과 버전, release 버전, 변경 내역등이 작성됨
• 버전은 “<upstream 버전>-<debian 버전>” 으로 작성
• Ex) 1.0.0-1
Upstream definition in Ubuntu
• Most of the software available through Ubuntu is not written by
Ubuntu developers themselves.
• Most of it is written by developers of other Open Source projects
and then integrated into Ubuntu.
• These projects are called “Upstreams”, because their source code
flows into Ubuntu, where we “just” integrate it.
changelog
• 변경 내역에 Debian 의 이슈가 있을 경우, 이슈 번호를 기록
• ”Closes: #XXX” 와 같은 형태
• 핵심 변경 사항은 ”*” 를 사용해서 표기
• 핵심 변경 사항과 관련된 하위 변경 사항은 “-” 을 사용해서 표기
• 작성 일자는 RFC 5322 형식에 맞춰서 작성
changelog
control
• 패키지의 메타 정보를 기록한 파일
• Source 패키지의 정보와 생성할 debian 패키지의 정보를 작성
• Source 패키지 정보
• Source 이름, section, maintainer, build-depends 등을 기록
• Debian 패키지 정보
• Package 이름, architecture, depends, description 등을 기록
control
copyright
• 패키지 내부 파일들의 라이센스를 명시
• 파일별, 디렉토리 별로 나눠서 작성할 수 있음
copyright
README, doc
• 패키지를 사용하기 위한 정보를 담은 파일
• README 나 doc 파일을 만들어 내용을 작성
• doc 파일은 upstream source 에 대한 문서
• README 파일은 비표준적인 특징이 있는 경우 작성
README, doc
source/format
• 초기 생성된 내용을 그대로 유지
• 소스 패키지의 버전을 명시
• 1.0 : 기본 형식 (Default 값)
• 3.0 (quilt) : upstream 과 분리된
• 3.0 (native) : debian native 패키지 (upstream 이 없음)
source/format
rules
• Makefile 같이 패키지의 빌드를 위한 파일
• debhelper 에 의해서 많은 부분이 자동화 되어있음
• dh 명령을 사용해서 빌드를 수행함
• 설정을 커스터마이징 할 수 있음
• 패키징 로그는 “debian/package.debhelper.log” 파일에 기록됨
rules
rules
rules
rules
rules
install
• dh_install 에 의해서 옮겨지는 파일 목록
• 생성되는 패키지가 하나면, 파일 명을 “install” 로 설정
• 여러개의 패키지가 생성되면 “<패키지명>.install” 로 설정
Watch
• upstream 패키지를 debian 패키지로 만들 때, 선택적으로 사용
• upstream 패키지의 업데이트 상태를 확인
Watch
Make Package
Requirement
• packaging-dev
• 패키징에 관련된 모든 패키지를 담고 있는 패키지
• 너무 많은 패키지가 들어있음
• devscripts
• Debian 패키지 관리를 도와주는 script 들을 가지고 있는 패키지
• Dch, debclean, debi, debpkg, debuild 등의 패키지가 포함되어 있음
Requirement
• dh-make
• Debian 패키지를 만들기 위한 debian 디렉토리를 생성해주는 tool
• Upstream source code 를 사용하거나 native debian package 를 만들 수 있음
• git-buildpackage
• Git 을 사용한 형상 관리와 debian 패키징을 위한 tool
• 주로 사용하게 됨
Requirement
• pbuilder
• 시스템과 분리된 독립된 환경에서 패키지를 빌드할 수 있도록 해주는 tool
• debootstrp 을 이용해서, chroot 환경을 만들어줌
• lintian
• Debian directory 의 문법 오류나 형식, 정책 위반을 검증해주는 tool
Requirement
Pbuilder
• 빌드를 위한 깔끔한 환경을 제공해줌
• 시스템의 설정을 수정하지 않고, 다양한 빌드 환경을 만들어줌
• Ubuntu 나 Debian 의 다양한 릴리즈 환경을 지원
• ”pbuilder-dist <release> create” 명령을 사용
• Ex) pbuilder-dist jessie create
Pbuilder
Pbuilder
Pbuilder
Create Debian Directory
• “dh_make” 명령을 사용해서 debian 디렉토리 생성
• 불필요한 템플릿 파일을 제거
• 주요 파일에 대한 내용 작성
Create Debian Directory
Change log 작성
I. ”dch –i” 로 changlog 를 작성
II.Debian BTS 의 이슈가 있을 경우 “Closes: #XXX” 로 작성
III.작성자와 이메일 정보를 확인
IV.작성 일자를 확인
1. RFC 5322 형식에 맞춰서 작성
Change log 작성
Change log 작성
Change log 작성
빌드
• ”debuild” 옵션을 사용해서 빌드
• -F : Full Packaging
• -S : Source Code Packaging
• -b : Binary Pacakging
• -us –uc : 패키지에 서명을 하지 않는 옵션
빌드
빌드
빌드
Debian Directory 정적 분석
• “lintian” 툴을 사용해서 debian package 를 정적 분석
• 패키지 내부의 버그나 정책 위반을 분석
• Error 와 Warning 으로 구분
• dsc 파일과 deb 파일을 분석
Debian Directory 정적 분석
Debian Directory 정적 분석
Git 을 사용한 패키징
• 소스 코드의 형상을 관리하기 위한 방안으로 Git 을 사용함
• Git 에서 제공해주는 패키징 툴이 있음
• git-buildpackage 를 설치
• Git 사용자/이메일 등록을 먼저 해야함
Git 사용자 등록
• 전역 설정으로 git 의 사용자와 이메일을 등록
• ”git config” 명령을 사용
소스 코드 등록
• 소스 코드의 디렉토리로 이동
• “git init” 명령을 사용해 “.git” 폴더 생성
• 관련된 소스 코드 “add”
• ”commit”
Packaging
• “git-buildpackage” 명령을 사용
• 최신 버전에서는 ”gbp buildpackage” 로 변경됨
Packaging
Packaging
Tagging
• 소스 코드의 형상을 유지하기 위한 또 하나의 방법
• git 에서 제공해주는 명령을 사용해서 tag 를 생성
• Upstream tag 와 Debian tag 가 있음
Upstream Tag
• “git tag” 명령을 사용
• Tag 의 이름을 지정할 수 있음
Upstream Tag
Debian Tag
• “gbp buildpackage” 명령을 사용
• Tag 의 이름이 “debian/버전” 형태로 고정됨
• 버전은 changelog 에 있는 마지막 버전으로 표기됨
Debian Tag
QnA
KOREA
U.S.A.
JAPAN
Yeouido, Seoul www.pentasecurity.co.kr (HQ)
Houston, Texas www.pentasecurity.com
Shinjuku-Ku, Tokyo www.pentasecurity.co.jp
Copyright 2017 Penta Security Systems Inc. All rights reserved.

More Related Content

PPTX
Ubuntu packaging - make package
PDF
Debian packaging - Advanced
PDF
Python Packaging & Debian Packaging
PPTX
Ubuntu packaging - deploy package
PPTX
PDF
Debian 패키지 관리 프로세스
PDF
JetsonTX2 Python
PDF
Git 입문자를 위한 가이드
Ubuntu packaging - make package
Debian packaging - Advanced
Python Packaging & Debian Packaging
Ubuntu packaging - deploy package
Debian 패키지 관리 프로세스
JetsonTX2 Python
Git 입문자를 위한 가이드

Similar to Debian packaging - basic process (20)

PDF
Android Security Internals (Lesson 3)
PDF
리눅스 시작하기
PPTX
메이븐파헤치기(김우용)
PDF
Gradle & IntelliJ & Vert.x
PDF
Git - Level 2
PPTX
System+os study 6
 
PDF
2장 리눅스의 기초
PPTX
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
PPTX
Cmake tutorial
PPTX
Python packaging
PDF
도커 이미지 레이어 구조
PDF
메이븐 기본 이해
PDF
[오픈소스컨설팅] RPM 만들기
PPTX
Hadoop distributed file system rev3
PDF
18 1 파이썬패키지
PPTX
Git basic2 chaos
PDF
제로부터시작하는 Git 두번째 이야기
PPTX
TurboRepo
PDF
제로부터시작하는Git
PDF
Python & Django Framework - UV를 이용한 Python 개발 환경
Android Security Internals (Lesson 3)
리눅스 시작하기
메이븐파헤치기(김우용)
Gradle & IntelliJ & Vert.x
Git - Level 2
System+os study 6
 
2장 리눅스의 기초
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
Cmake tutorial
Python packaging
도커 이미지 레이어 구조
메이븐 기본 이해
[오픈소스컨설팅] RPM 만들기
Hadoop distributed file system rev3
18 1 파이썬패키지
Git basic2 chaos
제로부터시작하는 Git 두번째 이야기
TurboRepo
제로부터시작하는Git
Python & Django Framework - UV를 이용한 Python 개발 환경
Ad

More from 경섭 심 (6)

PDF
More Effective Python 3st (Multitask)
PDF
Main Variable Program
PDF
Python comparing
PDF
Python coroutine
PDF
Effective Python 2st (Decorator & Generator)
PDF
Effective Python 1st (Test & Style)
More Effective Python 3st (Multitask)
Main Variable Program
Python comparing
Python coroutine
Effective Python 2st (Decorator & Generator)
Effective Python 1st (Test & Style)
Ad

Debian packaging - basic process

  • 1. Debian Packaing Debian Packaing Process 2018.04.04 Infrastructure Development Team. 심경섭
  • 2. 목차 I. 개요 II. Debian Packaging Process III. Debian Directory IV. Make Package V. QnA
  • 4. Packaing ? • Application 과 관련된 파일들을 쉽게 배포하고, 설치하기 위한 과정 • iOS/Android 에서 App Store/Play Store 의 App 배포 과정과 유사
  • 8. Debian Packaging Manifest Debian Kernel Source Code
  • 9. 개요 • Debian 에서는 어떻게 패키지를 관리할까? • Debian 에서는 어떻게 패키지를 만들까?
  • 11. 패키지 등록 • 신규 패키지 등록 • 기존 패키지 확인 • 이슈 등록 • 기존 패키지 수정 • 이슈 등록
  • 12. Maintainer • Debian 에서는 패키지마다 담당 관리자가 존재 • Package 는 모두 Maintainer 를 가지고 있음
  • 14. 패키지 확인 • WNPP에서 관련된 목적의 패키지가 있는지 확인 • Work-Needing and Prospective Packages 의 약자 • 패키지들의 리스트가 있는 사이트 • Debian(Repository)에 반영되기를 기다리는 패키지들의 목록이 있는 곳 • https://www.debian.org/devel/wnpp/ • 메일이나 reportbug 프로그램을 이용해서 추가 • 패키지를 추가하는 것이 아닌, 패키지의 상태를 등록하는 것
  • 20. WNPP Request Type • ITP (Intent To Package) • 패키지의 설명을 저작권과 관련된 URL을 참조해서 제출 • O (Orphaned) • maintainer가 없어져, 새로운 maintainer가 필요한 상태 • RFA (Request For Adoption) • 현재 maintainer가 다른 maintainer 를 구하고 있는 상태 • 현재 maintainer가 바쁘거나 흥미가 없는 상태 • 이 패키지는 한동안 유지될 것이지만, 적극적으로 관리되지는 않는 상태
  • 21. WNPP Request Type • RFH (Request For Help) • 현재 maintainer가 패키지를 관리하길 원하나 도움이 필요한 상태 • RFP (Request For Package) • Debian에서 관리하고 싶은 패키지 • 저작권이나 관련된 URL, 설명을 요청한 상태
  • 23. 이슈 등록 확인 • Debian BTS 에서 검색으로 확인 할 수 있음 • 이메일이나 키워드로 검색하면, 해당 이슈에 대한 number 가 확인됨 • https://www.debian.org/Bugs/
  • 24. 이슈 등록 확인 • https://wnpp.debian.net
  • 25. 업로드 정책 • stable 에 업로드 하는 것을 엄격하게 제한 • 예를 들어, 현재 stable인 jessie 를 타겟으로 패키지를 새로 올리기 어려움 • 업로드 가능 조건 1. 기존 패키지 혹은 시스템에 치명적인 기능상의 문제가 있을 경우 2. 업로드된 패키지가 설치되지 않는 경우 3. 릴리즈된 아키텍처에 필요한 패키지가 없는 경우 • oldstable 의 경우도 위의 조건을 만족시켜야함
  • 26. 업로드 정책 • 패키지 파일을 ftp 서버에 업로드 • 패키지 파일에는 서명된 changes 파일과 dsc 파일이 포함되어야함 • dsc 파일은 debian source control 파일임 • Source package Layout 에 따라 필요한 파일을 업로드함 • ftp.upload.debian.org 의 /pub/UploadQueue/ 디렉토리에 업로드 • ftp://ftp.upload.debian.org/pub/UploadQueue/ • UploadQueue README 파일 참조 • ftp://ftp.upload.debian.org/pub/UploadQueue/README
  • 28. Debian Directory • Debian pacakge 를 구성하기 위한 패키지 정보를 담은 디렉토리 • changelog, control, copyright, rules 파일이 가장 중요 • 그 외, compat, README, docs, source/format 등의 파일들이 있음
  • 29. changelog • Debian 패키지의 변경 기록을 적은 파일 • 패키지 명과 버전, release 버전, 변경 내역등이 작성됨 • 버전은 “<upstream 버전>-<debian 버전>” 으로 작성 • Ex) 1.0.0-1
  • 30. Upstream definition in Ubuntu • Most of the software available through Ubuntu is not written by Ubuntu developers themselves. • Most of it is written by developers of other Open Source projects and then integrated into Ubuntu. • These projects are called “Upstreams”, because their source code flows into Ubuntu, where we “just” integrate it.
  • 31. changelog • 변경 내역에 Debian 의 이슈가 있을 경우, 이슈 번호를 기록 • ”Closes: #XXX” 와 같은 형태 • 핵심 변경 사항은 ”*” 를 사용해서 표기 • 핵심 변경 사항과 관련된 하위 변경 사항은 “-” 을 사용해서 표기 • 작성 일자는 RFC 5322 형식에 맞춰서 작성
  • 33. control • 패키지의 메타 정보를 기록한 파일 • Source 패키지의 정보와 생성할 debian 패키지의 정보를 작성 • Source 패키지 정보 • Source 이름, section, maintainer, build-depends 등을 기록 • Debian 패키지 정보 • Package 이름, architecture, depends, description 등을 기록
  • 35. copyright • 패키지 내부 파일들의 라이센스를 명시 • 파일별, 디렉토리 별로 나눠서 작성할 수 있음
  • 37. README, doc • 패키지를 사용하기 위한 정보를 담은 파일 • README 나 doc 파일을 만들어 내용을 작성 • doc 파일은 upstream source 에 대한 문서 • README 파일은 비표준적인 특징이 있는 경우 작성
  • 39. source/format • 초기 생성된 내용을 그대로 유지 • 소스 패키지의 버전을 명시 • 1.0 : 기본 형식 (Default 값) • 3.0 (quilt) : upstream 과 분리된 • 3.0 (native) : debian native 패키지 (upstream 이 없음)
  • 41. rules • Makefile 같이 패키지의 빌드를 위한 파일 • debhelper 에 의해서 많은 부분이 자동화 되어있음 • dh 명령을 사용해서 빌드를 수행함 • 설정을 커스터마이징 할 수 있음 • 패키징 로그는 “debian/package.debhelper.log” 파일에 기록됨
  • 42. rules
  • 43. rules
  • 44. rules
  • 45. rules
  • 46. rules
  • 47. install • dh_install 에 의해서 옮겨지는 파일 목록 • 생성되는 패키지가 하나면, 파일 명을 “install” 로 설정 • 여러개의 패키지가 생성되면 “<패키지명>.install” 로 설정
  • 48. Watch • upstream 패키지를 debian 패키지로 만들 때, 선택적으로 사용 • upstream 패키지의 업데이트 상태를 확인
  • 49. Watch
  • 51. Requirement • packaging-dev • 패키징에 관련된 모든 패키지를 담고 있는 패키지 • 너무 많은 패키지가 들어있음 • devscripts • Debian 패키지 관리를 도와주는 script 들을 가지고 있는 패키지 • Dch, debclean, debi, debpkg, debuild 등의 패키지가 포함되어 있음
  • 52. Requirement • dh-make • Debian 패키지를 만들기 위한 debian 디렉토리를 생성해주는 tool • Upstream source code 를 사용하거나 native debian package 를 만들 수 있음 • git-buildpackage • Git 을 사용한 형상 관리와 debian 패키징을 위한 tool • 주로 사용하게 됨
  • 53. Requirement • pbuilder • 시스템과 분리된 독립된 환경에서 패키지를 빌드할 수 있도록 해주는 tool • debootstrp 을 이용해서, chroot 환경을 만들어줌 • lintian • Debian directory 의 문법 오류나 형식, 정책 위반을 검증해주는 tool
  • 55. Pbuilder • 빌드를 위한 깔끔한 환경을 제공해줌 • 시스템의 설정을 수정하지 않고, 다양한 빌드 환경을 만들어줌 • Ubuntu 나 Debian 의 다양한 릴리즈 환경을 지원 • ”pbuilder-dist <release> create” 명령을 사용 • Ex) pbuilder-dist jessie create
  • 59. Create Debian Directory • “dh_make” 명령을 사용해서 debian 디렉토리 생성 • 불필요한 템플릿 파일을 제거 • 주요 파일에 대한 내용 작성
  • 61. Change log 작성 I. ”dch –i” 로 changlog 를 작성 II.Debian BTS 의 이슈가 있을 경우 “Closes: #XXX” 로 작성 III.작성자와 이메일 정보를 확인 IV.작성 일자를 확인 1. RFC 5322 형식에 맞춰서 작성
  • 65. 빌드 • ”debuild” 옵션을 사용해서 빌드 • -F : Full Packaging • -S : Source Code Packaging • -b : Binary Pacakging • -us –uc : 패키지에 서명을 하지 않는 옵션
  • 69. Debian Directory 정적 분석 • “lintian” 툴을 사용해서 debian package 를 정적 분석 • 패키지 내부의 버그나 정책 위반을 분석 • Error 와 Warning 으로 구분 • dsc 파일과 deb 파일을 분석
  • 72. Git 을 사용한 패키징 • 소스 코드의 형상을 관리하기 위한 방안으로 Git 을 사용함 • Git 에서 제공해주는 패키징 툴이 있음 • git-buildpackage 를 설치 • Git 사용자/이메일 등록을 먼저 해야함
  • 73. Git 사용자 등록 • 전역 설정으로 git 의 사용자와 이메일을 등록 • ”git config” 명령을 사용
  • 74. 소스 코드 등록 • 소스 코드의 디렉토리로 이동 • “git init” 명령을 사용해 “.git” 폴더 생성 • 관련된 소스 코드 “add” • ”commit”
  • 75. Packaging • “git-buildpackage” 명령을 사용 • 최신 버전에서는 ”gbp buildpackage” 로 변경됨
  • 78. Tagging • 소스 코드의 형상을 유지하기 위한 또 하나의 방법 • git 에서 제공해주는 명령을 사용해서 tag 를 생성 • Upstream tag 와 Debian tag 가 있음
  • 79. Upstream Tag • “git tag” 명령을 사용 • Tag 의 이름을 지정할 수 있음
  • 81. Debian Tag • “gbp buildpackage” 명령을 사용 • Tag 의 이름이 “debian/버전” 형태로 고정됨 • 버전은 changelog 에 있는 마지막 버전으로 표기됨
  • 83. QnA
  • 84. KOREA U.S.A. JAPAN Yeouido, Seoul www.pentasecurity.co.kr (HQ) Houston, Texas www.pentasecurity.com Shinjuku-Ku, Tokyo www.pentasecurity.co.jp Copyright 2017 Penta Security Systems Inc. All rights reserved.