4.4. Debian changelog: debian/changelog

Every source package must include the Debian changelog file, debian/changelog. Changes in the Debian version of the package should be briefly explained in this file. 3 This includes modifications made in the Debian package compared to the upstream one as well as other changes and updates to the package. 4

The format of the debian/changelog allows the package building tools to discover which version of the package is being built and find out other release-specific information.

That format is a series of entries like this:

  1. package (version) distribution(s); urgency=urgency
  2. [optional blank line(s), stripped]
  3. * change details
  4. more change details
  5. [blank line(s), included in output of dpkg-parsechangelog]
  6. * even more change details
  7. [optional blank line(s), stripped]
  8. -- maintainer name <email address>[two spaces] date

package and version are the source package name and version number.

distribution(s) lists the distributions where this version should be installed when it is uploaded - it is copied to the Distribution field in the .changes file. See Distribution.

urgency is the value for the Urgency field in the .changes file for the upload (see Urgency). It is not possible to specify an urgency containing commas; commas are used to separate keyword=value settings in the dpkg changelog format (though there is currently only one useful keyword, urgency).

The change details may in fact be any series of lines starting with at least two spaces, but conventionally each change starts with an asterisk and a separating space and continuation lines are indented so as to bring them in line with the start of the text above. Blank lines may be used here to separate groups of changes, if desired.

If this upload resolves bugs recorded in the Bug Tracking System (BTS), they may be automatically closed on the inclusion of this package into the Debian archive by including the string: closes: Bug#nnnnn in the change details. 5 This information is conveyed via the Closes field in the .changes file (see Closes).

The maintainer name and email address used in the changelog should be the details of the person who prepared this release of the package. They are not necessarily those of the uploader or usual package maintainer. 6 The information here will be copied to the Changed-By field in the .changes file (see Changed-By), and then later used to send an acknowledgement when the upload has been installed.

The date has the following format 7 (compatible and with the same semantics of RFC 2822 and RFC 5322):

  1. day-of-week, dd month yyyy hh:mm:ss +zzzz

where:

  • day-of-week is one of: Mon, Tue, Wed, Thu, Fri, Sat, Sun

  • dd is a one- or two-digit day of the month (01-31)

  • month is one of: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec

  • yyyy is the four-digit year (e.g. 2010)

  • hh is the two-digit hour (00-23)

  • mm is the two-digit minutes (00-59)

  • ss is the two-digit seconds (00-60)

  • +zzzz or -zzzz is the time zone offset from Coordinated

    Universal Time (UTC). “+” indicates that the time is ahead of (i.e., east of) UTC and “-” indicates that the time is behind (i.e., west of) UTC. The first two digits indicate the hour difference from UTC and the last two digits indicate the number of additional minutes difference from UTC. The last two digits must be in the range 00-59.

The first “title” line with the package name must start at the left hand margin. The “trailer” line with the maintainer and date details must be preceded by exactly one space. The maintainer details and the date must be separated by exactly two spaces.

The entire changelog must be encoded in UTF-8.

For more information on placement of the changelog files within binary packages, please see Changelog files and release notes.