SlideShare uma empresa Scribd logo
1 de 37
How to make a package
Copyright: (c) 2010, Thomas Goirand <zigo@debian.org>, Debian Developer
License: BSD (feel free to reuse this material and do what you want with it, but please keep my name attached)
DEBIAN PACKAGING TUTORIAL
2
Overview of today's talk
● Who I am
● Why do we use packages
● Contributing to Debian: why?
● Components of a package
● Inside the debian/ folder
● Debian rules!
● Dpatch, maintainer scripts
● Debconf
● Share your work: releasing
DEBIAN PACKAGING TUTORIAL
3
Who am I?
● Founder and CEO of GPLHost
● Involved in hosting since 1999
● Maintaining Debian packages since 2006
● Debian Developer since June 2010
● Maintaining hosting related packages:
http://qa.debian.org/developer.php?login=zigo@debian.org
● WARNING: This talk is NOT authoritative:
– Read the Debian Policy Manual !!!
DEBIAN PACKAGING TUTORIAL
4
Contributing to Debian: why?
● Best and completely free OS
● Easy to install packaged software
● Dependencies, security, license checked
● Standard checked by others
● Contributions, BTS
● Ubuntu lovers: Debian is your upstream!
DEBIAN PACKAGING TUTORIAL
5
A package: the basic stuff
● Result: one or more .deb binaries
● Source format 1.0 or 3.0 (“quilt”)
● Source package:
– .dsc
– .orig.tar.gz / .orig.tar.bz2
– .diff.gz / .debian.tar.gz
● A file for uploading: .changes
DEBIAN PACKAGING TUTORIAL
6
Inside a source package
● Everything is in the debian folder
● Do not touch the upstream files:
– Use dpatch or quilt
● Upstream sources should be:
– shlug_<VERSION>.orig.tar.gz
– Extracted as shlug-<VERSION>
– Repacking a new orig.tar.gz is ok
DEBIAN PACKAGING TUTORIAL
7
Overview of the debian/ folder
● debian/copyright
● debian/control
● debian/changelog
● debian/rules
● debian/watch
● debian/source/format
● Eventually, others...
DEBIAN PACKAGING TUTORIAL
8
debian/copyright overview
● Of the importance of freeness: make sure
you check the upstream license
● List absolutely ALL authors and copyright
holders: it's mandatory!
● License in full, except those in
/usr/share/common-licenses (referenced
with a copyright notice)
● Don't trust upstream: check all files!
● The machine readable draft vs free format
DEBIAN PACKAGING TUTORIAL
9
debian/copyright example
This package was first debianized by Thomas Goirand <zigo@debian.org>
on the: on Fri, 25 Sep 2009 12:02:18 +0100
It was downloaded from: http://www.example.org/example-package/
Upstream authors: Some Guy <some-guy@example.org>
Files: debian/*
Copyright: (c) 2010, Thomas Goirand <zigo@debian.org>
License: LGPL-2.1
<LGPL-2.1 COPYRIGHT NOTICE GOES HERE>
On Debian systems, the complete text of the Lesser General Public
License may be found in: /usr/share/common-licenses/LGPL
Files: *
Copyright: (c) Some Guy <some-guy@example.org>
License: BSD-style
This comes with no warranty, bla bla bla...
DEBIAN PACKAGING TUTORIAL
10
debian/control example
Source: shlug
Section: mail
Priority: optional
Maintainers: Thomas Goirand <zigo@debian.org>
Build-Depends: debhelper (>= 7), adduser
Build-Depends-Indep: gettext
Standards-Version: 3.9.1
Homepage: http://www.shlug.org/shlug/
Package: shlug-client
Architecture: all
Depends: ${misc:Depends}, curl, gettext
Description: a client for the shlug community
This is a long description
that has to be at least 3 lines
and wrapped for 80 cols.
DEBIAN PACKAGING TUTORIAL
11
Dependencies in debian/control
● Check what is build-esential
● Depends: Mandatory need
● Pre-Depends: Setup before installing
● Recommends: Automatically pulled
● Suggests: Displayed to the user
● Conflicts: Same file in different deb
● Breaks: Conflicts, but not at file level
● Replaces: Forcing removal of others
● Provides: Virtual package
http://www.debian.org/docs/debian-policy/ch-relationships.html
DEBIAN PACKAGING TUTORIAL
12
debian/changelog example
shlug (1.5.3-1) unstable; urgency=low
* New upstream release.
* Do not ship COPYING file (Closes: #789012).
-- Thomas Goirand <zigo@debian.org> Sun, 26 Sep 2010 20:17:07 +0800
shlug (1.2.3-1) unstable; urgency=low
* Initial package (Closes: #123456).
-- Thomas Goirand <zigo@debian.org> Sun, 5 Sep 2004 05:29:57 +0000
● Dont edit by hand: use devscripts
– debchange --create
– debchange -i
DEBIAN PACKAGING TUTORIAL
13
debian/watch example
Version=3
Http://www.shlug.org/shlug/ shlug-client-(d).tar.gz
● Many examples in man uscan
● Check with: uscan --verbose –report
● Do not be too specific in your regexp
DEBIAN PACKAGING TUTORIAL
14
Debian RULES
● It's a Makefile: #!/usr/bin/make -f
● No requirement to use any (deb)helper
● dh_helpers vs CDBS as helpers
● 6 mandatory targets:
– Build:, install:, binary-indep:,
binary-arch:, binary:, clean:
● Goal: install everything in:
– $(CURDIR)/debian/shlug
DEBIAN PACKAGING TUTORIAL
15
debian/rules in details 1/3
#!/usr/bin/make -f
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
configure: configure-stamp
configure-stamp:
./configure --prefix=/usr 
--build=$(DEB_HOST_GNU_TYPE --host=$(DEB_HOST_GNU_TYPE) 
[ other options … ]
touch $@
build: build-stamp
build-stamp: configure-stamp
dh_testdir
$(MAKE)
touch $@
clean:
dh_testdir
dh_testroot
dh_clean
$(MAKE) clean
rm -f configure-stamp build-stamp
DEBIAN PACKAGING TUTORIAL
16
debian/rules in details 2/3
install: build
dh_testdir
dh_testroot
dh_prep
$(MAKE) DESTDIR=$(CURDIR)/debian/shlug install
mkdir -p $(CURDIR)/debian/shlug/usr/bin
mv $(CURDIR)/debian/shlug/usr/local/bin/* 
$(CURDIR)/debian/shlug/usr/bin
binary-indep:
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
DEBIAN PACKAGING TUTORIAL
17
debian/rules in details 3/3
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs doc/changelogs
dh_installdocs debian/README.Debian
dh_fixperms
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build install binary binary-arch binary-indep
DEBIAN PACKAGING TUTORIAL
18
Patch system: dpatch 1/2
● Set Depends: dpatch
● Add in your debian/rules:
– include /usr/share/dpatch/dpatch.make
– patch-stamp:
– configure-stamp: patch-stamp
– clean: unpatch
● Everything else is automated
● Manually: dpatch apply-all / deapply-all
DEBIAN PACKAGING TUTORIAL
19
Patch system: dpatch 2/2
● Put dpatch files in debian/patches
● List patch files in debian/patches/00list
● dpatch header example:
#!/bin/sh /usr/share/dpatch/dpatch-run
## 02_install_path.dpatch by Thomas Goirand <zigo@debian.org>
## DP: Upstream installs in /usr/local/bin, this patch fixes it
@DPATCH@
diff -u shlug-1.2.3.orig shlug-1.2.3
--- shlug-1.2.3.orig/Makefile
--- shlug-1.2.3/Makefile
DEBIAN PACKAGING TUTORIAL
20
Maintainer scripts
● postinst / preinst / prerm / postrm
● postinst example:
#!/bin/sh
set -e
if ! getent passwd shlug >/dev/null ; then
useradd -m -s /bin/false -g nogroup shlug -r -b /var/lib
fi
touch /var/log/shlug.log
chown shlug.shlug /var/log/shlug.log
#DEBHELPER#
exit 0
DEBIAN PACKAGING TUTORIAL
21
Other dh_* scripts
● dh_install and debian/install
● dh_installmanpages debian/manpages
● dh_installdocs debian/docs
● dh_link and debian/links
● dh_installinit debian/init
● Many, many more...
DEBIAN PACKAGING TUTORIAL
22
Debconf 1/5
● A standardized API for configuring debs
● Many back-ends (wiptail, X-Window, etc.)
● Has default values and levels of verbosity
● Understand translations (gettext po files)
● Warning:
– can run in non-interactive mode
– shouldn't overwrite config file values
– Do not abuse it
DEBIAN PACKAGING TUTORIAL
23
Debconf 2/5
● Build-Depends: po-debconf
● Depends: debconf
● In your debian/rules:
Clean:
dh_testdir
dh_testroot
. . .
debconf-updatepodebconf-updatepo
DEBIAN PACKAGING TUTORIAL
24
Debconf 3/5
● debian/shlug.template example:
# These templates have been reviewed by the debian-i10n-english
# team
#
# If modifications/additions/rewording are needed, please ask
# for advice to debian-i10n-english@lists.debian.org
Template: shlug/max_user
Type: string
Default: 100
Description: Shlug max user
The shlug proccess N messages at once. If this number is bigger,
shlug will process messages faster, but also will use more
memory: approximately 1MB per user.
DEBIAN PACKAGING TUTORIAL
25
Debconf 4/5
● debian/shlug.config example:
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
if [ -f /etc/shlug/shlug.conf ] ; then
. /etc/shlug/shlug.conf
fi
if [ ! -z ${shl_max_user} ] ; then
db_set shlug/shl_max_user ${shl_max_user}
fi
db_input high shlug/shl_max_user || true
db_go
#DEBHELPER#
exit 0
DEBIAN PACKAGING TUTORIAL
26
Debconf 5/5
● debian/shlug.postinst example:
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
db_version 2.0
db_get shlug/shlug_my_config
new_shlug_config=$RET
echo “# Enter your config value here:
shl_max_user=${new_shlug_config}” >/etc/shlug/shlug.conf
#DEBHELPER#
exit 0
DEBIAN PACKAGING TUTORIAL
27
More to learn, not in these slides
● Debconf package configuration
● Init script building
● Menu items
● db-config-common
● Language specifics (python, php, perl...)
● Web apps
● ...
DEBIAN PACKAGING TUTORIAL
28
Before building
● Check your env:
– export DEBFULLNAME="Thomas Goirand"
– export DEBEMAIL="zigo@debian.org"
– export EDITOR=vim
● Check that your GPG key is ok
– gpg --list-keys
DEBIAN PACKAGING TUTORIAL
29
Building and checking
● You HAVE to build in SID
● dpkg-buildpackage
● lintian -Ii shlug_1.2.3-2_amd64.changes
● Install it on your own system and check
● Building in a chroot for checking depends,
build-depends and build-depends-indep
DEBIAN PACKAGING TUTORIAL
30
Bonus: use Git
● Multiple branches:
– debian-sid
– upstream-sid
– …
● Build with:
git-buildpackage --git-upstream-branch=upstream-sid 
--git-debian-branch=debian-sid
DEBIAN PACKAGING TUTORIAL
31
Your package in debian main!
● Only DD can upload
● Anyone can maintain packages!
● Have your gpg key signed
● New binary packages goes in NEW queue
for checking by ftp-masters
● Find sponsors:
– mentors.debian.net
– Ask me!!!
DEBIAN PACKAGING TUTORIAL
32
Sponsoree tips
● Make sure your package is lintian clean
● Really do what your sponsor advices you:
– Carefully change what has been advised
– Do not fear to ask: 4 days limit in -mentors
● pbuilder / sbuilder / virtual machines /
puiparts
● Don't use dh_make ! (only my opinion...)
● Look at other packages as example
DEBIAN PACKAGING TUTORIAL
33
Maintainership never ends
● Don't package and forget: brings hate
● You will be responsible for YEARS
● BTS (bug tracking system)
● Relation with upstream author
● Fixing bugs is better than packaging new
DEBIAN PACKAGING TUTORIAL
34
Working with others: Alioth
● alioth.debian.org
● collab-maint
● pkg-* groups, lists, and git.debian.org
● Use the BTS, reportbug and reporbug-ng
DEBIAN PACKAGING TUTORIAL
35
Becoming DD / DM
● Maintaining packages
● DM is often the first step
● Understand the DFSG / Social contract
● Patience (months, maybe years)
● Somebody vouching for you
● Pass the DAM(ned) tests
DEBIAN PACKAGING TUTORIAL
36
Resources on the net
● Absolutely everything is on *.debian.org
● Debian New Maintainer Guide
● Debian Policy Manual
● Debian Developer Reference
● Specific policies and drafts
● irc.debian.org: #mentors
● debian-mentors@lists.debian.org
DEBIAN PACKAGING TUTORIAL
37
More?
Q&A

Mais conteúdo relacionado

Mais procurados

Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
 
The Common Debian Build System (CDBS)
The Common Debian Build System (CDBS)The Common Debian Build System (CDBS)
The Common Debian Build System (CDBS)Peter Eisentraut
 
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Joachim Jacob
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornPROIDEA
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with dockerGiacomo Bagnoli
 
Part 4 of 'Introduction to Linux for bioinformatics': Managing data
Part 4 of 'Introduction to Linux for bioinformatics': Managing data Part 4 of 'Introduction to Linux for bioinformatics': Managing data
Part 4 of 'Introduction to Linux for bioinformatics': Managing data Joachim Jacob
 
Part 6 of "Introduction to linux for bioinformatics": Productivity tips
Part 6 of "Introduction to linux for bioinformatics": Productivity tipsPart 6 of "Introduction to linux for bioinformatics": Productivity tips
Part 6 of "Introduction to linux for bioinformatics": Productivity tipsJoachim Jacob
 
9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linux9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linuxchinkshady
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday developmentJustyna Ilczuk
 
Into The Box 2018 | Content box + docker
Into The Box 2018 | Content box + dockerInto The Box 2018 | Content box + docker
Into The Box 2018 | Content box + dockerOrtus Solutions, Corp
 
Managing your data - Introduction to Linux for bioinformatics
Managing your data - Introduction to Linux for bioinformaticsManaging your data - Introduction to Linux for bioinformatics
Managing your data - Introduction to Linux for bioinformaticsBITS
 
Part 1 of 'Introduction to Linux for bioinformatics': Introduction
Part 1 of 'Introduction to Linux for bioinformatics': IntroductionPart 1 of 'Introduction to Linux for bioinformatics': Introduction
Part 1 of 'Introduction to Linux for bioinformatics': IntroductionJoachim Jacob
 
Docker @ FOSS4G 2016, Bonn
Docker @ FOSS4G 2016, BonnDocker @ FOSS4G 2016, Bonn
Docker @ FOSS4G 2016, BonnDaniel Nüst
 
Docker for Fun and Profit, Devoxx 2014
Docker for Fun and Profit, Devoxx 2014Docker for Fun and Profit, Devoxx 2014
Docker for Fun and Profit, Devoxx 2014Carl Quinn
 
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017Paul Chao
 
The structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformaticsThe structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformaticsBITS
 
Text mining on the command line - Introduction to linux for bioinformatics
Text mining on the command line - Introduction to linux for bioinformaticsText mining on the command line - Introduction to linux for bioinformatics
Text mining on the command line - Introduction to linux for bioinformaticsBITS
 
Work shop - an introduction to the docker ecosystem
Work shop - an introduction to the docker ecosystemWork shop - an introduction to the docker ecosystem
Work shop - an introduction to the docker ecosystemJoão Pedro Harbs
 

Mais procurados (20)

Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
The Common Debian Build System (CDBS)
The Common Debian Build System (CDBS)The Common Debian Build System (CDBS)
The Common Debian Build System (CDBS)
 
packaging
packagingpackaging
packaging
 
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
Part 4 of 'Introduction to Linux for bioinformatics': Managing data
Part 4 of 'Introduction to Linux for bioinformatics': Managing data Part 4 of 'Introduction to Linux for bioinformatics': Managing data
Part 4 of 'Introduction to Linux for bioinformatics': Managing data
 
Part 6 of "Introduction to linux for bioinformatics": Productivity tips
Part 6 of "Introduction to linux for bioinformatics": Productivity tipsPart 6 of "Introduction to linux for bioinformatics": Productivity tips
Part 6 of "Introduction to linux for bioinformatics": Productivity tips
 
9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linux9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linux
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
 
Into The Box 2018 | Content box + docker
Into The Box 2018 | Content box + dockerInto The Box 2018 | Content box + docker
Into The Box 2018 | Content box + docker
 
Managing your data - Introduction to Linux for bioinformatics
Managing your data - Introduction to Linux for bioinformaticsManaging your data - Introduction to Linux for bioinformatics
Managing your data - Introduction to Linux for bioinformatics
 
Part 1 of 'Introduction to Linux for bioinformatics': Introduction
Part 1 of 'Introduction to Linux for bioinformatics': IntroductionPart 1 of 'Introduction to Linux for bioinformatics': Introduction
Part 1 of 'Introduction to Linux for bioinformatics': Introduction
 
Docker @ FOSS4G 2016, Bonn
Docker @ FOSS4G 2016, BonnDocker @ FOSS4G 2016, Bonn
Docker @ FOSS4G 2016, Bonn
 
Docker for Fun and Profit, Devoxx 2014
Docker for Fun and Profit, Devoxx 2014Docker for Fun and Profit, Devoxx 2014
Docker for Fun and Profit, Devoxx 2014
 
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
 
The structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformaticsThe structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformatics
 
Text mining on the command line - Introduction to linux for bioinformatics
Text mining on the command line - Introduction to linux for bioinformaticsText mining on the command line - Introduction to linux for bioinformatics
Text mining on the command line - Introduction to linux for bioinformatics
 
hw1a
hw1ahw1a
hw1a
 
Work shop - an introduction to the docker ecosystem
Work shop - an introduction to the docker ecosystemWork shop - an introduction to the docker ecosystem
Work shop - an introduction to the docker ecosystem
 

Destaque

Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Benny Siegert
 
Autoconf&Automake
Autoconf&AutomakeAutoconf&Automake
Autoconf&Automakeniurui
 
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!Linaro
 
State of Bitcoin Q3 2014
State of Bitcoin Q3 2014State of Bitcoin Q3 2014
State of Bitcoin Q3 2014CoinDesk
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJSAldo Pizzagalli
 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015Matt Raible
 
Using ReactJS in AngularJS
Using ReactJS in AngularJSUsing ReactJS in AngularJS
Using ReactJS in AngularJSBoris Dinkevich
 
THE CALCULUS INTEGRAL (Beta Version 2009)
THE CALCULUS INTEGRAL (Beta Version 2009)THE CALCULUS INTEGRAL (Beta Version 2009)
THE CALCULUS INTEGRAL (Beta Version 2009)briansthomson
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedStéphane Bégaudeau
 
Introduction to bitcoin
Introduction to bitcoinIntroduction to bitcoin
Introduction to bitcoinWolf McNally
 
State of Bitcoin and Blockchain 2016
State of Bitcoin and Blockchain 2016State of Bitcoin and Blockchain 2016
State of Bitcoin and Blockchain 2016CoinDesk
 

Destaque (15)

Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]
 
Autoconf&Automake
Autoconf&AutomakeAutoconf&Automake
Autoconf&Automake
 
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
 
Debian jessie
Debian jessieDebian jessie
Debian jessie
 
State of Bitcoin Q3 2014
State of Bitcoin Q3 2014State of Bitcoin Q3 2014
State of Bitcoin Q3 2014
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
 
Chapter 17 - Multivariable Calculus
Chapter 17 - Multivariable CalculusChapter 17 - Multivariable Calculus
Chapter 17 - Multivariable Calculus
 
Calculus
CalculusCalculus
Calculus
 
Using ReactJS in AngularJS
Using ReactJS in AngularJSUsing ReactJS in AngularJS
Using ReactJS in AngularJS
 
THE CALCULUS INTEGRAL (Beta Version 2009)
THE CALCULUS INTEGRAL (Beta Version 2009)THE CALCULUS INTEGRAL (Beta Version 2009)
THE CALCULUS INTEGRAL (Beta Version 2009)
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
Introduction to bitcoin
Introduction to bitcoinIntroduction to bitcoin
Introduction to bitcoin
 
State of Bitcoin and Blockchain 2016
State of Bitcoin and Blockchain 2016State of Bitcoin and Blockchain 2016
State of Bitcoin and Blockchain 2016
 

Semelhante a Debian packaging howto

Debian Packaging tutorial
Debian Packaging tutorialDebian Packaging tutorial
Debian Packaging tutorialnussbauml
 
How to make debian package from scratch (linux)
How to make debian package from scratch (linux)How to make debian package from scratch (linux)
How to make debian package from scratch (linux)Thierry Gayet
 
How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.İbrahim UÇAR
 
How to became a Gentoo developer
How to became a Gentoo developerHow to became a Gentoo developer
How to became a Gentoo developeralice ferrazzi
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMAlexander Shopov
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012Philip Polstra
 
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedoraBringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedoraLalatendu Mohanty
 
Dist::Zilla - A very brief introduction
Dist::Zilla - A very brief introductionDist::Zilla - A very brief introduction
Dist::Zilla - A very brief introductionDean Hamstead
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixSherif Mousa
 
Develop and deploy haskell with docker
Develop and deploy haskell with dockerDevelop and deploy haskell with docker
Develop and deploy haskell with dockerChris Biscardi
 
OpenWRT guide and memo
OpenWRT guide and memoOpenWRT guide and memo
OpenWRT guide and memo家榮 吳
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VIOpersys inc.
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composernuppla
 

Semelhante a Debian packaging howto (20)

Debian Packaging tutorial
Debian Packaging tutorialDebian Packaging tutorial
Debian Packaging tutorial
 
Debian Packaging
Debian PackagingDebian Packaging
Debian Packaging
 
vbsd2013
vbsd2013vbsd2013
vbsd2013
 
Debian packaging
Debian packagingDebian packaging
Debian packaging
 
How to make debian package from scratch (linux)
How to make debian package from scratch (linux)How to make debian package from scratch (linux)
How to make debian package from scratch (linux)
 
How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.
 
How to became a Gentoo developer
How to became a Gentoo developerHow to became a Gentoo developer
How to became a Gentoo developer
 
Pemaketan blankon-ii
Pemaketan blankon-iiPemaketan blankon-ii
Pemaketan blankon-ii
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPM
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
 
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedoraBringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
 
Dist::Zilla - A very brief introduction
Dist::Zilla - A very brief introductionDist::Zilla - A very brief introduction
Dist::Zilla - A very brief introduction
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrix
 
Develop and deploy haskell with docker
Develop and deploy haskell with dockerDevelop and deploy haskell with docker
Develop and deploy haskell with docker
 
OpenWRT guide and memo
OpenWRT guide and memoOpenWRT guide and memo
OpenWRT guide and memo
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
Fedora Linux
Fedora LinuxFedora Linux
Fedora Linux
 
Linux_Fedora_ppt
Linux_Fedora_pptLinux_Fedora_ppt
Linux_Fedora_ppt
 

Último

SIKP311 Sikolohiyang Pilipino - Ginhawa.pptx
SIKP311 Sikolohiyang Pilipino - Ginhawa.pptxSIKP311 Sikolohiyang Pilipino - Ginhawa.pptx
SIKP311 Sikolohiyang Pilipino - Ginhawa.pptxStephenMino
 
WOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxWOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxpadhand000
 
2023 - Between Philosophy and Practice: Introducing Yoga
2023 - Between Philosophy and Practice: Introducing Yoga2023 - Between Philosophy and Practice: Introducing Yoga
2023 - Between Philosophy and Practice: Introducing YogaRaphaël Semeteys
 
Dadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
Dadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot GirlsDadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
Dadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot GirlsDeepika Singh
 
February 2024 Recommendations for newsletter
February 2024 Recommendations for newsletterFebruary 2024 Recommendations for newsletter
February 2024 Recommendations for newsletterssuserdfec6a
 
the Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentationthe Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentationbrynpueblos04
 
March 2023 Recommendations for newsletter
March 2023 Recommendations for newsletterMarch 2023 Recommendations for newsletter
March 2023 Recommendations for newsletterssuserdfec6a
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theorydrae5
 
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...mitaliverma221
 
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...Cara Menggugurkan Kandungan 087776558899
 

Último (10)

SIKP311 Sikolohiyang Pilipino - Ginhawa.pptx
SIKP311 Sikolohiyang Pilipino - Ginhawa.pptxSIKP311 Sikolohiyang Pilipino - Ginhawa.pptx
SIKP311 Sikolohiyang Pilipino - Ginhawa.pptx
 
WOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxWOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptx
 
2023 - Between Philosophy and Practice: Introducing Yoga
2023 - Between Philosophy and Practice: Introducing Yoga2023 - Between Philosophy and Practice: Introducing Yoga
2023 - Between Philosophy and Practice: Introducing Yoga
 
Dadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
Dadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot GirlsDadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
Dadar West Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
 
February 2024 Recommendations for newsletter
February 2024 Recommendations for newsletterFebruary 2024 Recommendations for newsletter
February 2024 Recommendations for newsletter
 
the Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentationthe Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentation
 
March 2023 Recommendations for newsletter
March 2023 Recommendations for newsletterMarch 2023 Recommendations for newsletter
March 2023 Recommendations for newsletter
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theory
 
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
 
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
 

Debian packaging howto

  • 1. How to make a package Copyright: (c) 2010, Thomas Goirand <zigo@debian.org>, Debian Developer License: BSD (feel free to reuse this material and do what you want with it, but please keep my name attached)
  • 2. DEBIAN PACKAGING TUTORIAL 2 Overview of today's talk ● Who I am ● Why do we use packages ● Contributing to Debian: why? ● Components of a package ● Inside the debian/ folder ● Debian rules! ● Dpatch, maintainer scripts ● Debconf ● Share your work: releasing
  • 3. DEBIAN PACKAGING TUTORIAL 3 Who am I? ● Founder and CEO of GPLHost ● Involved in hosting since 1999 ● Maintaining Debian packages since 2006 ● Debian Developer since June 2010 ● Maintaining hosting related packages: http://qa.debian.org/developer.php?login=zigo@debian.org ● WARNING: This talk is NOT authoritative: – Read the Debian Policy Manual !!!
  • 4. DEBIAN PACKAGING TUTORIAL 4 Contributing to Debian: why? ● Best and completely free OS ● Easy to install packaged software ● Dependencies, security, license checked ● Standard checked by others ● Contributions, BTS ● Ubuntu lovers: Debian is your upstream!
  • 5. DEBIAN PACKAGING TUTORIAL 5 A package: the basic stuff ● Result: one or more .deb binaries ● Source format 1.0 or 3.0 (“quilt”) ● Source package: – .dsc – .orig.tar.gz / .orig.tar.bz2 – .diff.gz / .debian.tar.gz ● A file for uploading: .changes
  • 6. DEBIAN PACKAGING TUTORIAL 6 Inside a source package ● Everything is in the debian folder ● Do not touch the upstream files: – Use dpatch or quilt ● Upstream sources should be: – shlug_<VERSION>.orig.tar.gz – Extracted as shlug-<VERSION> – Repacking a new orig.tar.gz is ok
  • 7. DEBIAN PACKAGING TUTORIAL 7 Overview of the debian/ folder ● debian/copyright ● debian/control ● debian/changelog ● debian/rules ● debian/watch ● debian/source/format ● Eventually, others...
  • 8. DEBIAN PACKAGING TUTORIAL 8 debian/copyright overview ● Of the importance of freeness: make sure you check the upstream license ● List absolutely ALL authors and copyright holders: it's mandatory! ● License in full, except those in /usr/share/common-licenses (referenced with a copyright notice) ● Don't trust upstream: check all files! ● The machine readable draft vs free format
  • 9. DEBIAN PACKAGING TUTORIAL 9 debian/copyright example This package was first debianized by Thomas Goirand <zigo@debian.org> on the: on Fri, 25 Sep 2009 12:02:18 +0100 It was downloaded from: http://www.example.org/example-package/ Upstream authors: Some Guy <some-guy@example.org> Files: debian/* Copyright: (c) 2010, Thomas Goirand <zigo@debian.org> License: LGPL-2.1 <LGPL-2.1 COPYRIGHT NOTICE GOES HERE> On Debian systems, the complete text of the Lesser General Public License may be found in: /usr/share/common-licenses/LGPL Files: * Copyright: (c) Some Guy <some-guy@example.org> License: BSD-style This comes with no warranty, bla bla bla...
  • 10. DEBIAN PACKAGING TUTORIAL 10 debian/control example Source: shlug Section: mail Priority: optional Maintainers: Thomas Goirand <zigo@debian.org> Build-Depends: debhelper (>= 7), adduser Build-Depends-Indep: gettext Standards-Version: 3.9.1 Homepage: http://www.shlug.org/shlug/ Package: shlug-client Architecture: all Depends: ${misc:Depends}, curl, gettext Description: a client for the shlug community This is a long description that has to be at least 3 lines and wrapped for 80 cols.
  • 11. DEBIAN PACKAGING TUTORIAL 11 Dependencies in debian/control ● Check what is build-esential ● Depends: Mandatory need ● Pre-Depends: Setup before installing ● Recommends: Automatically pulled ● Suggests: Displayed to the user ● Conflicts: Same file in different deb ● Breaks: Conflicts, but not at file level ● Replaces: Forcing removal of others ● Provides: Virtual package http://www.debian.org/docs/debian-policy/ch-relationships.html
  • 12. DEBIAN PACKAGING TUTORIAL 12 debian/changelog example shlug (1.5.3-1) unstable; urgency=low * New upstream release. * Do not ship COPYING file (Closes: #789012). -- Thomas Goirand <zigo@debian.org> Sun, 26 Sep 2010 20:17:07 +0800 shlug (1.2.3-1) unstable; urgency=low * Initial package (Closes: #123456). -- Thomas Goirand <zigo@debian.org> Sun, 5 Sep 2004 05:29:57 +0000 ● Dont edit by hand: use devscripts – debchange --create – debchange -i
  • 13. DEBIAN PACKAGING TUTORIAL 13 debian/watch example Version=3 Http://www.shlug.org/shlug/ shlug-client-(d).tar.gz ● Many examples in man uscan ● Check with: uscan --verbose –report ● Do not be too specific in your regexp
  • 14. DEBIAN PACKAGING TUTORIAL 14 Debian RULES ● It's a Makefile: #!/usr/bin/make -f ● No requirement to use any (deb)helper ● dh_helpers vs CDBS as helpers ● 6 mandatory targets: – Build:, install:, binary-indep:, binary-arch:, binary:, clean: ● Goal: install everything in: – $(CURDIR)/debian/shlug
  • 15. DEBIAN PACKAGING TUTORIAL 15 debian/rules in details 1/3 #!/usr/bin/make -f DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) configure: configure-stamp configure-stamp: ./configure --prefix=/usr --build=$(DEB_HOST_GNU_TYPE --host=$(DEB_HOST_GNU_TYPE) [ other options … ] touch $@ build: build-stamp build-stamp: configure-stamp dh_testdir $(MAKE) touch $@ clean: dh_testdir dh_testroot dh_clean $(MAKE) clean rm -f configure-stamp build-stamp
  • 16. DEBIAN PACKAGING TUTORIAL 16 debian/rules in details 2/3 install: build dh_testdir dh_testroot dh_prep $(MAKE) DESTDIR=$(CURDIR)/debian/shlug install mkdir -p $(CURDIR)/debian/shlug/usr/bin mv $(CURDIR)/debian/shlug/usr/local/bin/* $(CURDIR)/debian/shlug/usr/bin binary-indep: dh_testdir dh_testroot dh_installchangelogs dh_installdeb dh_gencontrol dh_md5sums dh_builddeb
  • 17. DEBIAN PACKAGING TUTORIAL 17 debian/rules in details 3/3 binary-arch: build install dh_testdir dh_testroot dh_installchangelogs doc/changelogs dh_installdocs debian/README.Debian dh_fixperms dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build install binary binary-arch binary-indep
  • 18. DEBIAN PACKAGING TUTORIAL 18 Patch system: dpatch 1/2 ● Set Depends: dpatch ● Add in your debian/rules: – include /usr/share/dpatch/dpatch.make – patch-stamp: – configure-stamp: patch-stamp – clean: unpatch ● Everything else is automated ● Manually: dpatch apply-all / deapply-all
  • 19. DEBIAN PACKAGING TUTORIAL 19 Patch system: dpatch 2/2 ● Put dpatch files in debian/patches ● List patch files in debian/patches/00list ● dpatch header example: #!/bin/sh /usr/share/dpatch/dpatch-run ## 02_install_path.dpatch by Thomas Goirand <zigo@debian.org> ## DP: Upstream installs in /usr/local/bin, this patch fixes it @DPATCH@ diff -u shlug-1.2.3.orig shlug-1.2.3 --- shlug-1.2.3.orig/Makefile --- shlug-1.2.3/Makefile
  • 20. DEBIAN PACKAGING TUTORIAL 20 Maintainer scripts ● postinst / preinst / prerm / postrm ● postinst example: #!/bin/sh set -e if ! getent passwd shlug >/dev/null ; then useradd -m -s /bin/false -g nogroup shlug -r -b /var/lib fi touch /var/log/shlug.log chown shlug.shlug /var/log/shlug.log #DEBHELPER# exit 0
  • 21. DEBIAN PACKAGING TUTORIAL 21 Other dh_* scripts ● dh_install and debian/install ● dh_installmanpages debian/manpages ● dh_installdocs debian/docs ● dh_link and debian/links ● dh_installinit debian/init ● Many, many more...
  • 22. DEBIAN PACKAGING TUTORIAL 22 Debconf 1/5 ● A standardized API for configuring debs ● Many back-ends (wiptail, X-Window, etc.) ● Has default values and levels of verbosity ● Understand translations (gettext po files) ● Warning: – can run in non-interactive mode – shouldn't overwrite config file values – Do not abuse it
  • 23. DEBIAN PACKAGING TUTORIAL 23 Debconf 2/5 ● Build-Depends: po-debconf ● Depends: debconf ● In your debian/rules: Clean: dh_testdir dh_testroot . . . debconf-updatepodebconf-updatepo
  • 24. DEBIAN PACKAGING TUTORIAL 24 Debconf 3/5 ● debian/shlug.template example: # These templates have been reviewed by the debian-i10n-english # team # # If modifications/additions/rewording are needed, please ask # for advice to debian-i10n-english@lists.debian.org Template: shlug/max_user Type: string Default: 100 Description: Shlug max user The shlug proccess N messages at once. If this number is bigger, shlug will process messages faster, but also will use more memory: approximately 1MB per user.
  • 25. DEBIAN PACKAGING TUTORIAL 25 Debconf 4/5 ● debian/shlug.config example: #!/bin/sh set -e . /usr/share/debconf/confmodule if [ -f /etc/shlug/shlug.conf ] ; then . /etc/shlug/shlug.conf fi if [ ! -z ${shl_max_user} ] ; then db_set shlug/shl_max_user ${shl_max_user} fi db_input high shlug/shl_max_user || true db_go #DEBHELPER# exit 0
  • 26. DEBIAN PACKAGING TUTORIAL 26 Debconf 5/5 ● debian/shlug.postinst example: #!/bin/sh set -e . /usr/share/debconf/confmodule db_version 2.0 db_get shlug/shlug_my_config new_shlug_config=$RET echo “# Enter your config value here: shl_max_user=${new_shlug_config}” >/etc/shlug/shlug.conf #DEBHELPER# exit 0
  • 27. DEBIAN PACKAGING TUTORIAL 27 More to learn, not in these slides ● Debconf package configuration ● Init script building ● Menu items ● db-config-common ● Language specifics (python, php, perl...) ● Web apps ● ...
  • 28. DEBIAN PACKAGING TUTORIAL 28 Before building ● Check your env: – export DEBFULLNAME="Thomas Goirand" – export DEBEMAIL="zigo@debian.org" – export EDITOR=vim ● Check that your GPG key is ok – gpg --list-keys
  • 29. DEBIAN PACKAGING TUTORIAL 29 Building and checking ● You HAVE to build in SID ● dpkg-buildpackage ● lintian -Ii shlug_1.2.3-2_amd64.changes ● Install it on your own system and check ● Building in a chroot for checking depends, build-depends and build-depends-indep
  • 30. DEBIAN PACKAGING TUTORIAL 30 Bonus: use Git ● Multiple branches: – debian-sid – upstream-sid – … ● Build with: git-buildpackage --git-upstream-branch=upstream-sid --git-debian-branch=debian-sid
  • 31. DEBIAN PACKAGING TUTORIAL 31 Your package in debian main! ● Only DD can upload ● Anyone can maintain packages! ● Have your gpg key signed ● New binary packages goes in NEW queue for checking by ftp-masters ● Find sponsors: – mentors.debian.net – Ask me!!!
  • 32. DEBIAN PACKAGING TUTORIAL 32 Sponsoree tips ● Make sure your package is lintian clean ● Really do what your sponsor advices you: – Carefully change what has been advised – Do not fear to ask: 4 days limit in -mentors ● pbuilder / sbuilder / virtual machines / puiparts ● Don't use dh_make ! (only my opinion...) ● Look at other packages as example
  • 33. DEBIAN PACKAGING TUTORIAL 33 Maintainership never ends ● Don't package and forget: brings hate ● You will be responsible for YEARS ● BTS (bug tracking system) ● Relation with upstream author ● Fixing bugs is better than packaging new
  • 34. DEBIAN PACKAGING TUTORIAL 34 Working with others: Alioth ● alioth.debian.org ● collab-maint ● pkg-* groups, lists, and git.debian.org ● Use the BTS, reportbug and reporbug-ng
  • 35. DEBIAN PACKAGING TUTORIAL 35 Becoming DD / DM ● Maintaining packages ● DM is often the first step ● Understand the DFSG / Social contract ● Patience (months, maybe years) ● Somebody vouching for you ● Pass the DAM(ned) tests
  • 36. DEBIAN PACKAGING TUTORIAL 36 Resources on the net ● Absolutely everything is on *.debian.org ● Debian New Maintainer Guide ● Debian Policy Manual ● Debian Developer Reference ● Specific policies and drafts ● irc.debian.org: #mentors ● debian-mentors@lists.debian.org