Basic Debian Packaging
This class is not currently offered. Laurel 21:32, 31 July 2010 (UTC)
The Basic Debian Packaging class should give a basic understanding of how to build a debian package from some common types of source tarballs or repositories, with the assistance of several helper utilities.
- 1 background
- 2 terms
- 3 tips for working environment
- 4 topics covered
- 5 additional and related topics
- basic familiarity with commandline and Command Line 2
- basic familiarity with linux
- basic understanding of apt and dpkg
- familiarity with a text editor
- rudimentary understanding of building and compiling software
- basic understanding of cvs or subversion
the source of the software- the originating author, the current development team
the packager of software- a debian maintainer
most of ubuntu's software comes directly from debian, so debian would be considered upstream to ubuntu. most of debian's packages come from other projects, such as GNU, Linux, KDE and GNOME, which would be considered upstream to debian.
- top level of source directory
the directory in which the source code is unpacked.
tips for working environment
- keep a web browser pointed to this page
- open several terminal windows
- don't forget to use the "man" command, or -h and --help
- commandline reminders
- remember to use tab completion.
- hit tab twice, fast.
- hit tab again!
- remember to use the up arrow to re-do a previous command
- keep hitting tab!
- is it already packaged:
- other sources of software:
grab and unpack a tarball
- gnu hello:
wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz tar xvzf hello-2.1.1.tar.gz
DEBEMAILemail@example.com EDITOR=nano DEBFULLNAME="Your Name Here" export DEBEMAIL DEBFULLNAME EDITOR
the debian directory
creating the debian directory
- using dh_make (package dh-make)
dh_make -s -c gpl
- dh-make-perl for packaging perl modules
contents of a debian directory
- add copyright holder's name and relevent copyright
egrep -ri copyright * | less
- dch (a.k.a. debchange, part of the devscripts package)
This is the most important section, and the part that's least susceptible to manpages.
- control - what packages are being made, what dependencies there are, who made them, and descriptions
- rules - the file that controls the build process
- other files (note that these may not be needed for a proper makefile-based source package)
- *.install - in here, put all the files you want installed, first their location in the tree, then a space, then their location in the filesystem, but leave off the root / at the beginning.
- other examples: *.ex and *.EX files
- add cdbs to build-depends or build-depends-indep debian/control
- magic snippet for a complete debian/rules file (i.e. replace rules with the following lines):
#!/usr/bin/make -f # uncomment the next line if using a makefile-based source #include /usr/share/cdbs/1/class/makefile.mk # uncomment the next line if using a autotools-based source #include /usr/share/cdbs/1/class/autotools.mk include /usr/share/cdbs/1/rules/debhelper.mk
- look in /usr/share/cdbs/1/class for more source types
- without gpg keys:
debuild -uc -us
lesspipe ../hello_2.1.1_i386.deb | less
- build dependencies
- package dependencies
- install in a clean debian base-install
- debian policy checker
lintian -i ../hello_2.1.1_i386.changes