SlideShare a Scribd company logo
1 of 84
Download to read offline
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

Similar to Debian packaging - basic process

Android Security Internals (Lesson 3)
Android Security Internals (Lesson 3)Android Security Internals (Lesson 3)
Android Security Internals (Lesson 3)Joon Young Park
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기Pete Lee
 
메이븐파헤치기(김우용)
메이븐파헤치기(김우용)메이븐파헤치기(김우용)
메이븐파헤치기(김우용)우용 김
 
Gradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xGradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xKwnaghwan Cho
 
2장 리눅스의 기초
2장 리눅스의 기초2장 리눅스의 기초
2장 리눅스의 기초Young Jin Suh
 
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍ymtech
 
Cmake tutorial
Cmake tutorialCmake tutorial
Cmake tutorial상문 이
 
Python packaging
Python packagingPython packaging
Python packagingJi Hun Kim
 
도커 이미지 레이어 구조
도커 이미지 레이어 구조도커 이미지 레이어 구조
도커 이미지 레이어 구조choi sungwook
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaosYunkyu Choi
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기Mario Cho
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는GitMario Cho
 

Similar to Debian packaging - basic process (20)

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

More from 경섭 심

More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)경섭 심
 
Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program경섭 심
 
Python comparing
Python comparingPython comparing
Python comparing경섭 심
 
Python coroutine
Python coroutinePython coroutine
Python coroutine경섭 심
 
Effective Python 2st (Decorator & Generator)
Effective Python 2st (Decorator & Generator)Effective Python 2st (Decorator & Generator)
Effective Python 2st (Decorator & Generator)경섭 심
 
Effective Python 1st (Test & Style)
Effective Python 1st (Test & Style)Effective Python 1st (Test & Style)
Effective Python 1st (Test & Style)경섭 심
 

More from 경섭 심 (6)

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

Recently uploaded

도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료Softwide Security
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료Softwide Security
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)Wonjun Hwang
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdfssuserf8b8bd1
 

Recently uploaded (6)

도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 

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.