| 1 |
debacle |
4902 |
<?xml version="1.0" encoding="utf-8"?> |
| 2 |
|
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" |
| 3 |
debacle |
4910 |
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ |
| 4 |
debacle |
4911 |
<!ENTITY % commondata SYSTEM "common.ent" > %commondata; |
| 5 |
debacle |
4910 |
]> |
| 6 |
debacle |
4902 |
<chapter id="pkgs"> |
| 7 |
|
|
<title>Managing Packages</title> |
| 8 |
|
|
<para> |
| 9 |
|
|
This chapter contains information related to creating, uploading, maintaining, |
| 10 |
|
|
and porting packages. |
| 11 |
|
|
</para> |
| 12 |
|
|
<section id="newpackage"> |
| 13 |
|
|
<title>New packages</title> |
| 14 |
|
|
<para> |
| 15 |
|
|
If you want to create a new package for the Debian distribution, you should |
| 16 |
debacle |
4910 |
first check the <ulink url="&url-wnpp;">Work-Needing and |
| 17 |
debacle |
4902 |
Prospective Packages (WNPP)</ulink> list. Checking the WNPP list ensures that |
| 18 |
|
|
no one is already working on packaging that software, and that effort is not |
| 19 |
debacle |
4910 |
duplicated. Read the <ulink url="&url-wnpp;">WNPP web |
| 20 |
debacle |
4902 |
pages</ulink> for more information. |
| 21 |
|
|
</para> |
| 22 |
|
|
<para> |
| 23 |
|
|
Assuming no one else is already working on your prospective package, you must |
| 24 |
|
|
then submit a bug report (<xref linkend="submit-bug"/> ) against the |
| 25 |
|
|
pseudo-package <systemitem role="package">wnpp</systemitem> describing your |
| 26 |
|
|
plan to create a new package, including, but not limiting yourself to, a |
| 27 |
|
|
description of the package, the license of the prospective package, and the |
| 28 |
|
|
current URL where it can be downloaded from. |
| 29 |
|
|
</para> |
| 30 |
|
|
<para> |
| 31 |
|
|
You should set the subject of the bug to ``ITP: <replaceable>foo</replaceable> |
| 32 |
|
|
-- <replaceable>short description</replaceable>'', substituting the name of the |
| 33 |
|
|
new package for <replaceable>foo</replaceable>. The severity of the bug report |
| 34 |
|
|
must be set to <emphasis>wishlist</emphasis>. If you feel it's necessary, send |
| 35 |
debacle |
4911 |
a copy to &email-debian-devel; by putting the address in the |
| 36 |
|
|
<literal>X-Debbugs-CC:</literal> header of the message (no, don't use |
| 37 |
debacle |
4902 |
<literal>CC:</literal>, because that way the message's subject won't indicate |
| 38 |
|
|
the bug number). |
| 39 |
|
|
</para> |
| 40 |
|
|
<para> |
| 41 |
|
|
Please include a <literal>Closes: |
| 42 |
|
|
bug#<replaceable>nnnnn</replaceable></literal> entry in the changelog of the |
| 43 |
|
|
new package in order for the bug report to be automatically closed once the new |
| 44 |
|
|
package is installed in the archive (see <xref linkend="upload-bugfix"/> ). |
| 45 |
|
|
</para> |
| 46 |
|
|
<para> |
| 47 |
|
|
When closing security bugs include CVE numbers as well as the Closes: #nnnnn. |
| 48 |
|
|
This is useful for the security team to track vulnerabilities. If an upload is |
| 49 |
|
|
made to fix the bug before the advisory ID is known, it is encouraged to modify |
| 50 |
|
|
the historical changelog entry with the next upload. Even in this case, please |
| 51 |
|
|
include all available pointers to background information in the original |
| 52 |
|
|
changelog entry. |
| 53 |
|
|
</para> |
| 54 |
|
|
<para> |
| 55 |
|
|
There are a number of reasons why we ask maintainers to announce their |
| 56 |
|
|
intentions: |
| 57 |
|
|
</para> |
| 58 |
|
|
<itemizedlist> |
| 59 |
|
|
<listitem> |
| 60 |
|
|
<para> |
| 61 |
|
|
It helps the (potentially new) maintainer to tap into the experience of people |
| 62 |
|
|
on the list, and lets them know if anyone else is working on it already. |
| 63 |
|
|
</para> |
| 64 |
|
|
</listitem> |
| 65 |
|
|
<listitem> |
| 66 |
|
|
<para> |
| 67 |
|
|
It lets other people thinking about working on the package know that there |
| 68 |
|
|
already is a volunteer, so efforts may be shared. |
| 69 |
|
|
</para> |
| 70 |
|
|
</listitem> |
| 71 |
|
|
<listitem> |
| 72 |
|
|
<para> |
| 73 |
|
|
It lets the rest of the maintainers know more about the package than the one |
| 74 |
|
|
line description and the usual changelog entry ``Initial release'' that gets |
| 75 |
|
|
posted to <literal>debian-devel-changes</literal>. |
| 76 |
|
|
</para> |
| 77 |
|
|
</listitem> |
| 78 |
|
|
<listitem> |
| 79 |
|
|
<para> |
| 80 |
|
|
It is helpful to the people who live off unstable (and form our first line of |
| 81 |
|
|
testers). We should encourage these people. |
| 82 |
|
|
</para> |
| 83 |
|
|
</listitem> |
| 84 |
|
|
<listitem> |
| 85 |
|
|
<para> |
| 86 |
|
|
The announcements give maintainers and other interested parties a better feel |
| 87 |
|
|
of what is going on, and what is new, in the project. |
| 88 |
|
|
</para> |
| 89 |
|
|
</listitem> |
| 90 |
|
|
</itemizedlist> |
| 91 |
|
|
<para> |
| 92 |
debacle |
4910 |
Please see <ulink url="http://&ftp-master-host;/REJECT-FAQ.html"></ulink> |
| 93 |
debacle |
4902 |
for common rejection reasons for a new package. |
| 94 |
|
|
</para> |
| 95 |
|
|
</section> |
| 96 |
|
|
|
| 97 |
|
|
<section id="changelog-entries"> |
| 98 |
|
|
<title>Recording changes in the package</title> |
| 99 |
|
|
<para> |
| 100 |
|
|
Changes that you make to the package need to be recorded in the |
| 101 |
|
|
<filename>debian/changelog</filename>. These changes should provide a concise |
| 102 |
|
|
description of what was changed, why (if it's in doubt), and note if any bugs |
| 103 |
|
|
were closed. They also record when the package was completed. This file will |
| 104 |
|
|
be installed in |
| 105 |
|
|
<filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.Debian.gz</filename>, |
| 106 |
|
|
or |
| 107 |
|
|
<filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.gz</filename> |
| 108 |
|
|
for native packages. |
| 109 |
|
|
</para> |
| 110 |
|
|
<para> |
| 111 |
|
|
The <filename>debian/changelog</filename> file conforms to a certain structure, |
| 112 |
|
|
with a number of different fields. One field of note, the |
| 113 |
|
|
<emphasis>distribution</emphasis>, is described in <xref |
| 114 |
|
|
linkend="distribution"/> . More information about the structure of this file |
| 115 |
|
|
can be found in the Debian Policy section titled |
| 116 |
|
|
<filename>debian/changelog</filename>. |
| 117 |
|
|
</para> |
| 118 |
|
|
<para> |
| 119 |
|
|
Changelog entries can be used to automatically close Debian bugs when the |
| 120 |
|
|
package is installed into the archive. See <xref linkend="upload-bugfix"/> . |
| 121 |
|
|
</para> |
| 122 |
|
|
<para> |
| 123 |
|
|
It is conventional that the changelog entry of a package that contains a new |
| 124 |
|
|
upstream version of the software looks like this: |
| 125 |
|
|
</para> |
| 126 |
|
|
<screen> |
| 127 |
|
|
* new upstream version |
| 128 |
|
|
</screen> |
| 129 |
|
|
<para> |
| 130 |
|
|
There are tools to help you create entries and finalize the |
| 131 |
|
|
<filename>changelog</filename> for release — see <xref linkend="devscripts"/> |
| 132 |
|
|
and <xref linkend="dpkg-dev-el"/> . |
| 133 |
|
|
</para> |
| 134 |
|
|
<para> |
| 135 |
|
|
See also <xref linkend="bpp-debian-changelog"/> . |
| 136 |
|
|
</para> |
| 137 |
|
|
</section> |
| 138 |
|
|
|
| 139 |
|
|
<section id="sanitycheck"> |
| 140 |
|
|
<title>Testing the package</title> |
| 141 |
|
|
<para> |
| 142 |
|
|
Before you upload your package, you should do basic testing on it. At a |
| 143 |
|
|
minimum, you should try the following activities (you'll need to have an older |
| 144 |
|
|
version of the same Debian package around): |
| 145 |
|
|
</para> |
| 146 |
|
|
<itemizedlist> |
| 147 |
|
|
<listitem> |
| 148 |
|
|
<para> |
| 149 |
|
|
Install the package and make sure the software works, or upgrade the package |
| 150 |
|
|
from an older version to your new version if a Debian package for it already |
| 151 |
|
|
exists. |
| 152 |
|
|
</para> |
| 153 |
|
|
</listitem> |
| 154 |
|
|
<listitem> |
| 155 |
|
|
<para> |
| 156 |
|
|
Run <command>lintian</command> over the package. You can run |
| 157 |
|
|
<command>lintian</command> as follows: <literal>lintian -v |
| 158 |
|
|
<replaceable>package-version</replaceable>.changes</literal>. This will check |
| 159 |
|
|
the source package as well as the binary package. If you don't understand the |
| 160 |
|
|
output that <command>lintian</command> generates, try adding the |
| 161 |
|
|
<literal>-i</literal> switch, which will cause <command>lintian</command> to |
| 162 |
|
|
output a very verbose description of the problem. |
| 163 |
|
|
</para> |
| 164 |
|
|
<para> |
| 165 |
|
|
Normally, a package should <emphasis>not</emphasis> be uploaded if it causes |
| 166 |
|
|
lintian to emit errors (they will start with <literal>E</literal>). |
| 167 |
|
|
</para> |
| 168 |
|
|
<para> |
| 169 |
|
|
For more information on <command>lintian</command>, see <xref |
| 170 |
|
|
linkend="lintian"/> . |
| 171 |
|
|
</para> |
| 172 |
|
|
</listitem> |
| 173 |
|
|
<listitem> |
| 174 |
|
|
<para> |
| 175 |
|
|
Optionally run <xref linkend="debdiff"/> to analyze changes from an older |
| 176 |
|
|
version, if one exists. |
| 177 |
|
|
</para> |
| 178 |
|
|
</listitem> |
| 179 |
|
|
<listitem> |
| 180 |
|
|
<para> |
| 181 |
|
|
Downgrade the package to the previous version (if one exists) — this tests |
| 182 |
|
|
the <filename>postrm</filename> and <filename>prerm</filename> scripts. |
| 183 |
|
|
</para> |
| 184 |
|
|
</listitem> |
| 185 |
|
|
<listitem> |
| 186 |
|
|
<para> |
| 187 |
|
|
Remove the package, then reinstall it. |
| 188 |
|
|
</para> |
| 189 |
|
|
</listitem> |
| 190 |
|
|
<listitem> |
| 191 |
|
|
<para> |
| 192 |
|
|
Copy the source package in a different directory and try unpacking it and |
| 193 |
|
|
rebuilding it. This tests if the package relies on existing files outside of |
| 194 |
|
|
it, or if it relies on permissions being preserved on the files shipped inside |
| 195 |
|
|
the .diff.gz file. |
| 196 |
|
|
</para> |
| 197 |
|
|
</listitem> |
| 198 |
|
|
</itemizedlist> |
| 199 |
|
|
</section> |
| 200 |
|
|
|
| 201 |
|
|
<section id="sourcelayout"> |
| 202 |
|
|
<title>Layout of the source package</title> |
| 203 |
|
|
<para> |
| 204 |
|
|
There are two types of Debian source packages: |
| 205 |
|
|
</para> |
| 206 |
|
|
<itemizedlist> |
| 207 |
|
|
<listitem> |
| 208 |
|
|
<para> |
| 209 |
|
|
the so-called <emphasis>native</emphasis> packages, where there is no |
| 210 |
|
|
distinction between the original sources and the patches applied for Debian |
| 211 |
|
|
</para> |
| 212 |
|
|
</listitem> |
| 213 |
|
|
<listitem> |
| 214 |
|
|
<para> |
| 215 |
|
|
the (more common) packages where there's an original source tarball file |
| 216 |
|
|
accompanied by another file that contains the patches applied for Debian |
| 217 |
|
|
</para> |
| 218 |
|
|
</listitem> |
| 219 |
|
|
</itemizedlist> |
| 220 |
|
|
<para> |
| 221 |
|
|
For the native packages, the source package includes a Debian source control |
| 222 |
|
|
file (<literal>.dsc</literal>) and the source tarball |
| 223 |
|
|
(<literal>.tar.gz</literal>). A source package of a non-native package |
| 224 |
|
|
includes a Debian source control file, the original source tarball |
| 225 |
|
|
(<literal>.orig.tar.gz</literal>) and the Debian patches |
| 226 |
|
|
(<literal>.diff.gz</literal>). |
| 227 |
|
|
</para> |
| 228 |
|
|
<para> |
| 229 |
|
|
Whether a package is native or not is determined when it is built by |
| 230 |
|
|
<citerefentry> <refentrytitle>dpkg-buildpackage</refentrytitle> |
| 231 |
|
|
<manvolnum>1</manvolnum> </citerefentry>. The rest of this section relates |
| 232 |
|
|
only to non-native packages. |
| 233 |
|
|
</para> |
| 234 |
|
|
<para> |
| 235 |
|
|
The first time a version is uploaded which corresponds to a particular upstream |
| 236 |
|
|
version, the original source tar file should be uploaded and included in the |
| 237 |
|
|
<filename>.changes</filename> file. Subsequently, this very same tar file |
| 238 |
|
|
should be used to build the new diffs and <filename>.dsc</filename> files, and |
| 239 |
|
|
will not need to be re-uploaded. |
| 240 |
|
|
</para> |
| 241 |
|
|
<para> |
| 242 |
|
|
By default, <command>dpkg-genchanges</command> and |
| 243 |
|
|
<command>dpkg-buildpackage</command> will include the original source tar file |
| 244 |
|
|
if and only if the Debian revision part of the source version number is 0 or 1, |
| 245 |
|
|
indicating a new upstream version. This behavior may be modified by using |
| 246 |
|
|
<literal>-sa</literal> to always include it or <literal>-sd</literal> to always |
| 247 |
|
|
leave it out. |
| 248 |
|
|
</para> |
| 249 |
|
|
<para> |
| 250 |
|
|
If no original source is included in the upload, the original source tar-file |
| 251 |
|
|
used by <command>dpkg-source</command> when constructing the |
| 252 |
|
|
<filename>.dsc</filename> file and diff to be uploaded |
| 253 |
|
|
<emphasis>must</emphasis> be byte-for-byte identical with the one already in |
| 254 |
|
|
the archive. |
| 255 |
|
|
</para> |
| 256 |
|
|
<para> |
| 257 |
|
|
Please notice that, in non-native packages, permissions on files that are not |
| 258 |
|
|
present in the .orig.tar.gz will not be preserved, as diff does not store file |
| 259 |
|
|
permissions in the patch. |
| 260 |
|
|
</para> |
| 261 |
|
|
</section> |
| 262 |
|
|
|
| 263 |
|
|
<section id="distribution"> |
| 264 |
|
|
<title>Picking a distribution</title> |
| 265 |
|
|
<para> |
| 266 |
|
|
Each upload needs to specify which distribution the package is intended for. |
| 267 |
|
|
The package build process extracts this information from the first line of the |
| 268 |
|
|
<filename>debian/changelog</filename> file and places it in the |
| 269 |
|
|
<literal>Distribution</literal> field of the <literal>.changes</literal> file. |
| 270 |
|
|
</para> |
| 271 |
|
|
<para> |
| 272 |
|
|
There are several possible values for this field: `stable', `unstable', |
| 273 |
|
|
`testing-proposed-updates' and `experimental'. Normally, packages are uploaded |
| 274 |
|
|
into <emphasis>unstable</emphasis>. |
| 275 |
|
|
</para> |
| 276 |
|
|
<para> |
| 277 |
|
|
Actually, there are two other possible distributions: `stable-security' and |
| 278 |
|
|
`testing-security', but read <xref linkend="bug-security"/> for more |
| 279 |
|
|
information on those. |
| 280 |
|
|
</para> |
| 281 |
|
|
<para> |
| 282 |
|
|
It is not possible to upload a package into several distributions at the same |
| 283 |
|
|
time. |
| 284 |
|
|
</para> |
| 285 |
|
|
<section id="upload-stable"> |
| 286 |
|
|
<title>Special case: uploads to the <emphasis>stable</emphasis> distribution</title> |
| 287 |
|
|
<para> |
| 288 |
|
|
Uploading to <emphasis>stable</emphasis> means that the package will transfered |
| 289 |
|
|
to the <emphasis>p-u-new</emphasis>-queue for review by the stable release |
| 290 |
|
|
managers, and if approved will be installed in |
| 291 |
|
|
<filename>stable-proposed-updates</filename> directory of the Debian archive. |
| 292 |
|
|
From there, it will be included in <emphasis>stable</emphasis> with the next |
| 293 |
|
|
point release. |
| 294 |
|
|
</para> |
| 295 |
|
|
<para> |
| 296 |
|
|
Extra care should be taken when uploading to <emphasis>stable</emphasis>. |
| 297 |
|
|
Basically, a package should only be uploaded to stable if one of the following |
| 298 |
|
|
happens: |
| 299 |
|
|
</para> |
| 300 |
|
|
<itemizedlist> |
| 301 |
|
|
<listitem> |
| 302 |
|
|
<para> |
| 303 |
|
|
a truly critical functionality problem |
| 304 |
|
|
</para> |
| 305 |
|
|
</listitem> |
| 306 |
|
|
<listitem> |
| 307 |
|
|
<para> |
| 308 |
|
|
the package becomes uninstallable |
| 309 |
|
|
</para> |
| 310 |
|
|
</listitem> |
| 311 |
|
|
<listitem> |
| 312 |
|
|
<para> |
| 313 |
|
|
a released architecture lacks the package |
| 314 |
|
|
</para> |
| 315 |
|
|
</listitem> |
| 316 |
|
|
</itemizedlist> |
| 317 |
|
|
<para> |
| 318 |
|
|
In the past, uploads to <emphasis>stable</emphasis> were used to address |
| 319 |
|
|
security problems as well. However, this practice is deprecated, as uploads |
| 320 |
|
|
used for Debian security advisories are automatically copied to the appropriate |
| 321 |
|
|
<filename>proposed-updates</filename> archive when the advisory is released. |
| 322 |
|
|
See <xref linkend="bug-security"/> for detailed information on handling |
| 323 |
|
|
security problems. |
| 324 |
|
|
</para> |
| 325 |
|
|
<para> |
| 326 |
|
|
Changing anything else in the package that isn't important is discouraged, |
| 327 |
|
|
because even trivial fixes can cause bugs later on. |
| 328 |
|
|
</para> |
| 329 |
|
|
<para> |
| 330 |
|
|
Packages uploaded to <emphasis>stable</emphasis> need to be compiled on systems |
| 331 |
|
|
running <emphasis>stable</emphasis>, so that their dependencies are limited to |
| 332 |
|
|
the libraries (and other packages) available in <emphasis>stable</emphasis>; |
| 333 |
|
|
for example, a package uploaded to <emphasis>stable</emphasis> that depends on |
| 334 |
|
|
a library package that only exists in unstable will be rejected. Making |
| 335 |
|
|
changes to dependencies of other packages (by messing with |
| 336 |
|
|
<literal>Provides</literal> or shlibs files), possibly making those other |
| 337 |
|
|
packages uninstallable, is strongly discouraged. |
| 338 |
|
|
</para> |
| 339 |
|
|
<para> |
| 340 |
|
|
The Release Team (which can be reached at |
| 341 |
debacle |
4911 |
&email-debian-release;) will regularly evaluate the uploads To |
| 342 |
|
|
<emphasis>stable-proposed-updates</emphasis> and decide if your package can be |
| 343 |
|
|
included in <emphasis>stable</emphasis>. Please be clear (and verbose, if |
| 344 |
|
|
necessary) in your changelog entries for uploads to |
| 345 |
debacle |
4902 |
<emphasis>stable</emphasis>, because otherwise the package won't be considered |
| 346 |
|
|
for inclusion. |
| 347 |
|
|
</para> |
| 348 |
|
|
<para> |
| 349 |
|
|
It's best practice to speak with the stable release manager |
| 350 |
|
|
<emphasis>before</emphasis> uploading to |
| 351 |
|
|
<emphasis>stable</emphasis>/<emphasis>stable-proposed-updates</emphasis>, so |
| 352 |
|
|
that the uploaded package fits the needs of the next point release. |
| 353 |
|
|
</para> |
| 354 |
|
|
</section> |
| 355 |
|
|
|
| 356 |
|
|
<section id="upload-t-p-u"> |
| 357 |
|
|
<title>Special case: uploads to <emphasis>testing/testing-proposed-updates</emphasis></title> |
| 358 |
|
|
<para> |
| 359 |
|
|
Please see the information in the <link linkend="t-p-u">testing |
| 360 |
|
|
section</link> for details. |
| 361 |
|
|
</para> |
| 362 |
|
|
</section> |
| 363 |
|
|
|
| 364 |
|
|
</section> |
| 365 |
|
|
|
| 366 |
|
|
<section id="upload"> |
| 367 |
|
|
<title>Uploading a package</title> |
| 368 |
|
|
<section id="upload-ftp-master"> |
| 369 |
|
|
<title>Uploading to <literal>ftp-master</literal></title> |
| 370 |
|
|
<para> |
| 371 |
|
|
To upload a package, you should upload the files (including the signed changes |
| 372 |
debacle |
4910 |
and dsc-file) with anonymous ftp to <literal>&ftp-master-host;</literal> in |
| 373 |
debacle |
4902 |
the directory <ulink |
| 374 |
debacle |
4910 |
url="ftp://&ftp-master-host;&upload-queue;">&upload-queue;</ulink>. |
| 375 |
debacle |
4902 |
To get the files processed there, they need to be signed with a key in the |
| 376 |
lucas |
5186 |
Debian Developers keyring or the Debian Maintainers keyring |
| 377 |
|
|
(see <ulink url="&url-wiki-dm;"></ulink>). |
| 378 |
debacle |
4902 |
</para> |
| 379 |
|
|
<para> |
| 380 |
|
|
Please note that you should transfer the changes file last. Otherwise, your |
| 381 |
|
|
upload may be rejected because the archive maintenance software will parse the |
| 382 |
|
|
changes file and see that not all files have been uploaded. |
| 383 |
|
|
</para> |
| 384 |
|
|
<para> |
| 385 |
|
|
You may also find the Debian packages <xref linkend="dupload"/> or <xref |
| 386 |
|
|
linkend="dput"/> useful when uploading packages. These handy programs help |
| 387 |
|
|
automate the process of uploading packages into Debian. |
| 388 |
|
|
</para> |
| 389 |
|
|
<para> |
| 390 |
|
|
For removing packages, please see the README file in that ftp directory, and |
| 391 |
|
|
the Debian package <xref linkend="dcut"/> . |
| 392 |
|
|
</para> |
| 393 |
|
|
</section> |
| 394 |
|
|
|
| 395 |
|
|
<section id="delayed-incoming"> |
| 396 |
|
|
<title>Delayed uploads</title> |
| 397 |
|
|
<para> |
| 398 |
|
|
Delayed uploads are done for the moment via the delayed queue at gluck. The |
| 399 |
|
|
upload-directory is <literal>gluck:~tfheen/DELAYED/[012345678]-day</literal>. |
| 400 |
|
|
0-day is uploaded multiple times per day to ftp-master. |
| 401 |
|
|
</para> |
| 402 |
|
|
<para> |
| 403 |
|
|
With a fairly recent dput, this section |
| 404 |
|
|
</para> |
| 405 |
|
|
<screen> |
| 406 |
|
|
[tfheen_delayed] |
| 407 |
|
|
method = scp |
| 408 |
|
|
fqdn = gluck.debian.org |
| 409 |
|
|
incoming = ~tfheen |
| 410 |
|
|
</screen> |
| 411 |
|
|
<para> |
| 412 |
|
|
in ~/.dput.cf should work fine for uploading to the DELAYED queue. |
| 413 |
|
|
</para> |
| 414 |
|
|
<para> |
| 415 |
|
|
<emphasis>Note:</emphasis> Since this upload queue goes to |
| 416 |
|
|
<literal>ftp-master</literal>, the prescription found in <xref |
| 417 |
|
|
linkend="upload-ftp-master"/> applies here as well. |
| 418 |
|
|
</para> |
| 419 |
|
|
</section> |
| 420 |
|
|
|
| 421 |
|
|
<section id="s5.6.4"> |
| 422 |
|
|
<title>Security uploads</title> |
| 423 |
|
|
<para> |
| 424 |
|
|
Do <emphasis role="strong">NOT</emphasis> upload a package to the security |
| 425 |
|
|
upload queue (oldstable-security, stable-security, etc.) without prior |
| 426 |
|
|
authorization from the security team. If the package does not exactly meet the |
| 427 |
|
|
team's requirements, it will cause many problems and delays in dealing with the |
| 428 |
|
|
unwanted upload. For details, please see section <xref |
| 429 |
|
|
linkend="bug-security"/> . |
| 430 |
|
|
</para> |
| 431 |
|
|
</section> |
| 432 |
|
|
|
| 433 |
|
|
<section id="s5.6.5"> |
| 434 |
|
|
<title>Other upload queues</title> |
| 435 |
|
|
<para> |
| 436 |
|
|
The scp queues on ftp-master, and security are mostly unusable due to the login |
| 437 |
|
|
restrictions on those hosts. |
| 438 |
|
|
</para> |
| 439 |
|
|
<para> |
| 440 |
|
|
The anonymous queues on ftp.uni-erlangen.de and ftp.uk.debian.org are currently |
| 441 |
|
|
down. Work is underway to resurrect them. |
| 442 |
|
|
</para> |
| 443 |
|
|
<para> |
| 444 |
|
|
The queues on master.debian.org, samosa.debian.org, master.debian.or.jp, and |
| 445 |
|
|
ftp.chiark.greenend.org.uk are down permanently, and will not be resurrected. |
| 446 |
|
|
The queue in Japan will be replaced with a new queue on hp.debian.or.jp some |
| 447 |
|
|
day. |
| 448 |
|
|
</para> |
| 449 |
|
|
<para> |
| 450 |
|
|
For the time being, the anonymous ftp queue on auric.debian.org (the former |
| 451 |
|
|
ftp-master) works, but it is deprecated and will be removed at some point in |
| 452 |
|
|
the future. |
| 453 |
|
|
</para> |
| 454 |
|
|
</section> |
| 455 |
|
|
|
| 456 |
|
|
<section id="upload-notification"> |
| 457 |
|
|
<title>Notification that a new package has been installed</title> |
| 458 |
|
|
<para> |
| 459 |
|
|
The Debian archive maintainers are responsible for handling package uploads. |
| 460 |
|
|
For the most part, uploads are automatically handled on a daily basis by the |
| 461 |
|
|
archive maintenance tools, <command>katie</command>. Specifically, updates to |
| 462 |
|
|
existing packages to the `unstable' distribution are handled automatically. In |
| 463 |
|
|
other cases, notably new packages, placing the uploaded package into the |
| 464 |
|
|
distribution is handled manually. When uploads are handled manually, the |
| 465 |
|
|
change to the archive may take up to a month to occur. Please be patient. |
| 466 |
|
|
</para> |
| 467 |
|
|
<para> |
| 468 |
|
|
In any case, you will receive an email notification indicating that the package |
| 469 |
|
|
has been added to the archive, which also indicates which bugs will be closed |
| 470 |
|
|
by the upload. Please examine this notification carefully, checking if any |
| 471 |
|
|
bugs you meant to close didn't get triggered. |
| 472 |
|
|
</para> |
| 473 |
|
|
<para> |
| 474 |
|
|
The installation notification also includes information on what section the |
| 475 |
|
|
package was inserted into. If there is a disparity, you will receive a |
| 476 |
|
|
separate email notifying you of that. Read on below. |
| 477 |
|
|
</para> |
| 478 |
|
|
<para> |
| 479 |
|
|
Note that if you upload via queues, the queue daemon software will also send |
| 480 |
|
|
you a notification by email. |
| 481 |
|
|
</para> |
| 482 |
|
|
</section> |
| 483 |
|
|
|
| 484 |
|
|
</section> |
| 485 |
|
|
|
| 486 |
|
|
<section id="override-file"> |
| 487 |
|
|
<title>Specifying the package section, subsection and priority</title> |
| 488 |
|
|
<para> |
| 489 |
|
|
The <filename>debian/control</filename> file's <literal>Section</literal> and |
| 490 |
|
|
<literal>Priority</literal> fields do not actually specify where the file will |
| 491 |
|
|
be placed in the archive, nor its priority. In order to retain the overall |
| 492 |
|
|
integrity of the archive, it is the archive maintainers who have control over |
| 493 |
|
|
these fields. The values in the <filename>debian/control</filename> file are |
| 494 |
|
|
actually just hints. |
| 495 |
|
|
</para> |
| 496 |
|
|
<para> |
| 497 |
|
|
The archive maintainers keep track of the canonical sections and priorities for |
| 498 |
|
|
packages in the <emphasis>override file</emphasis>. If there is a disparity |
| 499 |
|
|
between the <emphasis>override file</emphasis> and the package's fields as |
| 500 |
|
|
indicated in <filename>debian/control</filename>, then you will receive an |
| 501 |
|
|
email noting the divergence when the package is installed into the archive. |
| 502 |
|
|
You can either correct your <filename>debian/control</filename> file for your |
| 503 |
|
|
next upload, or else you may wish to make a change in the <emphasis>override |
| 504 |
|
|
file</emphasis>. |
| 505 |
|
|
</para> |
| 506 |
|
|
<para> |
| 507 |
|
|
To alter the actual section that a package is put in, you need to first make |
| 508 |
|
|
sure that the <filename>debian/control</filename> file in your package is |
| 509 |
debacle |
4911 |
accurate. Next, send an email &email-override; or submit a |
| 510 |
|
|
bug against <systemitem role="package">ftp.debian.org</systemitem> requesting |
| 511 |
|
|
that the section or priority for your package be changed from the old section |
| 512 |
|
|
or priority to the new one. Be sure to explain your reasoning. |
| 513 |
debacle |
4902 |
</para> |
| 514 |
|
|
<para> |
| 515 |
|
|
For more information about <emphasis>override files</emphasis>, see |
| 516 |
|
|
<citerefentry> <refentrytitle>dpkg-scanpackages</refentrytitle> |
| 517 |
|
|
<manvolnum>1</manvolnum> </citerefentry> and <ulink |
| 518 |
debacle |
4910 |
url="&url-bts-devel;#maintincorrect"></ulink>. |
| 519 |
debacle |
4902 |
</para> |
| 520 |
|
|
<para> |
| 521 |
|
|
Note that the <literal>Section</literal> field describes both the section as |
| 522 |
|
|
well as the subsection, which are described in <xref |
| 523 |
|
|
linkend="archive-sections"/> . If the section is main, it should be omitted. |
| 524 |
|
|
The list of allowable subsections can be found in <ulink |
| 525 |
debacle |
4910 |
url="&url-debian-policy;ch-archive.html#s-subsections"></ulink>. |
| 526 |
debacle |
4902 |
</para> |
| 527 |
|
|
</section> |
| 528 |
|
|
|
| 529 |
|
|
<section id="bug-handling"> |
| 530 |
|
|
<title>Handling bugs</title> |
| 531 |
|
|
<para> |
| 532 |
|
|
Every developer has to be able to work with the Debian <ulink |
| 533 |
debacle |
4910 |
url="&url-bts;">bug tracking system</ulink>. This includes |
| 534 |
debacle |
4902 |
knowing how to file bug reports properly (see <xref linkend="submit-bug"/> ), |
| 535 |
|
|
how to update them and reorder them, and how to process and close them. |
| 536 |
|
|
</para> |
| 537 |
|
|
<para> |
| 538 |
|
|
The bug tracking system's features are described in the <ulink |
| 539 |
debacle |
4910 |
url="&url-bts-devel;">BTS documentation for |
| 540 |
debacle |
4902 |
developers</ulink>. This includes closing bugs, sending followup messages, |
| 541 |
|
|
assigning severities and tags, marking bugs as forwarded, and other issues. |
| 542 |
|
|
</para> |
| 543 |
|
|
<para> |
| 544 |
|
|
Operations such as reassigning bugs to other packages, merging separate bug |
| 545 |
|
|
reports about the same issue, or reopening bugs when they are prematurely |
| 546 |
|
|
closed, are handled using the so-called control mail server. All of the |
| 547 |
|
|
commands available on this server are described in the <ulink |
| 548 |
debacle |
4910 |
url="&url-bts-control;">BTS control server |
| 549 |
debacle |
4902 |
documentation</ulink>. |
| 550 |
|
|
</para> |
| 551 |
|
|
<section id="bug-monitoring"> |
| 552 |
|
|
<title>Monitoring bugs</title> |
| 553 |
|
|
<para> |
| 554 |
|
|
If you want to be a good maintainer, you should periodically check the <ulink |
| 555 |
debacle |
4910 |
url="&url-bts;">Debian bug tracking system (BTS)</ulink> for |
| 556 |
debacle |
4902 |
your packages. The BTS contains all the open bugs against your packages. You |
| 557 |
|
|
can check them by browsing this page: |
| 558 |
debacle |
4910 |
<literal>http://&bugs-host;/<replaceable>yourlogin</replaceable>@debian.org</literal>. |
| 559 |
debacle |
4902 |
</para> |
| 560 |
|
|
<para> |
| 561 |
|
|
Maintainers interact with the BTS via email addresses at |
| 562 |
debacle |
4911 |
<literal>&bugs-host;</literal>. Documentation on available |
| 563 |
|
|
commands can be found at <ulink url="&url-bts;"></ulink>, or, |
| 564 |
|
|
if you have installed the <systemitem role="package">doc-debian</systemitem> |
| 565 |
|
|
package, you can look at the local files &file-bts-docs;. |
| 566 |
debacle |
4902 |
</para> |
| 567 |
|
|
<para> |
| 568 |
|
|
Some find it useful to get periodic reports on open bugs. You can add a cron |
| 569 |
|
|
job such as the following if you want to get a weekly email outlining all the |
| 570 |
|
|
open bugs against your packages: |
| 571 |
|
|
</para> |
| 572 |
|
|
<screen> |
| 573 |
|
|
# ask for weekly reports of bugs in my packages |
| 574 |
debacle |
4910 |
&cron-bug-report; |
| 575 |
debacle |
4902 |
</screen> |
| 576 |
|
|
<para> |
| 577 |
|
|
Replace <replaceable>address</replaceable> with your official Debian maintainer |
| 578 |
|
|
address. |
| 579 |
|
|
</para> |
| 580 |
|
|
</section> |
| 581 |
|
|
|
| 582 |
|
|
<section id="bug-answering"> |
| 583 |
|
|
<title>Responding to bugs</title> |
| 584 |
|
|
<para> |
| 585 |
|
|
When responding to bugs, make sure that any discussion you have about bugs is |
| 586 |
|
|
sent both to the original submitter of the bug, and to the bug itself (e.g., |
| 587 |
debacle |
4910 |
<email>123@&bugs-host;</email>). If you're writing a new mail and you |
| 588 |
debacle |
4902 |
don't remember the submitter email address, you can use the |
| 589 |
debacle |
4910 |
<email>123-submitter@&bugs-host;</email> email to contact the submitter |
| 590 |
debacle |
4902 |
<emphasis>and</emphasis> to record your mail within the bug log (that means you |
| 591 |
debacle |
4910 |
don't need to send a copy of the mail to <email>123@&bugs-host;</email>). |
| 592 |
debacle |
4902 |
</para> |
| 593 |
|
|
<para> |
| 594 |
|
|
If you get a bug which mentions FTBFS, this means Fails to build from source. |
| 595 |
|
|
Porters frequently use this acronym. |
| 596 |
|
|
</para> |
| 597 |
|
|
<para> |
| 598 |
|
|
Once you've dealt with a bug report (e.g. fixed it), mark it as |
| 599 |
|
|
<emphasis>done</emphasis> (close it) by sending an explanation message to |
| 600 |
debacle |
4910 |
<email>123-done@&bugs-host;</email>. If you're fixing a bug by changing |
| 601 |
debacle |
4902 |
and uploading the package, you can automate bug closing as described in <xref |
| 602 |
|
|
linkend="upload-bugfix"/> . |
| 603 |
|
|
</para> |
| 604 |
|
|
<para> |
| 605 |
|
|
You should <emphasis>never</emphasis> close bugs via the bug server |
| 606 |
debacle |
4911 |
<literal>close</literal> command sent to &email-bts-control;. |
| 607 |
|
|
If you do so, the original submitter will not receive any information about why |
| 608 |
|
|
the bug was closed. |
| 609 |
debacle |
4902 |
</para> |
| 610 |
|
|
</section> |
| 611 |
|
|
|
| 612 |
|
|
<section id="bug-housekeeping"> |
| 613 |
|
|
<title>Bug housekeeping</title> |
| 614 |
|
|
<para> |
| 615 |
|
|
As a package maintainer, you will often find bugs in other packages or have |
| 616 |
|
|
bugs reported against your packages which are actually bugs in other packages. |
| 617 |
|
|
The bug tracking system's features are described in the <ulink |
| 618 |
debacle |
4910 |
url="&url-bts-devel;">BTS documentation for Debian |
| 619 |
debacle |
4902 |
developers</ulink>. Operations such as reassigning, merging, and tagging bug |
| 620 |
|
|
reports are described in the <ulink |
| 621 |
debacle |
4910 |
url="&url-bts-control;">BTS control server |
| 622 |
debacle |
4902 |
documentation</ulink>. This section contains some guidelines for managing your |
| 623 |
|
|
own bugs, based on the collective Debian developer experience. |
| 624 |
|
|
</para> |
| 625 |
|
|
<para> |
| 626 |
|
|
Filing bugs for problems that you find in other packages is one of the civic |
| 627 |
|
|
obligations of maintainership, see <xref linkend="submit-bug"/> for details. |
| 628 |
|
|
However, handling the bugs in your own packages is even more important. |
| 629 |
|
|
</para> |
| 630 |
|
|
<para> |
| 631 |
|
|
Here's a list of steps that you may follow to handle a bug report: |
| 632 |
|
|
</para> |
| 633 |
|
|
<orderedlist numeration="arabic"> |
| 634 |
|
|
<listitem> |
| 635 |
|
|
<para> |
| 636 |
|
|
Decide whether the report corresponds to a real bug or not. Sometimes users |
| 637 |
|
|
are just calling a program in the wrong way because they haven't read the |
| 638 |
|
|
documentation. If you diagnose this, just close the bug with enough |
| 639 |
|
|
information to let the user correct their problem (give pointers to the good |
| 640 |
|
|
documentation and so on). If the same report comes up again and again you may |
| 641 |
|
|
ask yourself if the documentation is good enough or if the program shouldn't |
| 642 |
|
|
detect its misuse in order to give an informative error message. This is an |
| 643 |
|
|
issue that may need to be brought up with the upstream author. |
| 644 |
|
|
</para> |
| 645 |
|
|
<para> |
| 646 |
|
|
If the bug submitter disagrees with your decision to close the bug, they may |
| 647 |
|
|
reopen it until you find an agreement on how to handle it. If you don't find |
| 648 |
|
|
any, you may want to tag the bug <literal>wontfix</literal> to let people know |
| 649 |
|
|
that the bug exists but that it won't be corrected. If this situation is |
| 650 |
|
|
unacceptable, you (or the submitter) may want to require a decision of the |
| 651 |
|
|
technical committee by reassigning the bug to <systemitem |
| 652 |
|
|
role="package">tech-ctte</systemitem> (you may use the clone command of the BTS |
| 653 |
|
|
if you wish to keep it reported against your package). Before doing so, please |
| 654 |
debacle |
4911 |
read the <ulink url="&url-tech-ctte;">recommended |
| 655 |
debacle |
4902 |
procedure</ulink>. |
| 656 |
|
|
</para> |
| 657 |
|
|
</listitem> |
| 658 |
|
|
<listitem> |
| 659 |
|
|
<para> |
| 660 |
|
|
If the bug is real but it's caused by another package, just reassign the bug to |
| 661 |
|
|
the right package. If you don't know which package it should be reassigned to, |
| 662 |
|
|
you should ask for help on <link linkend="irc-channels">IRC</link> or |
| 663 |
debacle |
4911 |
on &email-debian-devel;. Please make sure that the |
| 664 |
debacle |
4902 |
maintainer(s) of the package the bug is reassigned to know why you reassigned |
| 665 |
|
|
it. |
| 666 |
|
|
</para> |
| 667 |
|
|
<para> |
| 668 |
|
|
Sometimes you also have to adjust the severity of the bug so that it matches |
| 669 |
|
|
our definition of the severity. That's because people tend to inflate the |
| 670 |
|
|
severity of bugs to make sure their bugs are fixed quickly. Some bugs may even |
| 671 |
|
|
be dropped to wishlist severity when the requested change is just cosmetic. |
| 672 |
|
|
</para> |
| 673 |
|
|
</listitem> |
| 674 |
|
|
<listitem> |
| 675 |
|
|
<para> |
| 676 |
|
|
If the bug is real but the same problem has already been reported by someone |
| 677 |
|
|
else, then the two relevant bug reports should be merged into one using the |
| 678 |
|
|
merge command of the BTS. In this way, when the bug is fixed, all of the |
| 679 |
|
|
submitters will be informed of this. (Note, however, that emails sent to one |
| 680 |
|
|
bug report's submitter won't automatically be sent to the other report's |
| 681 |
|
|
submitter.) For more details on the technicalities of the merge command and its |
| 682 |
|
|
relative, the unmerge command, see the BTS control server documentation. |
| 683 |
|
|
</para> |
| 684 |
|
|
</listitem> |
| 685 |
|
|
<listitem> |
| 686 |
|
|
<para> |
| 687 |
|
|
The bug submitter may have forgotten to provide some information, in which case |
| 688 |
|
|
you have to ask them for the required information. You may use the |
| 689 |
|
|
<literal>moreinfo</literal> tag to mark the bug as such. Moreover if you can't |
| 690 |
|
|
reproduce the bug, you tag it <literal>unreproducible</literal>. Anyone who |
| 691 |
|
|
can reproduce the bug is then invited to provide more information on how to |
| 692 |
|
|
reproduce it. After a few months, if this information has not been sent by |
| 693 |
|
|
someone, the bug may be closed. |
| 694 |
|
|
</para> |
| 695 |
|
|
</listitem> |
| 696 |
|
|
<listitem> |
| 697 |
|
|
<para> |
| 698 |
|
|
If the bug is related to the packaging, you just fix it. If you are not able |
| 699 |
|
|
to fix it yourself, then tag the bug as <literal>help</literal>. You can also |
| 700 |
debacle |
4911 |
ask for help on &email-debian-devel; or |
| 701 |
|
|
&email-debian-qa;. If it's an upstream problem, you have to |
| 702 |
|
|
forward it to the upstream author. Forwarding a bug is not enough, you have to |
| 703 |
|
|
check at each release if the bug has been fixed or not. If it has, you just |
| 704 |
|
|
close it, otherwise you have to remind the author about it. If you have the |
| 705 |
|
|
required skills you can prepare a patch that fixes the bug and send it to the |
| 706 |
|
|
author at the same time. Make sure to send the patch to the BTS and to tag the |
| 707 |
|
|
bug as <literal>patch</literal>. |
| 708 |
debacle |
4902 |
</para> |
| 709 |
|
|
</listitem> |
| 710 |
|
|
<listitem> |
| 711 |
|
|
<para> |
| 712 |
|
|
If you have fixed a bug in your local copy, or if a fix has been committed to |
| 713 |
|
|
the CVS repository, you may tag the bug as <literal>pending</literal> to let |
| 714 |
|
|
people know that the bug is corrected and that it will be closed with the next |
| 715 |
|
|
upload (add the <literal>closes:</literal> in the |
| 716 |
|
|
<filename>changelog</filename>). This is particularly useful if you are |
| 717 |
|
|
several developers working on the same package. |
| 718 |
|
|
</para> |
| 719 |
|
|
</listitem> |
| 720 |
|
|
<listitem> |
| 721 |
|
|
<para> |
| 722 |
|
|
Once a corrected package is available in the <emphasis>unstable</emphasis> |
| 723 |
|
|
distribution, you can close the bug. This can be done automatically, read |
| 724 |
|
|
<xref linkend="upload-bugfix"/> . |
| 725 |
|
|
</para> |
| 726 |
|
|
</listitem> |
| 727 |
|
|
</orderedlist> |
| 728 |
|
|
</section> |
| 729 |
|
|
|
| 730 |
|
|
<section id="upload-bugfix"> |
| 731 |
|
|
<title>When bugs are closed by new uploads</title> |
| 732 |
|
|
<para> |
| 733 |
|
|
As bugs and problems are fixed in your packages, it is your responsibility as |
| 734 |
|
|
the package maintainer to close these bugs. However, you should not close a |
| 735 |
|
|
bug until the package which fixes the bug has been accepted into the Debian |
| 736 |
|
|
archive. Therefore, once you get notification that your updated package has |
| 737 |
|
|
been installed into the archive, you can and should close the bug in the BTS. |
| 738 |
|
|
Also, the bug should be closed with the correct version. |
| 739 |
|
|
</para> |
| 740 |
|
|
<para> |
| 741 |
|
|
However, it's possible to avoid having to manually close bugs after the upload |
| 742 |
|
|
— just list the fixed bugs in your <filename>debian/changelog</filename> |
| 743 |
|
|
file, following a certain syntax, and the archive maintenance software will |
| 744 |
|
|
close the bugs for you. For example: |
| 745 |
|
|
</para> |
| 746 |
|
|
<screen> |
| 747 |
debacle |
4910 |
acme-cannon (3.1415) unstable; urgency=low |
| 748 |
debacle |
4902 |
|
| 749 |
|
|
* Frobbed with options (closes: Bug#98339) |
| 750 |
|
|
* Added safety to prevent operator dismemberment, closes: bug#98765, |
| 751 |
|
|
bug#98713, #98714. |
| 752 |
|
|
* Added man page. Closes: #98725. |
| 753 |
|
|
</screen> |
| 754 |
|
|
<para> |
| 755 |
|
|
Technically speaking, the following Perl regular expression describes how bug |
| 756 |
|
|
closing changelogs are identified: |
| 757 |
|
|
</para> |
| 758 |
|
|
<screen> |
| 759 |
|
|
/closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*/ig |
| 760 |
|
|
</screen> |
| 761 |
|
|
<para> |
| 762 |
|
|
We prefer the <literal>closes: #<replaceable>XXX</replaceable></literal> |
| 763 |
|
|
syntax, as it is the most concise entry and the easiest to integrate with the |
| 764 |
|
|
text of the <filename>changelog</filename>. Unless specified different by the |
| 765 |
|
|
<replaceable>-v</replaceable>-switch to <command>dpkg-buildpackage</command>, |
| 766 |
|
|
only the bugs closed in the most recent changelog entry are closed (basically, |
| 767 |
|
|
exactly the bugs mentioned in the changelog-part in the |
| 768 |
|
|
<filename>.changes</filename> file are closed). |
| 769 |
|
|
</para> |
| 770 |
|
|
<para> |
| 771 |
|
|
Historically, uploads identified as <link linkend="nmu">Non-maintainer |
| 772 |
|
|
upload (NMU)</link> were tagged <literal>fixed</literal> instead of being |
| 773 |
|
|
closed, but that practice was ceased with the advent of version-tracking. The |
| 774 |
|
|
same applied to the tag <literal>fixed-in-experimental</literal>. |
| 775 |
|
|
</para> |
| 776 |
|
|
<para> |
| 777 |
|
|
If you happen to mistype a bug number or forget a bug in the changelog entries, |
| 778 |
|
|
don't hesitate to undo any damage the error caused. To reopen wrongly closed |
| 779 |
|
|
bugs, send a <literal>reopen <replaceable>XXX</replaceable></literal> command |
| 780 |
|
|
to the bug tracking system's control address, |
| 781 |
debacle |
4911 |
&email-bts-control;. To close any remaining bugs that were |
| 782 |
debacle |
4902 |
fixed by your upload, email the <filename>.changes</filename> file to |
| 783 |
debacle |
4910 |
<email>XXX-done@&bugs-host;</email>, where <replaceable>XXX</replaceable> |
| 784 |
debacle |
4902 |
is the bug number, and put Version: YYY and an empty line as the first two |
| 785 |
|
|
lines of the body of the email, where <replaceable>YYY</replaceable> is the |
| 786 |
|
|
first version where the bug has been fixed. |
| 787 |
|
|
</para> |
| 788 |
|
|
<para> |
| 789 |
|
|
Bear in mind that it is not obligatory to close bugs using the changelog as |
| 790 |
|
|
described above. If you simply want to close bugs that don't have anything to |
| 791 |
|
|
do with an upload you made, do it by emailing an explanation to |
| 792 |
debacle |
4910 |
<email>XXX-done@&bugs-host;</email>. Do <emphasis |
| 793 |
debacle |
4902 |
role="strong">not</emphasis> close bugs in the changelog entry of a version if |
| 794 |
|
|
the changes in that version of the package don't have any bearing on the bug. |
| 795 |
|
|
</para> |
| 796 |
|
|
<para> |
| 797 |
|
|
For general information on how to write your changelog entries, see <xref |
| 798 |
|
|
linkend="bpp-debian-changelog"/> . |
| 799 |
|
|
</para> |
| 800 |
|
|
</section> |
| 801 |
|
|
|
| 802 |
|
|
<section id="bug-security"> |
| 803 |
|
|
<title>Handling security-related bugs</title> |
| 804 |
|
|
<para> |
| 805 |
|
|
Due to their sensitive nature, security-related bugs must be handled carefully. |
| 806 |
|
|
The Debian Security Team exists to coordinate this activity, keeping track of |
| 807 |
|
|
outstanding security problems, helping maintainers with security problems or |
| 808 |
|
|
fixing them themselves, sending security advisories, and maintaining |
| 809 |
|
|
security.debian.org. |
| 810 |
|
|
</para> |
| 811 |
debacle |
4906 |
<!-- information about the security database goes here once it's ready --> |
| 812 |
|
|
<!-- (mdz) --> |
| 813 |
debacle |
4902 |
<para> |
| 814 |
|
|
When you become aware of a security-related bug in a Debian package, whether or |
| 815 |
|
|
not you are the maintainer, collect pertinent information about the problem, |
| 816 |
|
|
and promptly contact the security team at |
| 817 |
debacle |
4911 |
&email-security-team; as soon as possible. <emphasis |
| 818 |
debacle |
4902 |
role="strong">DO NOT UPLOAD</emphasis> any packages for stable; the security |
| 819 |
|
|
team will do that. Useful information includes, for example: |
| 820 |
|
|
</para> |
| 821 |
|
|
<itemizedlist> |
| 822 |
|
|
<listitem> |
| 823 |
|
|
<para> |
| 824 |
|
|
Which versions of the package are known to be affected by the bug. Check each |
| 825 |
|
|
version that is present in a supported Debian release, as well as testing and |
| 826 |
|
|
unstable. |
| 827 |
|
|
</para> |
| 828 |
|
|
</listitem> |
| 829 |
|
|
<listitem> |
| 830 |
|
|
<para> |
| 831 |
|
|
The nature of the fix, if any is available (patches are especially helpful) |
| 832 |
|
|
</para> |
| 833 |
|
|
</listitem> |
| 834 |
|
|
<listitem> |
| 835 |
|
|
<para> |
| 836 |
|
|
Any fixed packages that you have prepared yourself (send only the |
| 837 |
|
|
<literal>.diff.gz</literal> and <literal>.dsc</literal> files and read <xref |
| 838 |
|
|
linkend="bug-security-building"/> first) |
| 839 |
|
|
</para> |
| 840 |
|
|
</listitem> |
| 841 |
|
|
<listitem> |
| 842 |
|
|
<para> |
| 843 |
|
|
Any assistance you can provide to help with testing (exploits, regression |
| 844 |
|
|
testing, etc.) |
| 845 |
|
|
</para> |
| 846 |
|
|
</listitem> |
| 847 |
|
|
<listitem> |
| 848 |
|
|
<para> |
| 849 |
|
|
Any information needed for the advisory (see <xref |
| 850 |
|
|
linkend="bug-security-advisories"/> ) |
| 851 |
|
|
</para> |
| 852 |
|
|
</listitem> |
| 853 |
|
|
</itemizedlist> |
| 854 |
|
|
<section id="bug-security-confidentiality"> |
| 855 |
|
|
<title>Confidentiality</title> |
| 856 |
|
|
<para> |
| 857 |
|
|
Unlike most other activities within Debian, information about security issues |
| 858 |
|
|
must sometimes be kept private for a time. This allows software distributors |
| 859 |
|
|
to coordinate their disclosure in order to minimize their users' exposure. |
| 860 |
|
|
Whether this is the case depends on the nature of the problem and corresponding |
| 861 |
|
|
fix, and whether it is already a matter of public knowledge. |
| 862 |
|
|
</para> |
| 863 |
|
|
<para> |
| 864 |
|
|
There are several ways developers can learn of a security problem: |
| 865 |
|
|
</para> |
| 866 |
|
|
<itemizedlist> |
| 867 |
|
|
<listitem> |
| 868 |
|
|
<para> |
| 869 |
|
|
they notice it on a public forum (mailing list, web site, etc.) |
| 870 |
|
|
</para> |
| 871 |
|
|
</listitem> |
| 872 |
|
|
<listitem> |
| 873 |
|
|
<para> |
| 874 |
|
|
someone files a bug report |
| 875 |
|
|
</para> |
| 876 |
|
|
</listitem> |
| 877 |
|
|
<listitem> |
| 878 |
|
|
<para> |
| 879 |
|
|
someone informs them via private email |
| 880 |
|
|
</para> |
| 881 |
|
|
</listitem> |
| 882 |
|
|
</itemizedlist> |
| 883 |
|
|
<para> |
| 884 |
|
|
In the first two cases, the information is public and it is important to have a |
| 885 |
|
|
fix as soon as possible. In the last case, however, it might not be public |
| 886 |
|
|
information. In that case there are a few possible options for dealing with |
| 887 |
|
|
the problem: |
| 888 |
|
|
</para> |
| 889 |
|
|
<itemizedlist> |
| 890 |
|
|
<listitem> |
| 891 |
|
|
<para> |
| 892 |
|
|
If the security exposure is minor, there is sometimes no need to keep the |
| 893 |
|
|
problem a secret and a fix should be made and released. |
| 894 |
|
|
</para> |
| 895 |
|
|
</listitem> |
| 896 |
|
|
<listitem> |
| 897 |
|
|
<para> |
| 898 |
|
|
If the problem is severe, it is preferable to share the information with other |
| 899 |
|
|
vendors and coordinate a release. The security team keeps in contact with the |
| 900 |
|
|
various organizations and individuals and can take care of that. |
| 901 |
|
|
</para> |
| 902 |
|
|
</listitem> |
| 903 |
|
|
</itemizedlist> |
| 904 |
|
|
<para> |
| 905 |
|
|
In all cases if the person who reports the problem asks that it not be |
| 906 |
|
|
disclosed, such requests should be honored, with the obvious exception of |
| 907 |
|
|
informing the security team in order that a fix may be produced for a stable |
| 908 |
|
|
release of Debian. When sending confidential information to the security team, |
| 909 |
|
|
be sure to mention this fact. |
| 910 |
|
|
</para> |
| 911 |
|
|
<para> |
| 912 |
|
|
Please note that if secrecy is needed you may not upload a fix to unstable (or |
| 913 |
|
|
anywhere else, such as a public CVS repository). It is not sufficient to |
| 914 |
|
|
obfuscate the details of the change, as the code itself is public, and can (and |
| 915 |
|
|
will) be examined by the general public. |
| 916 |
|
|
</para> |
| 917 |
|
|
<para> |
| 918 |
|
|
There are two reasons for releasing information even though secrecy is |
| 919 |
|
|
requested: the problem has been known for a while, or the problem or exploit |
| 920 |
|
|
has become public. |
| 921 |
|
|
</para> |
| 922 |
|
|
</section> |
| 923 |
|
|
|
| 924 |
|
|
<section id="bug-security-advisories"> |
| 925 |
|
|
<title>Security Advisories</title> |
| 926 |
|
|
<para> |
| 927 |
|
|
Security advisories are only issued for the current, released stable |
| 928 |
|
|
distribution, and <emphasis>not</emphasis> for testing or unstable. When |
| 929 |
|
|
released, advisories are sent to the |
| 930 |
debacle |
4911 |
&email-debian-security-announce; mailing list and posted on |
| 931 |
|
|
<ulink url="&url-debian-security-advisories;">the security web |
| 932 |
debacle |
4902 |
page</ulink>. Security advisories are written and posted by the security team. |
| 933 |
|
|
However they certainly do not mind if a maintainer can supply some of the |
| 934 |
|
|
information for them, or write part of the text. Information that should be in |
| 935 |
|
|
an advisory includes: |
| 936 |
|
|
</para> |
| 937 |
|
|
<itemizedlist> |
| 938 |
|
|
<listitem> |
| 939 |
|
|
<para> |
| 940 |
|
|
A description of the problem and its scope, including: |
| 941 |
|
|
</para> |
| 942 |
|
|
<itemizedlist> |
| 943 |
|
|
<listitem> |
| 944 |
|
|
<para> |
| 945 |
|
|
The type of problem (privilege escalation, denial of service, etc.) |
| 946 |
|
|
</para> |
| 947 |
|
|
</listitem> |
| 948 |
|
|
<listitem> |
| 949 |
|
|
<para> |
| 950 |
|
|
What privileges may be gained, and by whom (if any) |
| 951 |
|
|
</para> |
| 952 |
|
|
</listitem> |
| 953 |
|
|
<listitem> |
| 954 |
|
|
<para> |
| 955 |
|
|
How it can be exploited |
| 956 |
|
|
</para> |
| 957 |
|
|
</listitem> |
| 958 |
|
|
<listitem> |
| 959 |
|
|
<para> |
| 960 |
|
|
Whether it is remotely or locally exploitable |
| 961 |
|
|
</para> |
| 962 |
|
|
</listitem> |
| 963 |
|
|
<listitem> |
| 964 |
|
|
<para> |
| 965 |
|
|
How the problem was fixed |
| 966 |
|
|
</para> |
| 967 |
|
|
</listitem> |
| 968 |
|
|
</itemizedlist> |
| 969 |
|
|
<para> |
| 970 |
|
|
This information allows users to assess the threat to their systems. |
| 971 |
|
|
</para> |
| 972 |
|
|
</listitem> |
| 973 |
|
|
<listitem> |
| 974 |
|
|
<para> |
| 975 |
|
|
Version numbers of affected packages |
| 976 |
|
|
</para> |
| 977 |
|
|
</listitem> |
| 978 |
|
|
<listitem> |
| 979 |
|
|
<para> |
| 980 |
|
|
Version numbers of fixed packages |
| 981 |
|
|
</para> |
| 982 |
|
|
</listitem> |
| 983 |
|
|
<listitem> |
| 984 |
|
|
<para> |
| 985 |
|
|
Information on where to obtain the updated packages (usually from the Debian |
| 986 |
|
|
security archive) |
| 987 |
|
|
</para> |
| 988 |
|
|
</listitem> |
| 989 |
|
|
<listitem> |
| 990 |
|
|
<para> |
| 991 |
|
|
References to upstream advisories, <ulink |
| 992 |
|
|
url="http://cve.mitre.org">CVE</ulink> identifiers, and any other information |
| 993 |
|
|
useful in cross-referencing the vulnerability |
| 994 |
|
|
</para> |
| 995 |
|
|
</listitem> |
| 996 |
|
|
</itemizedlist> |
| 997 |
|
|
</section> |
| 998 |
|
|
|
| 999 |
|
|
<section id="bug-security-building"> |
| 1000 |
|
|
<title>Preparing packages to address security issues</title> |
| 1001 |
|
|
<para> |
| 1002 |
|
|
One way that you can assist the security team in their duties is to provide |
| 1003 |
|
|
them with fixed packages suitable for a security advisory for the stable Debian |
| 1004 |
|
|
release. |
| 1005 |
|
|
</para> |
| 1006 |
|
|
<para> |
| 1007 |
|
|
When an update is made to the stable release, care must be taken to avoid |
| 1008 |
|
|
changing system behavior or introducing new bugs. In order to do this, make as |
| 1009 |
|
|
few changes as possible to fix the bug. Users and administrators rely on the |
| 1010 |
|
|
exact behavior of a release once it is made, so any change that is made might |
| 1011 |
|
|
break someone's system. This is especially true of libraries: make sure you |
| 1012 |
|
|
never change the API or ABI, no matter how small the change. |
| 1013 |
|
|
</para> |
| 1014 |
|
|
<para> |
| 1015 |
|
|
This means that moving to a new upstream version is not a good solution. |
| 1016 |
|
|
Instead, the relevant changes should be back-ported to the version present in |
| 1017 |
|
|
the current stable Debian release. Generally, upstream maintainers are willing |
| 1018 |
|
|
to help if needed. If not, the Debian security team may be able to help. |
| 1019 |
|
|
</para> |
| 1020 |
|
|
<para> |
| 1021 |
|
|
In some cases, it is not possible to back-port a security fix, for example when |
| 1022 |
|
|
large amounts of source code need to be modified or rewritten. If this |
| 1023 |
|
|
happens, it may be necessary to move to a new upstream version. However, this |
| 1024 |
|
|
is only done in extreme situations, and you must always coordinate that with |
| 1025 |
|
|
the security team beforehand. |
| 1026 |
|
|
</para> |
| 1027 |
|
|
<para> |
| 1028 |
|
|
Related to this is another important guideline: always test your changes. If |
| 1029 |
|
|
you have an exploit available, try it and see if it indeed succeeds on the |
| 1030 |
|
|
unpatched package and fails on the fixed package. Test other, normal actions |
| 1031 |
|
|
as well, as sometimes a security fix can break seemingly unrelated features in |
| 1032 |
|
|
subtle ways. |
| 1033 |
|
|
</para> |
| 1034 |
|
|
<para> |
| 1035 |
|
|
Do <emphasis role="strong">NOT</emphasis> include any changes in your package |
| 1036 |
|
|
which are not directly related to fixing the vulnerability. These will only |
| 1037 |
|
|
need to be reverted, and this wastes time. If there are other bugs in your |
| 1038 |
|
|
package that you would like to fix, make an upload to proposed-updates in the |
| 1039 |
|
|
usual way, after the security advisory is issued. The security update |
| 1040 |
|
|
mechanism is not a means for introducing changes to your package which would |
| 1041 |
|
|
otherwise be rejected from the stable release, so please do not attempt to do |
| 1042 |
|
|
this. |
| 1043 |
|
|
</para> |
| 1044 |
|
|
<para> |
| 1045 |
|
|
Review and test your changes as much as possible. Check the differences from |
| 1046 |
|
|
the previous version repeatedly (<command>interdiff</command> from the |
| 1047 |
|
|
<systemitem role="package">patchutils</systemitem> package and |
| 1048 |
|
|
<command>debdiff</command> from <systemitem |
| 1049 |
|
|
role="package">devscripts</systemitem> are useful tools for this, see <xref |
| 1050 |
|
|
linkend="debdiff"/> ). |
| 1051 |
|
|
</para> |
| 1052 |
|
|
<para> |
| 1053 |
|
|
Be sure to verify the following items: |
| 1054 |
|
|
</para> |
| 1055 |
|
|
<itemizedlist> |
| 1056 |
|
|
<listitem> |
| 1057 |
|
|
<para> |
| 1058 |
|
|
Target the right distribution in your <filename>debian/changelog</filename>. |
| 1059 |
|
|
For stable this is <literal>stable-security</literal> and for testing this is |
| 1060 |
|
|
<literal>testing-security</literal>, and for the previous stable release, this |
| 1061 |
|
|
is <literal>oldstable-security</literal>. Do not target |
| 1062 |
|
|
<replaceable>distribution</replaceable>-proposed-updates or |
| 1063 |
|
|
<literal>stable</literal>! |
| 1064 |
|
|
</para> |
| 1065 |
|
|
</listitem> |
| 1066 |
|
|
<listitem> |
| 1067 |
|
|
<para> |
| 1068 |
|
|
The upload should have urgency=high. |
| 1069 |
|
|
</para> |
| 1070 |
|
|
</listitem> |
| 1071 |
|
|
<listitem> |
| 1072 |
|
|
<para> |
| 1073 |
|
|
Make descriptive, meaningful changelog entries. Others will rely on them to |
| 1074 |
|
|
determine whether a particular bug was fixed. Always include an external |
| 1075 |
|
|
reference, preferably a CVE identifier, so that it can be cross-referenced. |
| 1076 |
|
|
Include the same information in the changelog for unstable, so that it is clear |
| 1077 |
|
|
that the same bug was fixed, as this is very helpful when verifying that the |
| 1078 |
|
|
bug is fixed in the next stable release. If a CVE identifier has not yet been |
| 1079 |
|
|
assigned, the security team will request one so that it can be included in the |
| 1080 |
|
|
package and in the advisory. |
| 1081 |
|
|
</para> |
| 1082 |
|
|
</listitem> |
| 1083 |
|
|
<listitem> |
| 1084 |
|
|
<para> |
| 1085 |
|
|
Make sure the version number is proper. It must be greater than the current |
| 1086 |
|
|
package, but less than package versions in later distributions. If in doubt, |
| 1087 |
|
|
test it with <literal>dpkg --compare-versions</literal>. Be careful not to |
| 1088 |
|
|
re-use a version number that you have already used for a previous upload. For |
| 1089 |
|
|
<emphasis>testing</emphasis>, there must be a higher version in |
| 1090 |
|
|
<emphasis>unstable</emphasis>. If there is none yet (for example, if |
| 1091 |
|
|
<emphasis>testing</emphasis> and <emphasis>unstable</emphasis> have the same |
| 1092 |
|
|
version) you must upload a new version to unstable first. |
| 1093 |
|
|
</para> |
| 1094 |
|
|
</listitem> |
| 1095 |
|
|
<listitem> |
| 1096 |
|
|
<para> |
| 1097 |
|
|
Do not make source-only uploads if your package has any binary-all packages (do |
| 1098 |
|
|
not use the <literal>-S</literal> option to |
| 1099 |
|
|
<command>dpkg-buildpackage</command>). The <command>buildd</command> |
| 1100 |
|
|
infrastructure will not build those. This point applies to normal package |
| 1101 |
|
|
uploads as well. |
| 1102 |
|
|
</para> |
| 1103 |
|
|
</listitem> |
| 1104 |
|
|
<listitem> |
| 1105 |
|
|
<para> |
| 1106 |
|
|
Unless the upstream source has been uploaded to security.debian.org before (by |
| 1107 |
|
|
a previous security update), build the upload with full upstream source |
| 1108 |
|
|
(<literal>dpkg-buildpackage -sa</literal>). If there has been a previous |
| 1109 |
|
|
upload to security.debian.org with the same upstream version, you may upload |
| 1110 |
|
|
without upstream source (<literal>dpkg-buildpackage -sd</literal>). |
| 1111 |
|
|
</para> |
| 1112 |
|
|
</listitem> |
| 1113 |
|
|
<listitem> |
| 1114 |
|
|
<para> |
| 1115 |
|
|
Be sure to use the exact same <filename>*.orig.tar.gz</filename> as used in the |
| 1116 |
|
|
normal archive, otherwise it is not possible to move the security fix into the |
| 1117 |
|
|
main archives later. |
| 1118 |
|
|
</para> |
| 1119 |
|
|
</listitem> |
| 1120 |
|
|
<listitem> |
| 1121 |
|
|
<para> |
| 1122 |
|
|
Build the package on a clean system which only has packages installed from the |
| 1123 |
|
|
distribution you are building for. If you do not have such a system yourself, |
| 1124 |
|
|
you can use a debian.org machine (see <xref linkend="server-machines"/> ) or |
| 1125 |
|
|
setup a chroot (see <xref linkend="pbuilder"/> and <xref |
| 1126 |
|
|
linkend="debootstrap"/> ). |
| 1127 |
|
|
</para> |
| 1128 |
|
|
</listitem> |
| 1129 |
|
|
</itemizedlist> |
| 1130 |
|
|
</section> |
| 1131 |
|
|
|
| 1132 |
|
|
<section id="bug-security-upload"> |
| 1133 |
|
|
<title>Uploading the fixed package</title> |
| 1134 |
|
|
<para> |
| 1135 |
|
|
Do <emphasis role="strong">NOT</emphasis> upload a package to the security |
| 1136 |
|
|
upload queue (oldstable-security, stable-security, etc.) without prior |
| 1137 |
|
|
authorization from the security team. If the package does not exactly meet the |
| 1138 |
|
|
team's requirements, it will cause many problems and delays in dealing with the |
| 1139 |
|
|
unwanted upload. |
| 1140 |
|
|
</para> |
| 1141 |
|
|
<para> |
| 1142 |
|
|
Do <emphasis role="strong">NOT</emphasis> upload your fix to proposed-updates |
| 1143 |
|
|
without coordinating with the security team. Packages from security.debian.org |
| 1144 |
|
|
will be copied into the proposed-updates directory automatically. If a package |
| 1145 |
|
|
with the same or a higher version number is already installed into the archive, |
| 1146 |
|
|
the security update will be rejected by the archive system. That way, the |
| 1147 |
|
|
stable distribution will end up without a security update for this package |
| 1148 |
|
|
instead. |
| 1149 |
|
|
</para> |
| 1150 |
|
|
<para> |
| 1151 |
|
|
Once you have created and tested the new package and it has been approved by |
| 1152 |
|
|
the security team, it needs to be uploaded so that it can be installed in the |
| 1153 |
|
|
archives. For security uploads, the place to upload to is |
| 1154 |
|
|
<literal>ftp://security-master.debian.org/pub/SecurityUploadQueue/</literal> . |
| 1155 |
|
|
</para> |
| 1156 |
|
|
<para> |
| 1157 |
|
|
Once an upload to the security queue has been accepted, the package will |
| 1158 |
|
|
automatically be rebuilt for all architectures and stored for verification by |
| 1159 |
|
|
the security team. |
| 1160 |
|
|
</para> |
| 1161 |
|
|
<para> |
| 1162 |
|
|
Uploads which are waiting for acceptance or verification are only accessible by |
| 1163 |
|
|
the security team. This is necessary since there might be fixes for security |
| 1164 |
|
|
problems that cannot be disclosed yet. |
| 1165 |
|
|
</para> |
| 1166 |
|
|
<para> |
| 1167 |
|
|
If a member of the security team accepts a package, it will be installed on |
| 1168 |
|
|
security.debian.org as well as proposed for the proper |
| 1169 |
|
|
<replaceable>distribution</replaceable>-proposed-updates on ftp-master. |
| 1170 |
|
|
</para> |
| 1171 |
|
|
</section> |
| 1172 |
|
|
|
| 1173 |
|
|
</section> |
| 1174 |
|
|
|
| 1175 |
|
|
</section> |
| 1176 |
|
|
|
| 1177 |
|
|
<section id="archive-manip"> |
| 1178 |
|
|
<title>Moving, removing, renaming, adopting, and orphaning packages</title> |
| 1179 |
|
|
<para> |
| 1180 |
|
|
Some archive manipulation operations are not automated in the Debian upload |
| 1181 |
|
|
process. These procedures should be manually followed by maintainers. This |
| 1182 |
|
|
chapter gives guidelines on what to do in these cases. |
| 1183 |
|
|
</para> |
| 1184 |
|
|
<section id="moving-pkgs"> |
| 1185 |
|
|
<title>Moving packages</title> |
| 1186 |
|
|
<para> |
| 1187 |
|
|
Sometimes a package will change its section. For instance, a package from the |
| 1188 |
|
|
`non-free' section might be GPL'd in a later version, in which case the package |
| 1189 |
|
|
should be moved to `main' or `contrib'.<footnote><para> See the <ulink |
| 1190 |
debacle |
4910 |
url="&url-debian-policy;">Debian Policy Manual</ulink> for |
| 1191 |
debacle |
4902 |
guidelines on what section a package belongs in. </para> </footnote> |
| 1192 |
|
|
</para> |
| 1193 |
|
|
<para> |
| 1194 |
|
|
If you need to change the section for one of your packages, change the package |
| 1195 |
|
|
control information to place the package in the desired section, and re-upload |
| 1196 |
|
|
the package (see the <ulink |
| 1197 |
debacle |
4910 |
url="&url-debian-policy;">Debian Policy Manual</ulink> for |
| 1198 |
debacle |
4902 |
details). You must ensure that you include the |
| 1199 |
|
|
<filename>.orig.tar.gz</filename> in your upload (even if you are not uploading |
| 1200 |
|
|
a new upstream version), or it will not appear in the new section together with |
| 1201 |
|
|
the rest of the package. If your new section is valid, it will be moved |
| 1202 |
|
|
automatically. If it does not, then contact the ftpmasters in order to |
| 1203 |
|
|
understand what happened. |
| 1204 |
|
|
</para> |
| 1205 |
|
|
<para> |
| 1206 |
|
|
If, on the other hand, you need to change the <emphasis>subsection</emphasis> |
| 1207 |
|
|
of one of your packages (e.g., ``devel'', ``admin''), the procedure is slightly |
| 1208 |
|
|
different. Correct the subsection as found in the control file of the package, |
| 1209 |
|
|
and re-upload that. Also, you'll need to get the override file updated, as |
| 1210 |
|
|
described in <xref linkend="override-file"/> . |
| 1211 |
|
|
</para> |
| 1212 |
|
|
</section> |
| 1213 |
|
|
|
| 1214 |
|
|
<section id="removing-pkgs"> |
| 1215 |
|
|
<title>Removing packages</title> |
| 1216 |
|
|
<para> |
| 1217 |
|
|
If for some reason you want to completely remove a package (say, if it is an |
| 1218 |
|
|
old compatibility library which is no longer required), you need to file a bug |
| 1219 |
debacle |
4911 |
against <literal>ftp.debian.org</literal> asking that the package be removed; |
| 1220 |
debacle |
4902 |
as all bugs, this bug should normally have normal severity. Make sure you |
| 1221 |
|
|
indicate which distribution the package should be removed from. Normally, you |
| 1222 |
|
|
can only have packages removed from <emphasis>unstable</emphasis> and |
| 1223 |
|
|
<emphasis>experimental</emphasis>. Packages are not removed from |
| 1224 |
|
|
<emphasis>testing</emphasis> directly. Rather, they will be removed |
| 1225 |
|
|
automatically after the package has been removed from |
| 1226 |
|
|
<emphasis>unstable</emphasis> and no package in <emphasis>testing</emphasis> |
| 1227 |
|
|
depends on it. |
| 1228 |
|
|
</para> |
| 1229 |
|
|
<para> |
| 1230 |
|
|
There is one exception when an explicit removal request is not necessary: If a |
| 1231 |
|
|
(source or binary) package is an orphan, it will be removed semi-automatically. |
| 1232 |
|
|
For a binary-package, this means if there is no longer any source package |
| 1233 |
|
|
producing this binary package; if the binary package is just no longer produced |
| 1234 |
|
|
on some architectures, a removal request is still necessary. For a |
| 1235 |
|
|
source-package, this means that all binary packages it refers to have been |
| 1236 |
|
|
taken over by another source package. |
| 1237 |
|
|
</para> |
| 1238 |
|
|
<para> |
| 1239 |
|
|
In your removal request, you have to detail the reasons justifying the request. |
| 1240 |
|
|
This is to avoid unwanted removals and to keep a trace of why a package has |
| 1241 |
|
|
been removed. For example, you can provide the name of the package that |
| 1242 |
|
|
supersedes the one to be removed. |
| 1243 |
|
|
</para> |
| 1244 |
|
|
<para> |
| 1245 |
|
|
Usually you only ask for the removal of a package maintained by yourself. If |
| 1246 |
|
|
you want to remove another package, you have to get the approval of its |
| 1247 |
|
|
maintainer. |
| 1248 |
|
|
</para> |
| 1249 |
|
|
<para> |
| 1250 |
|
|
Further information relating to these and other package removal related topics |
| 1251 |
|
|
may be found at <ulink url="http://wiki.debian.org/ftpmaster_Removals"></ulink> |
| 1252 |
debacle |
4910 |
and <ulink url="&url-debian-qa;howto-remove.html"></ulink>. |
| 1253 |
debacle |
4902 |
</para> |
| 1254 |
|
|
<para> |
| 1255 |
|
|
If in doubt concerning whether a package is disposable, email |
| 1256 |
debacle |
4911 |
&email-debian-devel; asking for opinions. Also of interest is |
| 1257 |
|
|
the <command>apt-cache</command> program from the <systemitem |
| 1258 |
debacle |
4902 |
role="package">apt</systemitem> package. When invoked as <literal>apt-cache |
| 1259 |
|
|
showpkg <replaceable>package</replaceable></literal>, the program will show |
| 1260 |
|
|
details for <replaceable>package</replaceable>, including reverse depends. |
| 1261 |
|
|
Other useful programs include <literal>apt-cache rdepends</literal>, |
| 1262 |
|
|
<command>apt-rdepends</command> and <command>grep-dctrl</command>. Removal of |
| 1263 |
debacle |
4911 |
orphaned packages is discussed on &email-debian-qa;. |
| 1264 |
debacle |
4902 |
</para> |
| 1265 |
|
|
<para> |
| 1266 |
|
|
Once the package has been removed, the package's bugs should be handled. They |
| 1267 |
|
|
should either be reassigned to another package in the case where the actual |
| 1268 |
|
|
code has evolved into another package (e.g. <literal>libfoo12</literal> was |
| 1269 |
|
|
removed because <literal>libfoo13</literal> supersedes it) or closed if the |
| 1270 |
|
|
software is simply no longer part of Debian. |
| 1271 |
|
|
</para> |
| 1272 |
|
|
<section id="s5.9.2.1"> |
| 1273 |
|
|
<title>Removing packages from <filename>Incoming</filename></title> |
| 1274 |
|
|
<para> |
| 1275 |
|
|
In the past, it was possible to remove packages from |
| 1276 |
|
|
<filename>incoming</filename>. However, with the introduction of the new |
| 1277 |
|
|
incoming system, this is no longer possible. Instead, you have to upload a new |
| 1278 |
|
|
revision of your package with a higher version than the package you want to |
| 1279 |
|
|
replace. Both versions will be installed in the archive but only the higher |
| 1280 |
|
|
version will actually be available in <emphasis>unstable</emphasis> since the |
| 1281 |
|
|
previous version will immediately be replaced by the higher. However, if you |
| 1282 |
|
|
do proper testing of your packages, the need to replace a package should not |
| 1283 |
|
|
occur too often anyway. |
| 1284 |
|
|
</para> |
| 1285 |
|
|
</section> |
| 1286 |
|
|
|
| 1287 |
|
|
</section> |
| 1288 |
|
|
|
| 1289 |
|
|
<section id="s5.9.3"> |
| 1290 |
|
|
<title>Replacing or renaming packages</title> |
| 1291 |
|
|
<para> |
| 1292 |
|
|
When you make a mistake naming your package, you should follow a two-step |
| 1293 |
|
|
process to rename it. First, set your <filename>debian/control</filename> file |
| 1294 |
|
|
to replace and conflict with the obsolete name of the package (see the <ulink |
| 1295 |
debacle |
4910 |
url="&url-debian-policy;">Debian Policy Manual</ulink> for |
| 1296 |
debacle |
4902 |
details). Once you've uploaded the package and the package has moved into the |
| 1297 |
debacle |
4911 |
archive, file a bug against <literal>ftp.debian.org</literal> asking to remove |
| 1298 |
debacle |
4902 |
the package with the obsolete name. Do not forget to properly reassign the |
| 1299 |
|
|
package's bugs at the same time. |
| 1300 |
|
|
</para> |
| 1301 |
|
|
<para> |
| 1302 |
|
|
At other times, you may make a mistake in constructing your package and wish to |
| 1303 |
|
|
replace it. The only way to do this is to increase the version number and |
| 1304 |
|
|
upload a new version. The old version will be expired in the usual manner. |
| 1305 |
|
|
Note that this applies to each part of your package, including the sources: if |
| 1306 |
|
|
you wish to replace the upstream source tarball of your package, you will need |
| 1307 |
|
|
to upload it with a different version. An easy possibility is to replace |
| 1308 |
|
|
<filename>foo_1.00.orig.tar.gz</filename> with |
| 1309 |
|
|
<filename>foo_1.00+0.orig.tar.gz</filename>. This restriction gives each file |
| 1310 |
|
|
on the ftp site a unique name, which helps to ensure consistency across the |
| 1311 |
|
|
mirror network. |
| 1312 |
|
|
</para> |
| 1313 |
|
|
</section> |
| 1314 |
|
|
|
| 1315 |
|
|
<section id="orphaning"> |
| 1316 |
|
|
<title>Orphaning a package</title> |
| 1317 |
|
|
<para> |
| 1318 |
|
|
If you can no longer maintain a package, you need to inform others, and see |
| 1319 |
|
|
that the package is marked as orphaned. You should set the package maintainer |
| 1320 |
debacle |
4911 |
to <literal>Debian QA Group &orphan-address;</literal> and |
| 1321 |
|
|
submit a bug report against the pseudo package <systemitem |
| 1322 |
debacle |
4902 |
role="package">wnpp</systemitem>. The bug report should be titled <literal>O: |
| 1323 |
|
|
<replaceable>package</replaceable> -- <replaceable>short |
| 1324 |
|
|
description</replaceable></literal> indicating that the package is now |
| 1325 |
|
|
orphaned. The severity of the bug should be set to |
| 1326 |
|
|
<emphasis>normal</emphasis>; if the package has a priority of standard or |
| 1327 |
|
|
higher, it should be set to important. If you feel it's necessary, send a copy |
| 1328 |
debacle |
4911 |
to &email-debian-devel; by putting the address in the |
| 1329 |
debacle |
4902 |
X-Debbugs-CC: header of the message (no, don't use CC:, because that way the |
| 1330 |
|
|
message's subject won't indicate the bug number). |
| 1331 |
|
|
</para> |
| 1332 |
|
|
<para> |
| 1333 |
|
|
If you just intend to give the package away, but you can keep maintainership |
| 1334 |
|
|
for the moment, then you should instead submit a bug against <systemitem |
| 1335 |
|
|
role="package">wnpp</systemitem> and title it <literal>RFA: |
| 1336 |
|
|
<replaceable>package</replaceable> -- <replaceable>short |
| 1337 |
|
|
description</replaceable></literal>. <literal>RFA</literal> stands for |
| 1338 |
|
|
<emphasis>Request For Adoption</emphasis>. |
| 1339 |
|
|
</para> |
| 1340 |
|
|
<para> |
| 1341 |
debacle |
4910 |
More information is on the <ulink url="&url-wnpp;">WNPP |
| 1342 |
debacle |
4902 |
web pages</ulink>. |
| 1343 |
|
|
</para> |
| 1344 |
|
|
</section> |
| 1345 |
|
|
|
| 1346 |
|
|
<section id="adopting"> |
| 1347 |
|
|
<title>Adopting a package</title> |
| 1348 |
|
|
<para> |
| 1349 |
|
|
A list of packages in need of a new maintainer is available in the <ulink |
| 1350 |
debacle |
4910 |
url="&url-wnpp;">Work-Needing and Prospective Packages |
| 1351 |
debacle |
4902 |
list (WNPP)</ulink>. If you wish to take over maintenance of any of the |
| 1352 |
|
|
packages listed in the WNPP, please take a look at the aforementioned page for |
| 1353 |
|
|
information and procedures. |
| 1354 |
|
|
</para> |
| 1355 |
|
|
<para> |
| 1356 |
|
|
It is not OK to simply take over a package that you feel is neglected — that |
| 1357 |
|
|
would be package hijacking. You can, of course, contact the current maintainer |
| 1358 |
|
|
and ask them if you may take over the package. If you have reason to believe a |
| 1359 |
|
|
maintainer has gone AWOL (absent without leave), see <xref linkend="mia-qa"/> . |
| 1360 |
|
|
</para> |
| 1361 |
|
|
<para> |
| 1362 |
|
|
Generally, you may not take over the package without the assent of the current |
| 1363 |
|
|
maintainer. Even if they ignore you, that is still not grounds to take over a |
| 1364 |
|
|
package. Complaints about maintainers should be brought up on the developers' |
| 1365 |
|
|
mailing list. If the discussion doesn't end with a positive conclusion, and |
| 1366 |
|
|
the issue is of a technical nature, consider bringing it to the attention of |
| 1367 |
|
|
the technical committee (see the <ulink |
| 1368 |
debacle |
4911 |
url="&url-tech-ctte;">technical committee web page</ulink> for |
| 1369 |
|
|
more information). |
| 1370 |
debacle |
4902 |
</para> |
| 1371 |
|
|
<para> |
| 1372 |
|
|
If you take over an old package, you probably want to be listed as the |
| 1373 |
|
|
package's official maintainer in the bug system. This will happen |
| 1374 |
|
|
automatically once you upload a new version with an updated |
| 1375 |
|
|
<literal>Maintainer:</literal> field, although it can take a few hours after |
| 1376 |
|
|
the upload is done. If you do not expect to upload a new version for a while, |
| 1377 |
|
|
you can use <xref linkend="pkg-tracking-system"/> to get the bug reports. |
| 1378 |
|
|
However, make sure that the old maintainer has no problem with the fact that |
| 1379 |
|
|
they will continue to receive the bugs during that time. |
| 1380 |
|
|
</para> |
| 1381 |
|
|
</section> |
| 1382 |
|
|
|
| 1383 |
|
|
</section> |
| 1384 |
|
|
|
| 1385 |
|
|
<section id="porting"> |
| 1386 |
|
|
<title>Porting and being ported</title> |
| 1387 |
|
|
<para> |
| 1388 |
|
|
Debian supports an ever-increasing number of architectures. Even if you are |
| 1389 |
|
|
not a porter, and you don't use any architecture but one, it is part of your |
| 1390 |
|
|
duty as a maintainer to be aware of issues of portability. Therefore, even if |
| 1391 |
|
|
you are not a porter, you should read most of this chapter. |
| 1392 |
|
|
</para> |
| 1393 |
|
|
<para> |
| 1394 |
|
|
Porting is the act of building Debian packages for architectures that are |
| 1395 |
|
|
different from the original architecture of the package maintainer's binary |
| 1396 |
|
|
package. It is a unique and essential activity. In fact, porters do most of |
| 1397 |
|
|
the actual compiling of Debian packages. For instance, for a single |
| 1398 |
|
|
<emphasis>i386</emphasis> binary package, there must be a recompile for each |
| 1399 |
debacle |
4910 |
architecture, which amounts to &number-of-arches; more builds. |
| 1400 |
debacle |
4902 |
</para> |
| 1401 |
|
|
<section id="kind-to-porters"> |
| 1402 |
|
|
<title>Being kind to porters</title> |
| 1403 |
|
|
<para> |
| 1404 |
|
|
Porters have a difficult and unique task, since they are required to deal with |
| 1405 |
|
|
a large volume of packages. Ideally, every source package should build right |
| 1406 |
|
|
out of the box. Unfortunately, this is often not the case. This section |
| 1407 |
|
|
contains a checklist of ``gotchas'' often committed by Debian maintainers — |
| 1408 |
|
|
common problems which often stymie porters, and make their jobs unnecessarily |
| 1409 |
|
|
difficult. |
| 1410 |
|
|
</para> |
| 1411 |
|
|
<para> |
| 1412 |
|
|
The first and most important thing is to respond quickly to bug or issues |
| 1413 |
|
|
raised by porters. Please treat porters with courtesy, as if they were in fact |
| 1414 |
|
|
co-maintainers of your package (which, in a way, they are). Please be tolerant |
| 1415 |
|
|
of succinct or even unclear bug reports; do your best to hunt down whatever the |
| 1416 |
|
|
problem is. |
| 1417 |
|
|
</para> |
| 1418 |
|
|
<para> |
| 1419 |
|
|
By far, most of the problems encountered by porters are caused by |
| 1420 |
|
|
<emphasis>packaging bugs</emphasis> in the source packages. Here is a |
| 1421 |
|
|
checklist of things you should check or be aware of. |
| 1422 |
|
|
</para> |
| 1423 |
|
|
<orderedlist numeration="arabic"> |
| 1424 |
|
|
<listitem> |
| 1425 |
|
|
<para> |
| 1426 |
|
|
Make sure that your <literal>Build-Depends</literal> and |
| 1427 |
|
|
<literal>Build-Depends-Indep</literal> settings in |
| 1428 |
|
|
<filename>debian/control</filename> are set properly. The best way to validate |
| 1429 |
|
|
this is to use the <systemitem role="package">debootstrap</systemitem> package |
| 1430 |
|
|
to create an unstable chroot environment (see <xref linkend="debootstrap"/> ). |
| 1431 |
|
|
Within that chrooted environment, install the <systemitem |
| 1432 |
|
|
role="package">build-essential</systemitem> package and any package |
| 1433 |
|
|
dependencies mentioned in <literal>Build-Depends</literal> and/or |
| 1434 |
|
|
<literal>Build-Depends-Indep</literal>. Finally, try building your package |
| 1435 |
|
|
within that chrooted environment. These steps can be automated by the use of |
| 1436 |
|
|
the <command>pbuilder</command> program which is provided by the package of the |
| 1437 |
|
|
same name (see <xref linkend="pbuilder"/> ). |
| 1438 |
|
|
</para> |
| 1439 |
|
|
<para> |
| 1440 |
|
|
If you can't set up a proper chroot, <command>dpkg-depcheck</command> may be of |
| 1441 |
|
|
assistance (see <xref linkend="dpkg-depcheck"/> ). |
| 1442 |
|
|
</para> |
| 1443 |
|
|
<para> |
| 1444 |
debacle |
4910 |
See the <ulink url="&url-debian-policy;">Debian Policy |
| 1445 |
debacle |
4902 |
Manual</ulink> for instructions on setting build dependencies. |
| 1446 |
|
|
</para> |
| 1447 |
|
|
</listitem> |
| 1448 |
|
|
<listitem> |
| 1449 |
|
|
<para> |
| 1450 |
|
|
Don't set architecture to a value other than ``all'' or ``any'' unless you |
| 1451 |
|
|
really mean it. In too many cases, maintainers don't follow the instructions |
| 1452 |
debacle |
4910 |
in the <ulink url="&url-debian-policy;">Debian Policy |
| 1453 |
debacle |
4902 |
Manual</ulink>. Setting your architecture to ``i386'' is usually incorrect. |
| 1454 |
|
|
</para> |
| 1455 |
|
|
</listitem> |
| 1456 |
|
|
<listitem> |
| 1457 |
|
|
<para> |
| 1458 |
|
|
Make sure your source package is correct. Do <literal>dpkg-source -x |
| 1459 |
|
|
<replaceable>package</replaceable>.dsc</literal> to make sure your source |
| 1460 |
|
|
package unpacks properly. Then, in there, try building your package from |
| 1461 |
|
|
scratch with <command>dpkg-buildpackage</command>. |
| 1462 |
|
|
</para> |
| 1463 |
|
|
</listitem> |
| 1464 |
|
|
<listitem> |
| 1465 |
|
|
<para> |
| 1466 |
|
|
Make sure you don't ship your source package with the |
| 1467 |
|
|
<filename>debian/files</filename> or <filename>debian/substvars</filename> |
| 1468 |
|
|
files. They should be removed by the `clean' target of |
| 1469 |
|
|
<filename>debian/rules</filename>. |
| 1470 |
|
|
</para> |
| 1471 |
|
|
</listitem> |
| 1472 |
|
|
<listitem> |
| 1473 |
|
|
<para> |
| 1474 |
|
|
Make sure you don't rely on locally installed or hacked configurations or |
| 1475 |
|
|
programs. For instance, you should never be calling programs in |
| 1476 |
|
|
<filename>/usr/local/bin</filename> or the like. Try not to rely on programs |
| 1477 |
|
|
being setup in a special way. Try building your package on another machine, |
| 1478 |
|
|
even if it's the same architecture. |
| 1479 |
|
|
</para> |
| 1480 |
|
|
</listitem> |
| 1481 |
|
|
<listitem> |
| 1482 |
|
|
<para> |
| 1483 |
|
|
Don't depend on the package you're building being installed already (a sub-case |
| 1484 |
|
|
of the above issue). |
| 1485 |
|
|
</para> |
| 1486 |
|
|
</listitem> |
| 1487 |
|
|
<listitem> |
| 1488 |
|
|
<para> |
| 1489 |
|
|
Don't rely on the compiler being a certain version, if possible. If not, then |
| 1490 |
|
|
make sure your build dependencies reflect the restrictions, although you are |
| 1491 |
|
|
probably asking for trouble, since different architectures sometimes |
| 1492 |
|
|
standardize on different compilers. |
| 1493 |
|
|
</para> |
| 1494 |
|
|
</listitem> |
| 1495 |
|
|
<listitem> |
| 1496 |
|
|
<para> |
| 1497 |
|
|
Make sure your debian/rules contains separate ``binary-arch'' and |
| 1498 |
|
|
``binary-indep'' targets, as the Debian Policy Manual requires. Make sure that |
| 1499 |
|
|
both targets work independently, that is, that you can call the target without |
| 1500 |
|
|
having called the other before. To test this, try to run |
| 1501 |
|
|
<literal>dpkg-buildpackage -B</literal>. |
| 1502 |
|
|
</para> |
| 1503 |
|
|
</listitem> |
| 1504 |
|
|
</orderedlist> |
| 1505 |
|
|
</section> |
| 1506 |
|
|
|
| 1507 |
|
|
<section id="porter-guidelines"> |
| 1508 |
|
|
<title>Guidelines for porter uploads</title> |
| 1509 |
|
|
<para> |
| 1510 |
|
|
If the package builds out of the box for the architecture to be ported to, you |
| 1511 |
|
|
are in luck and your job is easy. This section applies to that case; it |
| 1512 |
|
|
describes how to build and upload your binary package so that it is properly |
| 1513 |
|
|
installed into the archive. If you do have to patch the package in order to |
| 1514 |
|
|
get it to compile for the other architecture, you are actually doing a source |
| 1515 |
|
|
NMU, so consult <xref linkend="nmu-guidelines"/> instead. |
| 1516 |
|
|
</para> |
| 1517 |
|
|
<para> |
| 1518 |
|
|
For a porter upload, no changes are being made to the source. You do not need |
| 1519 |
|
|
to touch any of the files in the source package. This includes |
| 1520 |
|
|
<filename>debian/changelog</filename>. |
| 1521 |
|
|
</para> |
| 1522 |
|
|
<para> |
| 1523 |
|
|
The way to invoke <command>dpkg-buildpackage</command> is as |
| 1524 |
|
|
<literal>dpkg-buildpackage -B |
| 1525 |
|
|
-m<replaceable>porter-email</replaceable></literal>. Of course, set |
| 1526 |
|
|
<replaceable>porter-email</replaceable> to your email address. This will do a |
| 1527 |
|
|
binary-only build of only the architecture-dependent portions of the package, |
| 1528 |
|
|
using the `binary-arch' target in <filename>debian/rules</filename>. |
| 1529 |
|
|
</para> |
| 1530 |
|
|
<para> |
| 1531 |
|
|
If you are working on a Debian machine for your porting efforts and you need to |
| 1532 |
|
|
sign your upload locally for its acceptance in the archive, you can run |
| 1533 |
|
|
<command>debsign</command> on your <filename>.changes</filename> file to have |
| 1534 |
|
|
it signed conveniently, or use the remote signing mode of |
| 1535 |
|
|
<command>dpkg-sig</command>. |
| 1536 |
|
|
</para> |
| 1537 |
|
|
<section id="binary-only-nmu"> |
| 1538 |
|
|
<title>Recompilation or binary-only NMU</title> |
| 1539 |
|
|
<para> |
| 1540 |
|
|
Sometimes the initial porter upload is problematic because the environment in |
| 1541 |
|
|
which the package was built was not good enough (outdated or obsolete library, |
| 1542 |
|
|
bad compiler, ...). Then you may just need to recompile it in an updated |
| 1543 |
|
|
environment. However, you have to bump the version number in this case, so |
| 1544 |
|
|
that the old bad package can be replaced in the Debian archive |
| 1545 |
|
|
(<command>katie</command> refuses to install new packages if they don't have a |
| 1546 |
|
|
version number greater than the currently available one). |
| 1547 |
|
|
</para> |
| 1548 |
|
|
<para> |
| 1549 |
|
|
You have to make sure that your binary-only NMU doesn't render the package |
| 1550 |
|
|
uninstallable. This could happen when a source package generates |
| 1551 |
|
|
arch-dependent and arch-independent packages that depend on each other via |
| 1552 |
|
|
$(Source-Version). |
| 1553 |
|
|
</para> |
| 1554 |
|
|
<para> |
| 1555 |
|
|
Despite the required modification of the changelog, these are called |
| 1556 |
|
|
binary-only NMUs — there is no need in this case to trigger all other |
| 1557 |
|
|
architectures to consider themselves out of date or requiring recompilation. |
| 1558 |
|
|
</para> |
| 1559 |
|
|
<para> |
| 1560 |
|
|
Such recompilations require special ``magic'' version numbering, so that the |
| 1561 |
|
|
archive maintenance tools recognize that, even though there is a new Debian |
| 1562 |
|
|
version, there is no corresponding source update. If you get this wrong, the |
| 1563 |
|
|
archive maintainers will reject your upload (due to lack of corresponding |
| 1564 |
|
|
source code). |
| 1565 |
|
|
</para> |
| 1566 |
|
|
<para> |
| 1567 |
|
|
The ``magic'' for a recompilation-only NMU is triggered by using a suffix |
| 1568 |
|
|
appended to the package version number, following the form b<number>. |
| 1569 |
|
|
For instance, if the latest version you are recompiling against was version |
| 1570 |
|
|
``2.9-3'', your NMU should carry a version of ``2.9-3+b1''. If the latest |
| 1571 |
|
|
version was ``3.4+b1'' (i.e, a native package with a previous recompilation |
| 1572 |
|
|
NMU), your NMU should have a version number of ``3.4+b2''. <footnote><para> In |
| 1573 |
|
|
the past, such NMUs used the third-level number on the Debian part of the |
| 1574 |
|
|
revision to denote their recompilation-only status; however, this syntax was |
| 1575 |
|
|
ambiguous with native packages and did not allow proper ordering of |
| 1576 |
|
|
recompile-only NMUs, source NMUs, and security NMUs on the same package, and |
| 1577 |
|
|
has therefore been abandoned in favor of this new syntax. </para> </footnote> |
| 1578 |
|
|
</para> |
| 1579 |
|
|
<para> |
| 1580 |
|
|
Similar to initial porter uploads, the correct way of invoking |
| 1581 |
|
|
<command>dpkg-buildpackage</command> is <literal>dpkg-buildpackage -B</literal> |
| 1582 |
|
|
to only build the architecture-dependent parts of the package. |
| 1583 |
|
|
</para> |
| 1584 |
|
|
</section> |
| 1585 |
|
|
|
| 1586 |
|
|
<section id="source-nmu-when-porter"> |
| 1587 |
|
|
<title>When to do a source NMU if you are a porter</title> |
| 1588 |
|
|
<para> |
| 1589 |
|
|
Porters doing a source NMU generally follow the guidelines found in <xref |
| 1590 |
|
|
linkend="nmu"/> , just like non-porters. However, it is expected that the wait |
| 1591 |
|
|
cycle for a porter's source NMU is smaller than for a non-porter, since porters |
| 1592 |
|
|
have to cope with a large quantity of packages. Again, the situation varies |
| 1593 |
|
|
depending on the distribution they are uploading to. It also varies whether |
| 1594 |
|
|
the architecture is a candidate for inclusion into the next stable release; the |
| 1595 |
|
|
release managers decide and announce which architectures are candidates. |
| 1596 |
|
|
</para> |
| 1597 |
|
|
<para> |
| 1598 |
|
|
If you are a porter doing an NMU for `unstable', the above guidelines for |
| 1599 |
|
|
porting should be followed, with two variations. Firstly, the acceptable |
| 1600 |
|
|
waiting period — the time between when the bug is submitted to the BTS and |
| 1601 |
|
|
when it is OK to do an NMU — is seven days for porters working on the |
| 1602 |
|
|
unstable distribution. This period can be shortened if the problem is critical |
| 1603 |
|
|
and imposes hardship on the porting effort, at the discretion of the porter |
| 1604 |
|
|
group. (Remember, none of this is Policy, just mutually agreed upon |
| 1605 |
|
|
guidelines.) For uploads to stable or testing, please coordinate with the |
| 1606 |
|
|
appropriate release team first. |
| 1607 |
|
|
</para> |
| 1608 |
|
|
<para> |
| 1609 |
|
|
Secondly, porters doing source NMUs should make sure that the bug they submit |
| 1610 |
|
|
to the BTS should be of severity `serious' or greater. This ensures that a |
| 1611 |
|
|
single source package can be used to compile every supported Debian |
| 1612 |
|
|
architecture by release time. It is very important that we have one version of |
| 1613 |
|
|
the binary and source package for all architecture in order to comply with many |
| 1614 |
|
|
licenses. |
| 1615 |
|
|
</para> |
| 1616 |
|
|
<para> |
| 1617 |
|
|
Porters should try to avoid patches which simply kludge around bugs in the |
| 1618 |
|
|
current version of the compile environment, kernel, or libc. Sometimes such |
| 1619 |
|
|
kludges can't be helped. If you have to kludge around compiler bugs and the |
| 1620 |
|
|
like, make sure you <literal>#ifdef</literal> your work properly; also, |
| 1621 |
|
|
document your kludge so that people know to remove it once the external |
| 1622 |
|
|
problems have been fixed. |
| 1623 |
|
|
</para> |
| 1624 |
|
|
<para> |
| 1625 |
|
|
Porters may also have an unofficial location where they can put the results of |
| 1626 |
|
|
their work during the waiting period. This helps others running the port have |
| 1627 |
|
|
the benefit of the porter's work, even during the waiting period. Of course, |
| 1628 |
|
|
such locations have no official blessing or status, so buyer beware. |
| 1629 |
|
|
</para> |
| 1630 |
|
|
</section> |
| 1631 |
|
|
|
| 1632 |
|
|
</section> |
| 1633 |
|
|
|
| 1634 |
|
|
<section id="porter-automation"> |
| 1635 |
|
|
<title>Porting infrastructure and automation</title> |
| 1636 |
|
|
<para> |
| 1637 |
|
|
There is infrastructure and several tools to help automate package porting. |
| 1638 |
|
|
This section contains a brief overview of this automation and porting to these |
| 1639 |
|
|
tools; see the package documentation or references for full information. |
| 1640 |
|
|
</para> |
| 1641 |
|
|
<section id="s5.10.3.1"> |
| 1642 |
|
|
<title>Mailing lists and web pages</title> |
| 1643 |
|
|
<para> |
| 1644 |
|
|
Web pages containing the status of each port can be found at <ulink |
| 1645 |
debacle |
4910 |
url="&url-debian-ports;"></ulink>. |
| 1646 |
debacle |
4902 |
</para> |
| 1647 |
|
|
<para> |
| 1648 |
|
|
Each port of Debian has a mailing list. The list of porting mailing lists can |
| 1649 |
debacle |
4910 |
be found at <ulink url="&url-debian-port-lists;"></ulink>. These |
| 1650 |
debacle |
4902 |
lists are used to coordinate porters, and to connect the users of a given port |
| 1651 |
|
|
with the porters. |
| 1652 |
|
|
</para> |
| 1653 |
|
|
</section> |
| 1654 |
|
|
|
| 1655 |
|
|
<section id="s5.10.3.2"> |
| 1656 |
|
|
<title>Porter tools</title> |
| 1657 |
|
|
<para> |
| 1658 |
|
|
Descriptions of several porting tools can be found in <xref |
| 1659 |
|
|
linkend="tools-porting"/> . |
| 1660 |
|
|
</para> |
| 1661 |
|
|
</section> |
| 1662 |
|
|
|
| 1663 |
|
|
<section id="buildd"> |
| 1664 |
|
|
<title><systemitem role="package">buildd</systemitem></title> |
| 1665 |
|
|
<para> |
| 1666 |
|
|
The <systemitem role="package">buildd</systemitem> system is used as a |
| 1667 |
|
|
distributed, client-server build distribution system. It is usually used in |
| 1668 |
|
|
conjunction with <emphasis>auto-builders</emphasis>, which are ``slave'' hosts |
| 1669 |
|
|
which simply check out and attempt to auto-build packages which need to be |
| 1670 |
|
|
ported. There is also an email interface to the system, which allows porters |
| 1671 |
|
|
to ``check out'' a source package (usually one which cannot yet be auto-built) |
| 1672 |
|
|
and work on it. |
| 1673 |
|
|
</para> |
| 1674 |
|
|
<para> |
| 1675 |
|
|
<systemitem role="package">buildd</systemitem> is not yet available as a |
| 1676 |
|
|
package; however, most porting efforts are either using it currently or |
| 1677 |
|
|
planning to use it in the near future. The actual automated builder is |
| 1678 |
|
|
packaged as <systemitem role="package">sbuild</systemitem>, see its description |
| 1679 |
|
|
in <xref linkend="sbuild"/> . The complete <systemitem |
| 1680 |
|
|
role="package">buildd</systemitem> system also collects a number of as yet |
| 1681 |
|
|
unpackaged components which are currently very useful and in use continually, |
| 1682 |
|
|
such as <command>andrea</command> and <command>wanna-build</command>. |
| 1683 |
|
|
</para> |
| 1684 |
|
|
<para> |
| 1685 |
|
|
Some of the data produced by <systemitem role="package">buildd</systemitem> |
| 1686 |
|
|
which is generally useful to porters is available on the web at <ulink |
| 1687 |
debacle |
4910 |
url="&url-buildd;"></ulink>. This data includes nightly updated |
| 1688 |
debacle |
4902 |
information from <command>andrea</command> (source dependencies) and |
| 1689 |
|
|
<systemitem role="package">quinn-diff</systemitem> (packages needing |
| 1690 |
|
|
recompilation). |
| 1691 |
|
|
</para> |
| 1692 |
|
|
<para> |
| 1693 |
|
|
We are quite proud of this system, since it has so many possible uses. |
| 1694 |
|
|
Independent development groups can use the system for different sub-flavors of |
| 1695 |
|
|
Debian, which may or may not really be of general interest (for instance, a |
| 1696 |
|
|
flavor of Debian built with <command>gcc</command> bounds checking). It will |
| 1697 |
|
|
also enable Debian to recompile entire distributions quickly. |
| 1698 |
|
|
</para> |
| 1699 |
|
|
<para> |
| 1700 |
|
|
The buildds admins of each arch can be contacted at the mail address |
| 1701 |
|
|
$arch@buildd.debian.org. |
| 1702 |
|
|
</para> |
| 1703 |
|
|
</section> |
| 1704 |
|
|
|
| 1705 |
|
|
</section> |
| 1706 |
|
|
|
| 1707 |
|
|
<section id="packages-arch-specific"> |
| 1708 |
|
|
<title>When your package is <emphasis>not</emphasis> portable</title> |
| 1709 |
|
|
<para> |
| 1710 |
|
|
Some packages still have issues with building and/or working on some of the |
| 1711 |
|
|
architectures supported by Debian, and cannot be ported at all, or not within a |
| 1712 |
|
|
reasonable amount of time. An example is a package that is SVGA-specific (only |
| 1713 |
|
|
i386), or uses other hardware-specific features not supported on all |
| 1714 |
|
|
architectures. |
| 1715 |
|
|
</para> |
| 1716 |
|
|
<para> |
| 1717 |
|
|
In order to prevent broken packages from being uploaded to the archive, and |
| 1718 |
|
|
wasting buildd time, you need to do a few things: |
| 1719 |
|
|
</para> |
| 1720 |
|
|
<itemizedlist> |
| 1721 |
|
|
<listitem> |
| 1722 |
|
|
<para> |
| 1723 |
|
|
First, make sure your package <emphasis>does</emphasis> fail to build on |
| 1724 |
|
|
architectures that it cannot support. There are a few ways to achieve this. |
| 1725 |
|
|
The preferred way is to have a small testsuite during build time that will test |
| 1726 |
|
|
the functionality, and fail if it doesn't work. This is a good idea anyway, as |
| 1727 |
|
|
this will prevent (some) broken uploads on all architectures, and also will |
| 1728 |
|
|
allow the package to build as soon as the required functionality is available. |
| 1729 |
|
|
</para> |
| 1730 |
|
|
<para> |
| 1731 |
|
|
Additionally, if you believe the list of supported architectures is pretty |
| 1732 |
|
|
constant, you should change 'any' to a list of supported architectures in |
| 1733 |
|
|
debian/control. This way, the build will fail also, and indicate this to a |
| 1734 |
|
|
human reader without actually trying. |
| 1735 |
|
|
</para> |
| 1736 |
|
|
</listitem> |
| 1737 |
|
|
<listitem> |
| 1738 |
|
|
<para> |
| 1739 |
|
|
In order to prevent autobuilders from needlessly trying to build your package, |
| 1740 |
|
|
it must be included in <filename>packages-arch-specific</filename>, a list used |
| 1741 |
|
|
by the <command>wanna-build</command> script. The current version is available |
| 1742 |
|
|
as <ulink |
| 1743 |
debacle |
4910 |
url="&url-cvsweb;srcdep/Packages-arch-specific?cvsroot=dak"></ulink>; |
| 1744 |
debacle |
4902 |
please see the top of the file for whom to contact for changes. |
| 1745 |
|
|
</para> |
| 1746 |
|
|
</listitem> |
| 1747 |
|
|
</itemizedlist> |
| 1748 |
|
|
<para> |
| 1749 |
|
|
Please note that it is insufficient to only add your package to |
| 1750 |
|
|
Packages-arch-specific without making it fail to build on unsupported |
| 1751 |
|
|
architectures: A porter or any other person trying to build your package might |
| 1752 |
|
|
accidently upload it without noticing it doesn't work. If in the past some |
| 1753 |
|
|
binary packages were uploaded on unsupported architectures, request their |
| 1754 |
|
|
removal by filing a bug against <systemitem |
| 1755 |
debacle |
4911 |
role="package">ftp.debian.org</systemitem> |
| 1756 |
debacle |
4902 |
</para> |
| 1757 |
|
|
</section> |
| 1758 |
|
|
|
| 1759 |
|
|
</section> |
| 1760 |
|
|
|
| 1761 |
|
|
<section id="nmu"> |
| 1762 |
|
|
<title>Non-Maintainer Uploads (NMUs)</title> |
| 1763 |
|
|
<para> |
| 1764 |
|
|
Under certain circumstances it is necessary for someone other than the official |
| 1765 |
|
|
package maintainer to make a release of a package. This is called a |
| 1766 |
|
|
non-maintainer upload, or NMU. |
| 1767 |
|
|
</para> |
| 1768 |
|
|
<para> |
| 1769 |
|
|
This section handles only source NMUs, i.e. NMUs which upload a new version of |
| 1770 |
|
|
the package. For binary-only NMUs by porters or QA members, please see <xref |
| 1771 |
|
|
linkend="binary-only-nmu"/> . If a buildd builds and uploads a package, that |
| 1772 |
|
|
too is strictly speaking a binary NMU. See <xref linkend="buildd"/> for some |
| 1773 |
|
|
more information. |
| 1774 |
|
|
</para> |
| 1775 |
|
|
<para> |
| 1776 |
|
|
The main reason why NMUs are done is when a developer needs to fix another |
| 1777 |
|
|
developer's package in order to address serious problems or crippling bugs or |
| 1778 |
|
|
when the package maintainer is unable to release a fix in a timely fashion. |
| 1779 |
|
|
</para> |
| 1780 |
|
|
<para> |
| 1781 |
|
|
First and foremost, it is critical that NMU patches to source should be as |
| 1782 |
|
|
non-disruptive as possible. Do not do housekeeping tasks, do not change the |
| 1783 |
|
|
name of modules or files, do not move directories; in general, do not fix |
| 1784 |
|
|
things which are not broken. Keep the patch as small as possible. If things |
| 1785 |
|
|
bother you aesthetically, talk to the Debian maintainer, talk to the upstream |
| 1786 |
|
|
maintainer, or submit a bug. However, aesthetic changes must |
| 1787 |
|
|
<emphasis>not</emphasis> be made in a non-maintainer upload. |
| 1788 |
|
|
</para> |
| 1789 |
|
|
<para> |
| 1790 |
|
|
And please remember the Hippocratic Oath: Above all, do no harm. It is better |
| 1791 |
|
|
to leave a package with an open grave bug than applying a non-functional patch, |
| 1792 |
|
|
or one that hides the bug instead of resolving it. |
| 1793 |
|
|
</para> |
| 1794 |
|
|
<section id="nmu-guidelines"> |
| 1795 |
|
|
<title>How to do a NMU</title> |
| 1796 |
|
|
<para> |
| 1797 |
|
|
NMUs which fix important, serious or higher severity bugs are encouraged and |
| 1798 |
|
|
accepted. You should endeavor to reach the current maintainer of the package; |
| 1799 |
|
|
they might be just about to upload a fix for the problem, or have a better |
| 1800 |
|
|
solution. |
| 1801 |
|
|
</para> |
| 1802 |
|
|
<para> |
| 1803 |
|
|
NMUs should be made to assist a package's maintainer in resolving bugs. |
| 1804 |
|
|
Maintainers should be thankful for that help, and NMUers should respect the |
| 1805 |
|
|
decisions of maintainers, and try to personally help the maintainer by their |
| 1806 |
|
|
work. |
| 1807 |
|
|
</para> |
| 1808 |
|
|
<para> |
| 1809 |
|
|
A NMU should follow all conventions, written down in this section. For an |
| 1810 |
|
|
upload to testing or unstable, this order of steps is recommended: |
| 1811 |
|
|
</para> |
| 1812 |
|
|
<itemizedlist> |
| 1813 |
|
|
<listitem> |
| 1814 |
|
|
<para> |
| 1815 |
|
|
Make sure that the package's bugs that the NMU is meant to address are all |
| 1816 |
|
|
filed in the Debian Bug Tracking System (BTS). If they are not, submit them |
| 1817 |
|
|
immediately. |
| 1818 |
|
|
</para> |
| 1819 |
|
|
</listitem> |
| 1820 |
|
|
<listitem> |
| 1821 |
|
|
<para> |
| 1822 |
|
|
Wait a few days for the response from the maintainer. If you don't get any |
| 1823 |
|
|
response, you may want to help them by sending the patch that fixes the bug. |
| 1824 |
|
|
Don't forget to tag the bug with the patch keyword. |
| 1825 |
|
|
</para> |
| 1826 |
|
|
</listitem> |
| 1827 |
|
|
<listitem> |
| 1828 |
|
|
<para> |
| 1829 |
|
|
Wait a few more days. If you still haven't got an answer from the maintainer, |
| 1830 |
|
|
send them a mail announcing your intent to NMU the package. Prepare an NMU as |
| 1831 |
|
|
described in this section, and test it carefully on your machine (cf. <xref |
| 1832 |
|
|
linkend="sanitycheck"/> ). Double check that your patch doesn't have any |
| 1833 |
|
|
unexpected side effects. Make sure your patch is as small and as |
| 1834 |
|
|
non-disruptive as it can be. |
| 1835 |
|
|
</para> |
| 1836 |
|
|
</listitem> |
| 1837 |
|
|
<listitem> |
| 1838 |
|
|
<para> |
| 1839 |
|
|
Upload your package to incoming in <filename>DELAYED/7-day</filename> (cf. |
| 1840 |
|
|
<xref linkend="delayed-incoming"/> ), send the final patch to the maintainer |
| 1841 |
|
|
via the BTS, and explain to them that they have 7 days to react if they want to |
| 1842 |
|
|
cancel the NMU. |
| 1843 |
|
|
</para> |
| 1844 |
|
|
</listitem> |
| 1845 |
|
|
<listitem> |
| 1846 |
|
|
<para> |
| 1847 |
|
|
Follow what happens, you're responsible for any bug that you introduced with |
| 1848 |
|
|
your NMU. You should probably use <xref linkend="pkg-tracking-system"/> (PTS) |
| 1849 |
|
|
to stay informed of the state of the package after your NMU. |
| 1850 |
|
|
</para> |
| 1851 |
|
|
</listitem> |
| 1852 |
|
|
</itemizedlist> |
| 1853 |
|
|
<para> |
| 1854 |
|
|
At times, the release manager or an organized group of developers can announce |
| 1855 |
|
|
a certain period of time in which the NMU rules are relaxed. This usually |
| 1856 |
|
|
involves shortening the period during which one is to wait before uploading the |
| 1857 |
|
|
fixes, and shortening the DELAYED period. It is important to notice that even |
| 1858 |
|
|
in these so-called bug squashing party times, the NMU'er has to file bugs and |
| 1859 |
|
|
contact the developer first, and act later. Please see <xref |
| 1860 |
|
|
linkend="qa-bsp"/> for details. |
| 1861 |
|
|
</para> |
| 1862 |
|
|
<para> |
| 1863 |
|
|
For the testing distribution, the rules may be changed by the release managers. |
| 1864 |
|
|
Please take additional care, and acknowledge that the usual way for a package |
| 1865 |
|
|
to enter testing is through unstable. |
| 1866 |
|
|
</para> |
| 1867 |
|
|
<para> |
| 1868 |
|
|
For the stable distribution, please take extra care. Of course, the release |
| 1869 |
|
|
managers may also change the rules here. Please verify before you upload that |
| 1870 |
|
|
all your changes are OK for inclusion into the next stable release by the |
| 1871 |
|
|
release manager. |
| 1872 |
|
|
</para> |
| 1873 |
|
|
<para> |
| 1874 |
|
|
When a security bug is detected, the security team may do an NMU, using their |
| 1875 |
|
|
own rules. Please refer to <xref linkend="bug-security"/> for more |
| 1876 |
|
|
information. |
| 1877 |
|
|
</para> |
| 1878 |
|
|
<para> |
| 1879 |
|
|
For the differences for Porters NMUs, please see <xref |
| 1880 |
|
|
linkend="source-nmu-when-porter"/> . |
| 1881 |
|
|
</para> |
| 1882 |
|
|
<para> |
| 1883 |
|
|
Of course, it is always possible to agree on special rules with a maintainer |
| 1884 |
|
|
(like the maintainer asking please upload this fix directly for me, and no diff |
| 1885 |
|
|
required). |
| 1886 |
|
|
</para> |
| 1887 |
|
|
</section> |
| 1888 |
|
|
|
| 1889 |
|
|
<section id="nmu-version"> |
| 1890 |
|
|
<title>NMU version numbering</title> |
| 1891 |
|
|
<para> |
| 1892 |
|
|
Whenever you have made a change to a package, no matter how trivial, the |
| 1893 |
|
|
version number needs to change. This enables our packing system to function. |
| 1894 |
|
|
</para> |
| 1895 |
|
|
<para> |
| 1896 |
|
|
If you are doing a non-maintainer upload (NMU), you should add a new minor |
| 1897 |
|
|
version number to the <replaceable>debian-revision</replaceable> part of the |
| 1898 |
|
|
version number (the portion after the last hyphen). This extra minor number |
| 1899 |
|
|
will start at `1'. For example, consider the package `foo', which is at |
| 1900 |
|
|
version 1.1-3. In the archive, the source package control file would be |
| 1901 |
|
|
<filename>foo_1.1-3.dsc</filename>. The upstream version is `1.1' and the |
| 1902 |
|
|
Debian revision is `3'. The next NMU would add a new minor number `.1' to the |
| 1903 |
|
|
Debian revision; the new source control file would be |
| 1904 |
|
|
<filename>foo_1.1-3.1.dsc</filename>. |
| 1905 |
|
|
</para> |
| 1906 |
|
|
<para> |
| 1907 |
|
|
The Debian revision minor number is needed to avoid stealing one of the package |
| 1908 |
|
|
maintainer's version numbers, which might disrupt their work. It also has the |
| 1909 |
|
|
benefit of making it visually clear that a package in the archive was not made |
| 1910 |
|
|
by the official maintainer. |
| 1911 |
|
|
</para> |
| 1912 |
|
|
<para> |
| 1913 |
|
|
If there is no <replaceable>debian-revision</replaceable> component in the |
| 1914 |
|
|
version number then one should be created, starting at `0.1' (but in case of a |
| 1915 |
|
|
debian native package still upload it as native package). If it is absolutely |
| 1916 |
|
|
necessary for someone other than the usual maintainer to make a release based |
| 1917 |
|
|
on a new upstream version then the person making the release should start with |
| 1918 |
|
|
the <replaceable>debian-revision</replaceable> value `0.1'. The usual |
| 1919 |
|
|
maintainer of a package should start their |
| 1920 |
|
|
<replaceable>debian-revision</replaceable> numbering at `1'. |
| 1921 |
|
|
</para> |
| 1922 |
|
|
<para> |
| 1923 |
|
|
If you upload a package to testing or stable, sometimes, you need to fork the |
| 1924 |
|
|
version number tree. For this, version numbers like 1.1-3sarge0.1 could be |
| 1925 |
|
|
used. |
| 1926 |
|
|
</para> |
| 1927 |
|
|
</section> |
| 1928 |
|
|
|
| 1929 |
|
|
<section id="nmu-changelog"> |
| 1930 |
|
|
<title>Source NMUs must have a new changelog entry</title> |
| 1931 |
|
|
<para> |
| 1932 |
|
|
Anyone who is doing a source NMU must create a changelog entry, describing |
| 1933 |
|
|
which bugs are fixed by the NMU, and generally why the NMU was required and |
| 1934 |
|
|
what it fixed. The changelog entry will have the email address of the person |
| 1935 |
|
|
who uploaded it in the log entry and the NMU version number in it. |
| 1936 |
|
|
</para> |
| 1937 |
|
|
<para> |
| 1938 |
|
|
By convention, source NMU changelog entries start with the line |
| 1939 |
|
|
</para> |
| 1940 |
|
|
<screen> |
| 1941 |
|
|
* Non-maintainer upload |
| 1942 |
|
|
</screen> |
| 1943 |
|
|
</section> |
| 1944 |
|
|
|
| 1945 |
|
|
<section id="nmu-patch"> |
| 1946 |
|
|
<title>Source NMUs and the Bug Tracking System</title> |
| 1947 |
|
|
<para> |
| 1948 |
|
|
Maintainers other than the official package maintainer should make as few |
| 1949 |
|
|
changes to the package as possible, and they should always send a patch as a |
| 1950 |
|
|
unified context diff (<literal>diff -u</literal>) detailing their changes to |
| 1951 |
|
|
the Bug Tracking System. |
| 1952 |
|
|
</para> |
| 1953 |
|
|
<para> |
| 1954 |
|
|
What if you are simply recompiling the package? If you just need to recompile |
| 1955 |
|
|
it for a single architecture, then you may do a binary-only NMU as described in |
| 1956 |
|
|
<xref linkend="binary-only-nmu"/> which doesn't require any patch to be sent. |
| 1957 |
|
|
If you want the package to be recompiled for all architectures, then you do a |
| 1958 |
|
|
source NMU as usual and you will have to send a patch. |
| 1959 |
|
|
</para> |
| 1960 |
|
|
<para> |
| 1961 |
|
|
Bugs fixed by source NMUs used to be tagged fixed instead of closed, but since |
| 1962 |
|
|
version tracking is in place, such bugs are now also closed with the NMU |
| 1963 |
|
|
version. |
| 1964 |
|
|
</para> |
| 1965 |
|
|
<para> |
| 1966 |
|
|
Also, after doing an NMU, you have to send the information to the existing bugs |
| 1967 |
|
|
that are fixed by your NMU, including the unified diff. Historically, it was |
| 1968 |
|
|
custom to open a new bug and include a patch showing all the changes you have |
| 1969 |
|
|
made. The normal maintainer will either apply the patch or employ an alternate |
| 1970 |
|
|
method of fixing the problem. Sometimes bugs are fixed independently upstream, |
| 1971 |
|
|
which is another good reason to back out an NMU's patch. If the maintainer |
| 1972 |
|
|
decides not to apply the NMU's patch but to release a new version, the |
| 1973 |
|
|
maintainer needs to ensure that the new upstream version really fixes each |
| 1974 |
|
|
problem that was fixed in the non-maintainer release. |
| 1975 |
|
|
</para> |
| 1976 |
|
|
<para> |
| 1977 |
|
|
In addition, the normal maintainer should <emphasis>always</emphasis> retain |
| 1978 |
|
|
the entry in the changelog file documenting the non-maintainer upload -- and of |
| 1979 |
|
|
course, also keep the changes. If you revert some of the changes, please |
| 1980 |
|
|
reopen the relevant bug reports. |
| 1981 |
|
|
</para> |
| 1982 |
|
|
</section> |
| 1983 |
|
|
|
| 1984 |
|
|
<section id="nmu-build"> |
| 1985 |
|
|
<title>Building source NMUs</title> |
| 1986 |
|
|
<para> |
| 1987 |
|
|
Source NMU packages are built normally. Pick a distribution using the same |
| 1988 |
|
|
rules as found in <xref linkend="distribution"/> , follow the other |
| 1989 |
|
|
instructions in <xref linkend="upload"/> . |
| 1990 |
|
|
</para> |
| 1991 |
|
|
<para> |
| 1992 |
|
|
Make sure you do <emphasis>not</emphasis> change the value of the maintainer in |
| 1993 |
|
|
the <filename>debian/control</filename> file. Your name as given in the NMU |
| 1994 |
|
|
entry of the <filename>debian/changelog</filename> file will be used for |
| 1995 |
|
|
signing the changes file. |
| 1996 |
|
|
</para> |
| 1997 |
|
|
</section> |
| 1998 |
|
|
|
| 1999 |
|
|
<section id="ack-nmu"> |
| 2000 |
|
|
<title>Acknowledging an NMU</title> |
| 2001 |
|
|
<para> |
| 2002 |
|
|
If one of your packages has been NMU'ed, you have to incorporate the changes in |
| 2003 |
|
|
your copy of the sources. This is easy, you just have to apply the patch that |
| 2004 |
|
|
has been sent to you. Once this is done, you have to close the bugs that have |
| 2005 |
|
|
been tagged fixed by the NMU. The easiest way is to use the |
| 2006 |
|
|
<literal>-v</literal> option of <command>dpkg-buildpackage</command>, as this |
| 2007 |
|
|
allows you to include just all changes since your last maintainer upload. |
| 2008 |
|
|
Alternatively, you can close them manually by sending the required mails to the |
| 2009 |
|
|
BTS or by adding the required <literal>closes: #nnnn</literal> in the changelog |
| 2010 |
|
|
entry of your next upload. |
| 2011 |
|
|
</para> |
| 2012 |
|
|
<para> |
| 2013 |
|
|
In any case, you should not be upset by the NMU. An NMU is not a personal |
| 2014 |
|
|
attack against the maintainer. It is a proof that someone cares enough about |
| 2015 |
|
|
the package that they were willing to help you in your work, so you should be |
| 2016 |
|
|
thankful. You may also want to ask them if they would be interested in helping |
| 2017 |
|
|
you on a more frequent basis as co-maintainer or backup maintainer (see <xref |
| 2018 |
|
|
linkend="collaborative-maint"/> ). |
| 2019 |
|
|
</para> |
| 2020 |
|
|
</section> |
| 2021 |
|
|
|
| 2022 |
|
|
<section id="nmu-vs-qa"> |
| 2023 |
|
|
<title>NMU vs QA uploads</title> |
| 2024 |
|
|
<para> |
| 2025 |
|
|
Unless you know the maintainer is still active, it is wise to check the package |
| 2026 |
|
|
to see if it has been orphaned. The current list of orphaned packages which |
| 2027 |
|
|
haven't had their maintainer set correctly is available at <ulink |
| 2028 |
debacle |
4910 |
url="&url-debian-qa-orphaned;"></ulink>. If you perform an NMU on an |
| 2029 |
debacle |
4911 |
improperly orphaned package, please set the maintainer to <literal>Debian QA Group |
| 2030 |
|
|
<packages@qa.debian.org></literal>. |
| 2031 |
debacle |
4902 |
</para> |
| 2032 |
|
|
</section> |
| 2033 |
|
|
|
| 2034 |
|
|
<section id="nmu-who"> |
| 2035 |
|
|
<title>Who can do an NMU</title> |
| 2036 |
|
|
<para> |
| 2037 |
|
|
Only official, registered Debian Developers can do binary or source NMUs. A |
| 2038 |
|
|
Debian Developer is someone who has their key in the Debian key ring. |
| 2039 |
|
|
Non-developers, however, are encouraged to download the source package and |
| 2040 |
|
|
start hacking on it to fix problems; however, rather than doing an NMU, they |
| 2041 |
|
|
should just submit worthwhile patches to the Bug Tracking System. Maintainers |
| 2042 |
|
|
almost always appreciate quality patches and bug reports. |
| 2043 |
|
|
</para> |
| 2044 |
|
|
</section> |
| 2045 |
|
|
|
| 2046 |
|
|
<section id="nmu-terms"> |
| 2047 |
|
|
<title>Terminology</title> |
| 2048 |
|
|
<para> |
| 2049 |
|
|
There are two new terms used throughout this section: ``binary-only NMU'' and |
| 2050 |
|
|
``source NMU''. These terms are used with specific technical meaning |
| 2051 |
|
|
throughout this document. Both binary-only and source NMUs are similar, since |
| 2052 |
|
|
they involve an upload of a package by a developer who is not the official |
| 2053 |
|
|
maintainer of that package. That is why it's a |
| 2054 |
|
|
<emphasis>non-maintainer</emphasis> upload. |
| 2055 |
|
|
</para> |
| 2056 |
|
|
<para> |
| 2057 |
|
|
A source NMU is an upload of a package by a developer who is not the official |
| 2058 |
|
|
maintainer, for the purposes of fixing a bug in the package. Source NMUs |
| 2059 |
|
|
always involves changes to the source (even if it is just a change to |
| 2060 |
|
|
<filename>debian/changelog</filename>). This can be either a change to the |
| 2061 |
|
|
upstream source, or a change to the Debian bits of the source. Note, however, |
| 2062 |
|
|
that source NMUs may also include architecture-dependent packages, as well as |
| 2063 |
|
|
an updated Debian diff. |
| 2064 |
|
|
</para> |
| 2065 |
|
|
<para> |
| 2066 |
|
|
A binary-only NMU is a recompilation and upload of a binary package for a given |
| 2067 |
|
|
architecture. As such, it is usually part of a porting effort. A binary-only |
| 2068 |
|
|
NMU is a non-maintainer uploaded binary version of a package, with no source |
| 2069 |
|
|
changes required. There are many cases where porters must fix problems in the |
| 2070 |
|
|
source in order to get them to compile for their target architecture; that |
| 2071 |
|
|
would be considered a source NMU rather than a binary-only NMU. As you can |
| 2072 |
|
|
see, we don't distinguish in terminology between porter NMUs and non-porter |
| 2073 |
|
|
NMUs. |
| 2074 |
|
|
</para> |
| 2075 |
|
|
<para> |
| 2076 |
|
|
Both classes of NMUs, source and binary-only, can be lumped under the term |
| 2077 |
|
|
``NMU''. However, this often leads to confusion, since most people think |
| 2078 |
|
|
``source NMU'' when they think ``NMU''. So it's best to be careful: always use |
| 2079 |
|
|
``binary NMU'' or ``binNMU'' for binary-only NMUs. |
| 2080 |
|
|
</para> |
| 2081 |
|
|
</section> |
| 2082 |
|
|
|
| 2083 |
|
|
</section> |
| 2084 |
|
|
|
| 2085 |
|
|
<section id="collaborative-maint"> |
| 2086 |
|
|
<title>Collaborative maintenance</title> |
| 2087 |
|
|
<para> |
| 2088 |
|
|
Collaborative maintenance is a term describing the sharing of Debian package |
| 2089 |
|
|
maintenance duties by several people. This collaboration is almost always a |
| 2090 |
|
|
good idea, since it generally results in higher quality and faster bug fix |
| 2091 |
|
|
turnaround times. It is strongly recommended that packages with a priority of |
| 2092 |
|
|
<literal>Standard</literal> or which are part of the base set have |
| 2093 |
|
|
co-maintainers. |
| 2094 |
|
|
</para> |
| 2095 |
|
|
<para> |
| 2096 |
|
|
Generally there is a primary maintainer and one or more co-maintainers. The |
| 2097 |
|
|
primary maintainer is the person whose name is listed in the |
| 2098 |
|
|
<literal>Maintainer</literal> field of the <filename>debian/control</filename> |
| 2099 |
lucas |
5182 |
file. Co-maintainers are all the other maintainers, |
| 2100 |
|
|
usually listed in the <literal>Uploaders</literal> field of the |
| 2101 |
|
|
<filename>debian/control</filename> file. |
| 2102 |
debacle |
4902 |
</para> |
| 2103 |
|
|
<para> |
| 2104 |
|
|
In its most basic form, the process of adding a new co-maintainer is quite |
| 2105 |
|
|
easy: |
| 2106 |
|
|
</para> |
| 2107 |
|
|
<itemizedlist> |
| 2108 |
|
|
<listitem> |
| 2109 |
|
|
<para> |
| 2110 |
|
|
Setup the co-maintainer with access to the sources you build the package from. |
| 2111 |
|
|
Generally this implies you are using a network-capable version control system, |
| 2112 |
|
|
such as <command>CVS</command> or <command>Subversion</command>. Alioth (see |
| 2113 |
|
|
<xref linkend="alioth"/> ) provides such tools, amongst others. |
| 2114 |
|
|
</para> |
| 2115 |
|
|
</listitem> |
| 2116 |
|
|
<listitem> |
| 2117 |
|
|
<para> |
| 2118 |
|
|
Add the co-maintainer's correct maintainer name and address to the |
| 2119 |
lucas |
5183 |
<literal>Uploaders</literal> field in the first paragraph of the |
| 2120 |
debacle |
4902 |
<filename>debian/control</filename> file. |
| 2121 |
|
|
</para> |
| 2122 |
|
|
<screen> |
| 2123 |
debacle |
4910 |
Uploaders: John Buzz <jbuzz@debian.org>, Adam Rex <arex@debian.org> |
| 2124 |
debacle |
4902 |
</screen> |
| 2125 |
|
|
</listitem> |
| 2126 |
|
|
<listitem> |
| 2127 |
|
|
<para> |
| 2128 |
|
|
Using the PTS (<xref linkend="pkg-tracking-system"/> ), the co-maintainers |
| 2129 |
|
|
should subscribe themselves to the appropriate source package. |
| 2130 |
|
|
</para> |
| 2131 |
|
|
</listitem> |
| 2132 |
|
|
</itemizedlist> |
| 2133 |
|
|
<para> |
| 2134 |
|
|
Another form of collaborative maintenance is team maintenance, which is |
| 2135 |
|
|
recommended if you maintain several packages with the same group of developers. |
| 2136 |
|
|
In that case, the Maintainer and Uploaders field of each package must be |
| 2137 |
|
|
managed with care. It is recommended to choose between one of the two |
| 2138 |
|
|
following schemes: |
| 2139 |
|
|
</para> |
| 2140 |
|
|
<orderedlist numeration="arabic"> |
| 2141 |
|
|
<listitem> |
| 2142 |
|
|
<para> |
| 2143 |
|
|
Put the team member mainly responsible for the package in the Maintainer field. |
| 2144 |
|
|
In the Uploaders, put the mailing list address, and the team members who care |
| 2145 |
|
|
for the package. |
| 2146 |
|
|
</para> |
| 2147 |
|
|
</listitem> |
| 2148 |
|
|
<listitem> |
| 2149 |
|
|
<para> |
| 2150 |
|
|
Put the mailing list address in the Maintainer field. In the Uploaders field, |
| 2151 |
|
|
put the team members who care for the package. In this case, you must make |
| 2152 |
|
|
sure the mailing list accept bug reports without any human interaction (like |
| 2153 |
|
|
moderation for non-subscribers). |
| 2154 |
|
|
</para> |
| 2155 |
|
|
</listitem> |
| 2156 |
|
|
</orderedlist> |
| 2157 |
|
|
<para> |
| 2158 |
|
|
In any case, it is a bad idea to automatically put all team members in the |
| 2159 |
|
|
Uploaders field. It clutters the Developer's Package Overview listing (see |
| 2160 |
|
|
<xref linkend="ddpo"/> ) with packages one doesn't really care for, and creates |
| 2161 |
|
|
a false sense of good maintenance. |
| 2162 |
|
|
</para> |
| 2163 |
|
|
</section> |
| 2164 |
|
|
|
| 2165 |
|
|
<section id="testing"> |
| 2166 |
|
|
<title>The testing distribution</title> |
| 2167 |
|
|
<section id="testing-basics"> |
| 2168 |
|
|
<title>Basics</title> |
| 2169 |
|
|
<para> |
| 2170 |
|
|
Packages are usually installed into the `testing' distribution after they have |
| 2171 |
|
|
undergone some degree of testing in unstable. |
| 2172 |
|
|
</para> |
| 2173 |
|
|
<para> |
| 2174 |
|
|
They must be in sync on all architectures and mustn't have dependencies that |
| 2175 |
|
|
make them uninstallable; they also have to have generally no known |
| 2176 |
|
|
release-critical bugs at the time they're installed into testing. This way, |
| 2177 |
|
|
`testing' should always be close to being a release candidate. Please see |
| 2178 |
|
|
below for details. |
| 2179 |
|
|
</para> |
| 2180 |
|
|
</section> |
| 2181 |
|
|
|
| 2182 |
|
|
<section id="testing-unstable"> |
| 2183 |
|
|
<title>Updates from unstable</title> |
| 2184 |
|
|
<para> |
| 2185 |
|
|
The scripts that update the <emphasis>testing</emphasis> distribution are run |
| 2186 |
|
|
each day after the installation of the updated packages; these scripts are |
| 2187 |
|
|
called <emphasis>britney</emphasis>. They generate the |
| 2188 |
|
|
<filename>Packages</filename> files for the <emphasis>testing</emphasis> |
| 2189 |
|
|
distribution, but they do so in an intelligent manner; they try to avoid any |
| 2190 |
|
|
inconsistency and to use only non-buggy packages. |
| 2191 |
|
|
</para> |
| 2192 |
|
|
<para> |
| 2193 |
|
|
The inclusion of a package from <emphasis>unstable</emphasis> is conditional on |
| 2194 |
|
|
the following: |
| 2195 |
|
|
</para> |
| 2196 |
|
|
<itemizedlist> |
| 2197 |
|
|
<listitem> |
| 2198 |
|
|
<para> |
| 2199 |
|
|
The package must have been available in <emphasis>unstable</emphasis> for 2, 5 |
| 2200 |
|
|
or 10 days, depending on the urgency (high, medium or low). Please note that |
| 2201 |
|
|
the urgency is sticky, meaning that the highest urgency uploaded since the |
| 2202 |
|
|
previous testing transition is taken into account. Those delays may be doubled |
| 2203 |
|
|
during a freeze, or testing transitions may be switched off altogether; |
| 2204 |
|
|
</para> |
| 2205 |
|
|
</listitem> |
| 2206 |
|
|
<listitem> |
| 2207 |
|
|
<para> |
| 2208 |
lucas |
5179 |
It must not have new release-critical bugs (RC bugs affecting the version |
| 2209 |
|
|
available in <emphasis>unstable</emphasis>, but not affecting the version in |
| 2210 |
|
|
<emphasis>testing</emphasis>); |
| 2211 |
debacle |
4902 |
</para> |
| 2212 |
|
|
</listitem> |
| 2213 |
|
|
<listitem> |
| 2214 |
|
|
<para> |
| 2215 |
|
|
It must be available on all architectures on which it has previously been built |
| 2216 |
|
|
in unstable. <xref linkend="madison"/> may be of interest to check that |
| 2217 |
|
|
information; |
| 2218 |
|
|
</para> |
| 2219 |
|
|
</listitem> |
| 2220 |
|
|
<listitem> |
| 2221 |
|
|
<para> |
| 2222 |
|
|
It must not break any dependency of a package which is already available in |
| 2223 |
|
|
<emphasis>testing</emphasis>; |
| 2224 |
|
|
</para> |
| 2225 |
|
|
</listitem> |
| 2226 |
|
|
<listitem> |
| 2227 |
|
|
<para> |
| 2228 |
|
|
The packages on which it depends must either be available in |
| 2229 |
|
|
<emphasis>testing</emphasis> or they must be accepted into |
| 2230 |
|
|
<emphasis>testing</emphasis> at the same time (and they will be if they fulfill |
| 2231 |
|
|
all the necessary criteria); |
| 2232 |
|
|
</para> |
| 2233 |
|
|
</listitem> |
| 2234 |
|
|
</itemizedlist> |
| 2235 |
|
|
<para> |
| 2236 |
|
|
To find out whether a package is progressing into testing or not, see the |
| 2237 |
|
|
testing script output on the <ulink |
| 2238 |
debacle |
4911 |
url="&url-testing-maint;">web page of the testing |
| 2239 |
debacle |
4902 |
distribution</ulink>, or use the program <command>grep-excuses</command> which |
| 2240 |
|
|
is in the <systemitem role="package">devscripts</systemitem> package. This |
| 2241 |
|
|
utility can easily be used in a <citerefentry> |
| 2242 |
|
|
<refentrytitle>crontab</refentrytitle> <manvolnum>5</manvolnum> </citerefentry> |
| 2243 |
|
|
to keep yourself informed of the progression of your packages into |
| 2244 |
|
|
<emphasis>testing</emphasis>. |
| 2245 |
|
|
</para> |
| 2246 |
|
|
<para> |
| 2247 |
|
|
The <filename>update_excuses</filename> file does not always give the precise |
| 2248 |
|
|
reason why the package is refused; you may have to find it on your own by |
| 2249 |
|
|
looking for what would break with the inclusion of the package. The <ulink |
| 2250 |
debacle |
4911 |
url="&url-testing-maint;">testing web page</ulink> gives some |
| 2251 |
debacle |
4902 |
more information about the usual problems which may be causing such troubles. |
| 2252 |
|
|
</para> |
| 2253 |
|
|
<para> |
| 2254 |
|
|
Sometimes, some packages never enter <emphasis>testing</emphasis> because the |
| 2255 |
|
|
set of inter-relationship is too complicated and cannot be sorted out by the |
| 2256 |
|
|
scripts. See below for details. |
| 2257 |
|
|
</para> |
| 2258 |
|
|
<para> |
| 2259 |
|
|
Some further dependency analysis is shown on <ulink |
| 2260 |
|
|
url="http://bjorn.haxx.se/debian/"></ulink> — but be warned, this page also |
| 2261 |
|
|
shows build dependencies which are not considered by britney. |
| 2262 |
|
|
</para> |
| 2263 |
|
|
<section id="outdated"> |
| 2264 |
|
|
<title>out-of-date</title> |
| 2265 |
|
|
<para> |
| 2266 |
debacle |
4906 |
<!-- FIXME: better rename this file than document rampant professionalism? --> |
| 2267 |
debacle |
4902 |
For the testing migration script, outdated means: There are different versions |
| 2268 |
|
|
in unstable for the release architectures (except for the architectures in |
| 2269 |
|
|
fuckedarches; fuckedarches is a list of architectures that don't keep up (in |
| 2270 |
|
|
update_out.py), but currently, it's empty). outdated has nothing whatsoever to |
| 2271 |
|
|
do with the architectures this package has in testing. |
| 2272 |
|
|
</para> |
| 2273 |
|
|
<para> |
| 2274 |
|
|
Consider this example: |
| 2275 |
|
|
</para> |
| 2276 |
|
|
<informaltable pgwide="1"> |
| 2277 |
|
|
<tgroup cols="3"> |
| 2278 |
|
|
<thead> |
| 2279 |
|
|
<row> |
| 2280 |
|
|
<entry></entry> |
| 2281 |
|
|
<entry>alpha</entry> |
| 2282 |
|
|
<entry>arm</entry> |
| 2283 |
|
|
</row> |
| 2284 |
|
|
</thead> |
| 2285 |
|
|
<tbody> |
| 2286 |
|
|
<row> |
| 2287 |
|
|
<entry>testing</entry> |
| 2288 |
|
|
<entry>1</entry> |
| 2289 |
|
|
<entry>-</entry> |
| 2290 |
|
|
</row> |
| 2291 |
|
|
<row> |
| 2292 |
|
|
<entry>unstable</entry> |
| 2293 |
|
|
<entry>1</entry> |
| 2294 |
|
|
<entry>2</entry> |
| 2295 |
|
|
</row> |
| 2296 |
|
|
</tbody> |
| 2297 |
|
|
</tgroup> |
| 2298 |
|
|
</informaltable> |
| 2299 |
|
|
<para> |
| 2300 |
|
|
The package is out of date on alpha in unstable, and will not go to testing. |
| 2301 |
|
|
And removing foo from testing would not help at all, the package is still out |
| 2302 |
|
|
of date on alpha, and will not propagate to testing. |
| 2303 |
|
|
</para> |
| 2304 |
|
|
<para> |
| 2305 |
|
|
However, if ftp-master removes a package in unstable (here on arm): |
| 2306 |
|
|
</para> |
| 2307 |
|
|
<informaltable pgwide="1"> |
| 2308 |
|
|
<tgroup cols="4"> |
| 2309 |
|
|
<thead> |
| 2310 |
|
|
<row> |
| 2311 |
|
|
<entry></entry> |
| 2312 |
|
|
<entry>alpha</entry> |
| 2313 |
|
|
<entry>arm</entry> |
| 2314 |
|
|
<entry>hurd-i386</entry> |
| 2315 |
|
|
</row> |
| 2316 |
|
|
</thead> |
| 2317 |
|
|
<tbody> |
| 2318 |
|
|
<row> |
| 2319 |
|
|
<entry>testing</entry> |
| 2320 |
|
|
<entry>1</entry> |
| 2321 |
|
|
<entry>1</entry> |
| 2322 |
|
|
<entry>-</entry> |
| 2323 |
|
|
</row> |
| 2324 |
|
|
<row> |
| 2325 |
|
|
<entry>unstable</entry> |
| 2326 |
|
|
<entry>2</entry> |
| 2327 |
|
|
<entry>-</entry> |
| 2328 |
|
|
<entry>1</entry> |
| 2329 |
|
|
</row> |
| 2330 |
|
|
</tbody> |
| 2331 |
|
|
</tgroup> |
| 2332 |
|
|
</informaltable> |
| 2333 |
|
|
<para> |
| 2334 |
|
|
In this case, the package is up to date on all release architectures in |
| 2335 |
|
|
unstable (and the extra hurd-i386 doesn't matter, as it's not a release |
| 2336 |
|
|
architecture). |
| 2337 |
|
|
</para> |
| 2338 |
|
|
<para> |
| 2339 |
|
|
Sometimes, the question is raised if it is possible to allow packages in that |
| 2340 |
|
|
are not yet built on all architectures: No. Just plainly no. (Except if you |
| 2341 |
|
|
maintain glibc or so.) |
| 2342 |
|
|
</para> |
| 2343 |
|
|
</section> |
| 2344 |
|
|
|
| 2345 |
|
|
<section id="removals"> |
| 2346 |
|
|
<title>Removals from testing</title> |
| 2347 |
|
|
<para> |
| 2348 |
|
|
Sometimes, a package is removed to allow another package in: This happens only |
| 2349 |
|
|
to allow <emphasis>another</emphasis> package to go in if it's ready in every |
| 2350 |
|
|
other sense. Suppose e.g. that <emphasis>a</emphasis> cannot be installed |
| 2351 |
|
|
with the new version of <emphasis>b</emphasis>; then <emphasis>a</emphasis> may |
| 2352 |
|
|
be removed to allow <emphasis>b</emphasis> in. |
| 2353 |
|
|
</para> |
| 2354 |
|
|
<para> |
| 2355 |
|
|
Of course, there is another reason to remove a package from testing: It's just |
| 2356 |
|
|
too buggy (and having a single RC-bug is enough to be in this state). |
| 2357 |
|
|
</para> |
| 2358 |
|
|
<para> |
| 2359 |
|
|
Furthermore, if a package has been removed from unstable, and no package in |
| 2360 |
|
|
testing depends on it any more, then it will automatically be removed. |
| 2361 |
|
|
</para> |
| 2362 |
|
|
</section> |
| 2363 |
|
|
|
| 2364 |
|
|
<section id="circular"> |
| 2365 |
|
|
<title>circular dependencies</title> |
| 2366 |
|
|
<para> |
| 2367 |
|
|
A situation which is not handled very well by britney is if package |
| 2368 |
|
|
<emphasis>a</emphasis> depends on the new version of package |
| 2369 |
|
|
<emphasis>b</emphasis>, and vice versa. |
| 2370 |
|
|
</para> |
| 2371 |
|
|
<para> |
| 2372 |
|
|
An example of this is: |
| 2373 |
|
|
</para> |
| 2374 |
|
|
<informaltable pgwide="1"> |
| 2375 |
|
|
<tgroup cols="3"> |
| 2376 |
|
|
<thead> |
| 2377 |
|
|
<row> |
| 2378 |
|
|
<entry></entry> |
| 2379 |
|
|
<entry>testing</entry> |
| 2380 |
|
|
<entry>unstable</entry> |
| 2381 |
|
|
</row> |
| 2382 |
|
|
</thead> |
| 2383 |
|
|
<tbody> |
| 2384 |
|
|
<row> |
| 2385 |
|
|
<entry>a</entry> |
| 2386 |
|
|
<entry>1; depends: b=1</entry> |
| 2387 |
|
|
<entry>2; depends: b=2</entry> |
| 2388 |
|
|
</row> |
| 2389 |
|
|
<row> |
| 2390 |
|
|
<entry>b</entry> |
| 2391 |
|
|
<entry>1; depends: a=1</entry> |
| 2392 |
|
|
<entry>2; depends: a=2</entry> |
| 2393 |
|
|
</row> |
| 2394 |
|
|
</tbody> |
| 2395 |
|
|
</tgroup> |
| 2396 |
|
|
</informaltable> |
| 2397 |
|
|
<para> |
| 2398 |
|
|
Neither package <emphasis>a</emphasis> nor package <emphasis>b</emphasis> is |
| 2399 |
|
|
considered for update. |
| 2400 |
|
|
</para> |
| 2401 |
|
|
<para> |
| 2402 |
|
|
Currently, this requires some manual hinting from the release team. Please |
| 2403 |
debacle |
4911 |
contact them by sending mail to &email-debian-release; if this |
| 2404 |
|
|
happens to one of your packages. |
| 2405 |
debacle |
4902 |
</para> |
| 2406 |
|
|
</section> |
| 2407 |
|
|
|
| 2408 |
|
|
<section id="s5.13.2.4"> |
| 2409 |
|
|
<title>influence of package in testing</title> |
| 2410 |
|
|
<para> |
| 2411 |
|
|
Generally, there is nothing that the status of a package in testing means for |
| 2412 |
|
|
transition of the next version from unstable to testing, with two exceptions: |
| 2413 |
|
|
If the RC-bugginess of the package goes down, it may go in even if it is still |
| 2414 |
|
|
RC-buggy. The second exception is if the version of the package in testing is |
| 2415 |
|
|
out of sync on the different arches: Then any arch might just upgrade to the |
| 2416 |
|
|
version of the source package; however, this can happen only if the package was |
| 2417 |
|
|
previously forced through, the arch is in fuckedarches, or there was no binary |
| 2418 |
|
|
package of that arch present in unstable at all during the testing migration. |
| 2419 |
|
|
</para> |
| 2420 |
|
|
<para> |
| 2421 |
|
|
In summary this means: The only influence that a package being in testing has |
| 2422 |
|
|
on a new version of the same package is that the new version might go in |
| 2423 |
|
|
easier. |
| 2424 |
|
|
</para> |
| 2425 |
|
|
</section> |
| 2426 |
|
|
|
| 2427 |
|
|
<section id="details"> |
| 2428 |
|
|
<title>details</title> |
| 2429 |
|
|
<para> |
| 2430 |
|
|
If you are interested in details, this is how britney works: |
| 2431 |
|
|
</para> |
| 2432 |
|
|
<para> |
| 2433 |
|
|
The packages are looked at to determine whether they are valid candidates. |
| 2434 |
|
|
This gives the update excuses. The most common reasons why a package is not |
| 2435 |
|
|
considered are too young, RC-bugginess, and out of date on some arches. For |
| 2436 |
|
|
this part of britney, the release managers have hammers of various sizes to |
| 2437 |
|
|
force britney to consider a package. (Also, the base freeze is coded in that |
| 2438 |
|
|
part of britney.) (There is a similar thing for binary-only updates, but this |
| 2439 |
|
|
is not described here. If you're interested in that, please peruse the code.) |
| 2440 |
|
|
</para> |
| 2441 |
|
|
<para> |
| 2442 |
|
|
Now, the more complex part happens: Britney tries to update testing with the |
| 2443 |
|
|
valid candidates; first, each package alone, and then larger and even larger |
| 2444 |
|
|
sets of packages together. Each try is accepted if testing is not more |
| 2445 |
|
|
uninstallable after the update than before. (Before and after this part, some |
| 2446 |
|
|
hints are processed; but as only release masters can hint, this is probably not |
| 2447 |
|
|
so important for you.) |
| 2448 |
|
|
</para> |
| 2449 |
|
|
<para> |
| 2450 |
|
|
If you want to see more details, you can look it up on |
| 2451 |
debacle |
4910 |
merkel:/org/&ftp-debian-org;/testing/update_out/ (or there in |
| 2452 |
debacle |
4902 |
~aba/testing/update_out to see a setup with a smaller packages file). Via web, |
| 2453 |
|
|
it's at <ulink |
| 2454 |
debacle |
4910 |
url="http://&ftp-master-host;/testing/update_out_code/"></ulink> |
| 2455 |
debacle |
4902 |
</para> |
| 2456 |
|
|
<para> |
| 2457 |
|
|
The hints are available via <ulink |
| 2458 |
debacle |
4910 |
url="http://&ftp-master-host;/testing/hints/"></ulink>. |
| 2459 |
debacle |
4902 |
</para> |
| 2460 |
|
|
</section> |
| 2461 |
|
|
|
| 2462 |
|
|
</section> |
| 2463 |
|
|
|
| 2464 |
|
|
<section id="t-p-u"> |
| 2465 |
|
|
<title>Direct updates to testing</title> |
| 2466 |
|
|
<para> |
| 2467 |
|
|
The testing distribution is fed with packages from unstable according to the |
| 2468 |
|
|
rules explained above. However, in some cases, it is necessary to upload |
| 2469 |
|
|
packages built only for testing. For that, you may want to upload to |
| 2470 |
|
|
<emphasis>testing-proposed-updates</emphasis>. |
| 2471 |
|
|
</para> |
| 2472 |
|
|
<para> |
| 2473 |
|
|
Keep in mind that packages uploaded there are not automatically processed, they |
| 2474 |
|
|
have to go through the hands of the release manager. So you'd better have a |
| 2475 |
|
|
good reason to upload there. In order to know what a good reason is in the |
| 2476 |
|
|
release managers' eyes, you should read the instructions that they regularly |
| 2477 |
debacle |
4911 |
give on &email-debian-devel-announce;. |
| 2478 |
debacle |
4902 |
</para> |
| 2479 |
|
|
<para> |
| 2480 |
|
|
You should not upload to <emphasis>testing-proposed-updates</emphasis> when you |
| 2481 |
|
|
can update your packages through <emphasis>unstable</emphasis>. If you can't |
| 2482 |
|
|
(for example because you have a newer development version in unstable), you may |
| 2483 |
|
|
use this facility, but it is recommended that you ask for authorization from |
| 2484 |
|
|
the release manager first. Even if a package is frozen, updates through |
| 2485 |
|
|
unstable are possible, if the upload via unstable does not pull in any new |
| 2486 |
|
|
dependencies. |
| 2487 |
|
|
</para> |
| 2488 |
|
|
<para> |
| 2489 |
|
|
Version numbers are usually selected by adding the codename of the testing |
| 2490 |
|
|
distribution and a running number, like 1.2sarge1 for the first upload through |
| 2491 |
|
|
testing-proposed-updates of package version 1.2. |
| 2492 |
|
|
</para> |
| 2493 |
|
|
<para> |
| 2494 |
|
|
Please make sure you didn't miss any of these items in your upload: |
| 2495 |
|
|
</para> |
| 2496 |
|
|
<itemizedlist> |
| 2497 |
|
|
<listitem> |
| 2498 |
|
|
<para> |
| 2499 |
|
|
Make sure that your package really needs to go through |
| 2500 |
|
|
<emphasis>testing-proposed-updates</emphasis>, and can't go through unstable; |
| 2501 |
|
|
</para> |
| 2502 |
|
|
</listitem> |
| 2503 |
|
|
<listitem> |
| 2504 |
|
|
<para> |
| 2505 |
|
|
Make sure that you included only the minimal amount of changes; |
| 2506 |
|
|
</para> |
| 2507 |
|
|
</listitem> |
| 2508 |
|
|
<listitem> |
| 2509 |
|
|
<para> |
| 2510 |
|
|
Make sure that you included an appropriate explanation in the changelog; |
| 2511 |
|
|
</para> |
| 2512 |
|
|
</listitem> |
| 2513 |
|
|
<listitem> |
| 2514 |
|
|
<para> |
| 2515 |
|
|
Make sure that you've written <emphasis>testing</emphasis> or |
| 2516 |
|
|
<emphasis>testing-proposed-updates</emphasis> into your target distribution; |
| 2517 |
|
|
</para> |
| 2518 |
|
|
</listitem> |
| 2519 |
|
|
<listitem> |
| 2520 |
|
|
<para> |
| 2521 |
|
|
Make sure that you've built and tested your package in |
| 2522 |
|
|
<emphasis>testing</emphasis>, not in <emphasis>unstable</emphasis>; |
| 2523 |
|
|
</para> |
| 2524 |
|
|
</listitem> |
| 2525 |
|
|
<listitem> |
| 2526 |
|
|
<para> |
| 2527 |
|
|
Make sure that your version number is higher than the version in |
| 2528 |
|
|
<emphasis>testing</emphasis> and <emphasis>testing-proposed-updates</emphasis>, |
| 2529 |
|
|
and lower than in <emphasis>unstable</emphasis>; |
| 2530 |
|
|
</para> |
| 2531 |
|
|
</listitem> |
| 2532 |
|
|
<listitem> |
| 2533 |
|
|
<para> |
| 2534 |
|
|
After uploading and successful build on all platforms, contact the release team |
| 2535 |
debacle |
4911 |
at &email-debian-release; and ask them to approve your upload. |
| 2536 |
debacle |
4902 |
</para> |
| 2537 |
|
|
</listitem> |
| 2538 |
|
|
</itemizedlist> |
| 2539 |
|
|
</section> |
| 2540 |
|
|
|
| 2541 |
|
|
<section id="faq"> |
| 2542 |
|
|
<title>Frequently asked questions</title> |
| 2543 |
|
|
<section id="rc"> |
| 2544 |
|
|
<title>What are release-critical bugs, and how do they get counted?</title> |
| 2545 |
|
|
<para> |
| 2546 |
|
|
All bugs of some higher severities are by default considered release-critical; |
| 2547 |
|
|
currently, these are critical, grave, and serious bugs. |
| 2548 |
|
|
</para> |
| 2549 |
|
|
<para> |
| 2550 |
|
|
Such bugs are presumed to have an impact on the chances that the package will |
| 2551 |
|
|
be released with the stable release of Debian: in general, if a package has |
| 2552 |
|
|
open release-critical bugs filed on it, it won't get into testing, and |
| 2553 |
|
|
consequently won't be released in stable. |
| 2554 |
|
|
</para> |
| 2555 |
|
|
<para> |
| 2556 |
|
|
The unstable bug count are all release-critical bugs without either any |
| 2557 |
|
|
release-tag (such as potato, woody) or with release-tag sid; also, only if they |
| 2558 |
|
|
are neither fixed nor set to sarge-ignore. The testing bug count for a package |
| 2559 |
|
|
is considered to be roughly the bug count of unstable count at the last point |
| 2560 |
|
|
when the testing version equalled the unstable version. |
| 2561 |
|
|
</para> |
| 2562 |
|
|
<para> |
| 2563 |
|
|
This will change post-sarge, as soon as we have versions in the bug tracking |
| 2564 |
|
|
system. |
| 2565 |
|
|
</para> |
| 2566 |
|
|
</section> |
| 2567 |
|
|
|
| 2568 |
|
|
<section id="s5.13.4.2"> |
| 2569 |
|
|
<title>How could installing a package into testing possibly break other packages?</title> |
| 2570 |
|
|
<para> |
| 2571 |
|
|
The structure of the distribution archives is such that they can only contain |
| 2572 |
|
|
one version of a package; a package is defined by its name. So when the source |
| 2573 |
|
|
package acmefoo is installed into testing, along with its binary packages |
| 2574 |
|
|
acme-foo-bin, acme-bar-bin, libacme-foo1 and libacme-foo-dev, the old version |
| 2575 |
|
|
is removed. |
| 2576 |
|
|
</para> |
| 2577 |
|
|
<para> |
| 2578 |
|
|
However, the old version may have provided a binary package with an old soname |
| 2579 |
|
|
of a library, such as libacme-foo0. Removing the old acmefoo will remove |
| 2580 |
|
|
libacme-foo0, which will break any packages which depend on it. |
| 2581 |
|
|
</para> |
| 2582 |
|
|
<para> |
| 2583 |
|
|
Evidently, this mainly affects packages which provide changing sets of binary |
| 2584 |
|
|
packages in different versions (in turn, mainly libraries). However, it will |
| 2585 |
|
|
also affect packages upon which versioned dependencies have been declared of |
| 2586 |
|
|
the ==, <=, or << varieties. |
| 2587 |
|
|
</para> |
| 2588 |
|
|
<para> |
| 2589 |
|
|
When the set of binary packages provided by a source package change in this |
| 2590 |
|
|
way, all the packages that depended on the old binaries will have to be updated |
| 2591 |
|
|
to depend on the new binaries instead. Because installing such a source |
| 2592 |
|
|
package into testing breaks all the packages that depended on it in testing, |
| 2593 |
|
|
some care has to be taken now: all the depending packages must be updated and |
| 2594 |
|
|
ready to be installed themselves so that they won't be broken, and, once |
| 2595 |
|
|
everything is ready, manual intervention by the release manager or an assistant |
| 2596 |
|
|
is normally required. |
| 2597 |
|
|
</para> |
| 2598 |
|
|
<para> |
| 2599 |
|
|
If you are having problems with complicated groups of packages like this, |
| 2600 |
|
|
contact debian-devel or debian-release for help. |
| 2601 |
|
|
</para> |
| 2602 |
|
|
</section> |
| 2603 |
|
|
|
| 2604 |
|
|
</section> |
| 2605 |
|
|
|
| 2606 |
|
|
</section> |
| 2607 |
|
|
|
| 2608 |
|
|
</chapter> |
| 2609 |
|
|
|