이 키노트에서는 기초적인 리눅스의 사용법에 대해 알려줍니다.
리눅스의 주 사용 용도인 date, cal 부터 git에 USB 디바이스 확인하는 명령어까지 소개합니다.
데비안 리눅스, 우분투 18.04 버전 기준으로 설명되었습니다. 또한 본 내용에서 특정 기업 명이나 특정 상표가 포함되었을 가능성이 있습니다. 하지만 이런 내용에는 고의성이 없음을 밝힙니다.
이번 강의에서는 파이썬의 패키지를 만들고 활용하는 방법을 알아보겠습니다.
대규모 프로젝트를 수행하기 위해서는 이미 잘 만들어진 코드를 활용하는 것이 중요한데요, 잘 만들어진 코드를 활용하는 방법이 모듈을 사용하는 것입니다.
그러나 모듈의 수가 많아지면 폴더(디렉토리) 아래에 계층적으로 두는 것이 더욱 편리합니다.
한 폴더에 유사한 성격의 여러 모듈을 두고 이 폴더를 가져오는 방식으로 개발을 하는데 이 폴더를 패키지라고 합니다. 본 강의에서는 예제를 통해서 파이썬의 패키지 만드는 방법을 살펴보도록 하겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이 키노트에서는 기초적인 리눅스의 사용법에 대해 알려줍니다.
리눅스의 주 사용 용도인 date, cal 부터 git에 USB 디바이스 확인하는 명령어까지 소개합니다.
데비안 리눅스, 우분투 18.04 버전 기준으로 설명되었습니다. 또한 본 내용에서 특정 기업 명이나 특정 상표가 포함되었을 가능성이 있습니다. 하지만 이런 내용에는 고의성이 없음을 밝힙니다.
이번 강의에서는 파이썬의 패키지를 만들고 활용하는 방법을 알아보겠습니다.
대규모 프로젝트를 수행하기 위해서는 이미 잘 만들어진 코드를 활용하는 것이 중요한데요, 잘 만들어진 코드를 활용하는 방법이 모듈을 사용하는 것입니다.
그러나 모듈의 수가 많아지면 폴더(디렉토리) 아래에 계층적으로 두는 것이 더욱 편리합니다.
한 폴더에 유사한 성격의 여러 모듈을 두고 이 폴더를 가져오는 방식으로 개발을 하는데 이 폴더를 패키지라고 합니다. 본 강의에서는 예제를 통해서 파이썬의 패키지 만드는 방법을 살펴보도록 하겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
This document is a resource made for educational purposes as part of using the Python fluently.
Because it is for reference only, it is not enough or does not contain the source of all materials.
Thank you for your understanding.
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, 설명을 요청한 상태
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 등을 기록
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” 파일에 기록됨
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