Chapter 4. Required files under the debian directory. Table of Contents. Chapter 6. Building the package. Table of Contents. Complete (re)build. dh_installdeb(1) automatically flags any files under the /etc directory as conffiles, with the exception of d which follows the format of crontab(5).

Author: Mukazahn Mole
Country: China
Language: English (Spanish)
Genre: Career
Published (Last): 4 September 2009
Pages: 355
PDF File Size: 11.69 Mb
ePub File Size: 10.65 Mb
ISBN: 829-4-96051-266-4
Downloads: 88795
Price: Free* [*Free Regsitration Required]
Uploader: Ferr

There is a new subdirectory under the program’s source directory, called debian.

Chapter 6. Building the package

There are a number of files in this directory that we should edit in order to customize the behavior of the package. The most important of them are controlchangelogcopyrightand ruleswhich are required for all packages.

This file contains various values which dpkgdselectapt-getapt-cacheaptitudeand other package management tools will use to manage the package.

It is defined by the Debian Policy Manual, 5 “Control files and their fields”. Lines 1—7 are the control information for the source package. Lines 9—13 are the control information for the binary package. As you may have noticed, the Debian archive is divided into multiple maint-guidee Each of these naint-guide divided into sections that classify packages into rough categories.

So we have admin for administrator-only programs, devel for programmer tools, doc for documentation, libs for libraries, mail for email readers and daemons, net for network apps and daemons, x11 for X11 programs that don’t fit anywhere else, and many more.

Let’s change it then to x Line 3 describes how important it is that the user installs this package. The optional priority will usually work for new packages that do not conflict with others claiming requiredimportantor standard priority. Section and priority are used by front-ends like aptitude when they sort packages and select defaults.

Once you upload denian package to Debian, the value of these two fields can be overridden by the archive maintainers, in which case you will be notified by email. As this is a normal priority package and doesn’t conflict with anything else, we will change the priority to optional. Line 4 is the name and email address of the maintainer. Make sure that this field includes a valid To header for email, because after you upload it, the bug tracking system will use it to deliver bug emails to you.

Avoid using commas, ampersands, or parentheses. Line 5 includes the list of packages required to build your package as the Build-Depends field.

Dsbian can also have the Build-Depends-Indep field as an additional line here. If you need to have other tools to build your package, you should add them to these fields.

Multiple entries are separated with commas; read on for the explanation of binary package dependencies to find out more about the syntax of these lines. Source packages which have binary packages with Architecture: For source packages with binary packages all of which are Architecture: If you are not sure which one should be used, use the Build-Depends field to be on the safe side.

Then just take the -dev version of every package as a Build-Depends entry. If you use ldd for this purpose, it will report indirect lib dependencies as well, resulting in the problem of maint-guied build dependencies.


Line 6 is the version of the Debian Policy Manual standards this package follows, the one you read while making your package. Line 9 is the name of the debiann package. This is usually the same as the name of the source package, but it doesn’t necessarily have to be that way. Line 10 describes the architectures the binary package can be compiled for. This value is usually one of the following depending on the type of the binary package: The generated binary package is an architecture independent one usually consisting of text, images, or scripts in an interpreted language.

We leave line 10 as is since this is written in C. Line 11 shows one of the most powerful features of the Debian packaging system. Packages can relate to each maint-guuide in various ways.

The package management tools usually behave the same way when dealing with these relations; if not, it will be explained. See dpkg 8dselect 8apt 8aptitude 1etc. Here is a simplified description of package relationships: The package will not be installed unless the packages it depends on are installed. Use this if your program absolutely will not run or will cause severe breakage unless a particular package is present.

Debian Developers’ Manuals

Use this for packages that are not strictly necessary but are typically used with your program. When a user installs your program, all front-ends will probably degian them to install the recommended packages.

Use this for packages which will work nicely with your program but are not at all necessary. When a user installs your program, they will probably not be prompted to install debain packages. This is stronger than Depends. The package will not be installed unless the packages it pre-depends on are installed and correctly configured.

Debian — Debian Developers’ Manuals

Use this very sparingly and only after discussing it on the debian-devel lists. The package will not be installed until all the packages it conflicts with have been removed.

Use this if your program absolutely will not run or will cause severe problems if a particular package is present. When installed the package will break all the listed packages. Normally a Breaks entry specifies that it applies to versions earlier maint-gkide a certain value.

The resolution is generally to use higher-level package management tools to upgrade the listed packages. For some types of packages where there are multiple alternatives, virtual names have been defined. You can get the full list in the virtual-package-names-list. Use this if your program provides a function of an existing virtual package. Use this when your program deiban files from another package, or completely replaces another package used in conjunction with Conflicts. Files from the named maint-giude will be overwritten with the files from your package.

All these fields have uniform syntax. They are a list of package names separated by commas. These package names may also be lists of alternative package names, maint-guidr by vertical bar symbols pipe symbols. The fields may deblan their applicability to particular versions of each named package. The restriction of each individual package is listed in parentheses after its name, and should contain a relation from the list below followed by a version number value.


The relations allowed are: It generates a list of ELF executables and shared libraries it has found for each binary package. It generates a list maint-vuide a dependencies on perl or perlapi for each binary package.

Some debhelper commands may cause the generated package to depend on some additional packages.

All such commands generate a list of required packages for each binary package. Having said all that, we can leave the Depends field exactly as it is now, and insert another line after it saying Suggests: Line 9 is the Homepage URL. Let’s assume this to be at http: Line 12 is the short description. Terminals are conventionally 80 columns wide so this shouldn’t be longer than about 60 characters.

I’ll change it to fully GUI-configurable, two-pane X file manager. Line 13 is where the mwint-guide description goes. This should be a paragraph which gives more details about the package. Column 1 of each line should be empty. There must be no blank lines, but you can put a single. Also, there must be no more than one blank line after the long description. This file contains information about the copyright and license of the upstream sources.

Debian Policy Manual, Let’s use the –copyright gpl2 option here to get a template file for the gentoo package released under GPL You must fill in missing information to complete this file, such as the place you got the package from, the actual copyright notice, and the license. Otherwise, you must include the complete license. In short, here’s what gentoo ‘s copyright file should look like:. This is a required file, which has a special format described in Debian Policy Manual, 4.

This format is used by dpkg and other programs to obtain the version number, revision, distribution, and urgency of your package. For you, it is also important, since it is good to have documented all changes you have done. It will help people downloading your package to see whether there are issues with the package that they should know about.

Package: maint-guide-de (1.2.39)

Line 1 is the package name, version, distribution, and urgency. The name must match the source package name; distribution should be unstableand urgency should be set to medium unless there is any particular reason for other values.

You can do it with dch 1. You can edit this manually with a text editor as long as you follow the formatting convention used by the dch 1. Now we need to take a look maint-guied the exact rules that dpkg-buildpackage 1 will use to actually create the package. This file is in fact another Makefilebut different from the one s in the upstream source. Unlike other files in debianthis one is marked as executable. Every rules file, like any other Makefileconsists of several rules, each of which defines a target and how it is carried out.

Empty debina and lines beginning with hash are treated as comments and ignored.