createdeb generates Debian packages from simple package descriptors.
Internally createdeb acts as a frontend to equivs-build.
A debdesc file describes the content a deb package. It is used to
state the name and the version of the package, its dependencies, who is
its maintainer, under what licence it is licensed and, most important,
what files should be in the package and where they should be installed.
A simple debdesc file for a metapackage that only declares dependencies
looks like this:
Section: metapackages
Priority: important
Package: demo-metapackage
Maintainer: Mel Shmoe <mel@example.com>
Description: A demo metapackage
Depends:
libdemo,
demo-client
Recommends:
demo-config
A createdeb file for a more interesting package that installs new files
and modifies existing files would look like the following:
Section: admin
Priority: important
Package: demo-config
Maintainer: Mel Shmoe <mel@example.com>
Description: A demo configuration package
Depends:
demo-metapackage
Copy: maintenance.sh /usr/share/demo-config/
Copy: check.sh /usr/share/demo-config/
Diff: /etc/login.defs
In addition to the normal debian/control directives, createdeb
recognizes also two additional directives: Copy, to copy files to
specific locations, and Diff, to automatically generate patches of
existing files.
The Copy directive requires a source file and a destination directory:
Copy: <file> <directory>
The file to be copied must be placed in the directory
<package-name>/files/.
The Diff directive requires the absolute path of the file to be
patched:
Diff: <full-path>
The Diff directive requires the presence of two files: the original
file, as will be found installed, and the modified file.
The path of the original file must be
<package-name>/diff/<full-path>.orig
while the path of the modified file must be
<package-name>/diff/<full-path>
createdeb will take care of creating the needed patches and adding the
patching instruction to the package control file.
equivs-build (up to version 2.0.9 included) has a bug that prevents
createdeb from producing working packages. Please follow the
workaround instructions
to avoid problems.
Put all your debdesc package descriptors in a directoy, then use GNU
make to run the Makefile found in the directory where you downloaded
createdeb.
$ ls .debdesc
demo-config.debdesc
demo-config/
$ alias createdeb="make -f ~/apps/createdeb/Makefile"
$ createdeb
$ ls repo/
demo-1.0_all.deb Packages.gz
Once built, the packages can be copied to a remote or local repository
using the target upload.
$ createdeb upload REMOTE_REPO_DIR=mel@example.org:/var/repo
- Gioele Barabucci http://svario.it/gioele
This is free software released into the public domain (CC0 license).
See the COPYING file or http://creativecommons.org/publicdomain/zero/1.0/
for more details.