# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2014-07-30 17:53+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: Content of: #: best-pkging-practices.dbk:7 msgid "Best Packaging Practices" msgstr "" #. type: Content of: <chapter><para> #: best-pkging-practices.dbk:9 msgid "" "Debian's quality is largely due to the <ulink " "url=\"&url-debian-policy;\">Debian Policy</ulink>, which defines explicit " "baseline requirements which all Debian packages must fulfill. Yet there is " "also a shared history of experience which goes beyond the Debian Policy, an " "accumulation of years of experience in packaging. Many very talented people " "have created great tools, tools which help you, the Debian maintainer, " "create and maintain excellent packages." msgstr "" #. type: Content of: <chapter><para> #: best-pkging-practices.dbk:18 msgid "" "This chapter provides some best practices for Debian developers. All " "recommendations are merely that, and are not requirements or policy. These " "are just some subjective hints, advice and pointers collected from Debian " "developers. Feel free to pick and choose whatever works best for you." msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:24 msgid "Best practices for <filename>debian/rules</filename>" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:26 msgid "" "The following recommendations apply to the <filename>debian/rules</filename> " "file. Since <filename>debian/rules</filename> controls the build process " "and selects the files which go into the package (directly or indirectly), " "it's usually the file maintainers spend the most time on." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:32 msgid "Helper scripts" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:34 msgid "" "The rationale for using helper scripts in <filename>debian/rules</filename> " "is that they let maintainers use and share common logic among many " "packages. Take for instance the question of installing menu entries: you " "need to put the file into <filename>/usr/share/menu</filename> (or " "<filename>/usr/lib/menu</filename> for executable binary menufiles, if this " "is needed), and add commands to the maintainer scripts to register and " "unregister the menu entries. Since this is a very common thing for packages " "to do, why should each maintainer rewrite all this on their own, sometimes " "with bugs? Also, supposing the menu directory changed, every package would " "have to be changed." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:45 msgid "" "Helper scripts take care of these issues. Assuming you comply with the " "conventions expected by the helper script, the helper takes care of all the " "details. Changes in policy can be made in the helper script; then packages " "just need to be rebuilt with the new version of the helper and no other " "changes." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:52 msgid "" "<xref linkend=\"tools\"/> contains a couple of different helpers. The most " "common and best (in our opinion) helper system is <systemitem " "role=\"package\">debhelper</systemitem>. Previous helper systems, such as " "<systemitem role=\"package\">debmake</systemitem>, were monolithic: you " "couldn't pick and choose which part of the helper you found useful, but had " "to use the helper to do everything. <systemitem " "role=\"package\">debhelper</systemitem>, however, is a number of separate " "little <command>dh_*</command> programs. For instance, " "<command>dh_installman</command> installs and compresses man pages, " "<command>dh_installmenu</command> installs menu files, and so on. Thus, it " "offers enough flexibility to be able to use the little helper scripts, where " "useful, in conjunction with hand-crafted commands in " "<filename>debian/rules</filename>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:66 msgid "" "You can get started with <systemitem role=\"package\">debhelper</systemitem> " "by reading <citerefentry> <refentrytitle>debhelper</refentrytitle> " "<manvolnum>1</manvolnum> </citerefentry>, and looking at the examples that " "come with the package. <command>dh_make</command>, from the <systemitem " "role=\"package\">dh-make</systemitem> package (see <xref " "linkend=\"dh-make\"/>), can be used to convert a vanilla source package to a " "<systemitem role=\"package\">debhelper</systemitem>ized package. This " "shortcut, though, should not convince you that you do not need to bother " "understanding the individual <command>dh_*</command> helpers. If you are " "going to use a helper, you do need to take the time to learn to use that " "helper, to learn its expectations and behavior." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:81 msgid "Separating your patches into multiple files" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:83 msgid "" "Big, complex packages may have many bugs that you need to deal with. If you " "correct a number of bugs directly in the source, and you're not careful, it " "can get hard to differentiate the various patches that you applied. It can " "get quite messy when you have to update the package to a new upstream " "version which integrates some of the fixes (but not all). You can't take " "the total set of diffs (e.g., from <filename>.diff.gz</filename>) and work " "out which patch sets to back out as a unit as bugs are fixed upstream." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:92 msgid "" "Fortunately, with the source format “3.0 (quilt)” it is now possible to keep " "patches separate without having to modify <filename>debian/rules</filename> " "to setup a patch system. Patches are stored in " "<filename>debian/patches/</filename> and when the source package is unpacked " "patches listed in <filename>debian/patches/series</filename> are " "automatically applied. As the name implies, patches can be managed with " "<command>quilt</command>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:100 msgid "" "When using the older source “1.0”, it's also possible to separate patches " "but a dedicated patch system must be used: the patch files are shipped " "within the Debian patch file (<filename>.diff.gz</filename>), usually within " "the <filename>debian/</filename> directory. The only difference is that they " "aren't applied immediately by <command>dpkg-source</command>, but by the " "<literal>build</literal> rule of <filename>debian/rules</filename>, through " "a dependency on the <literal>patch</literal> rule. Conversely, they are " "reverted in the <literal>clean</literal> rule, through a dependency on the " "<literal>unpatch</literal> rule." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:112 msgid "" "<command>quilt</command> is the recommended tool for this. It does all of " "the above, and also allows to manage patch series. See the <systemitem " "role=\"package\">quilt</systemitem> package for more information." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:118 msgid "" "There are other tools to manage patches, like <command>dpatch</command>, and " "the patch system integrated with <systemitem " "role=\"package\">cdbs</systemitem>." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:125 msgid "Multiple binary packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:127 msgid "" "A single source package will often build several binary packages, either to " "provide several flavors of the same software (e.g., the <systemitem " "role=\"package\">vim</systemitem> source package) or to make several small " "packages instead of a big one (e.g., so the user can install only the subset " "needed, and thus save some disk space)." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:134 msgid "" "The second case can be easily managed in <filename>debian/rules</filename>. " "You just need to move the appropriate files from the build directory into " "the package's temporary trees. You can do this using " "<command>install</command> or <command>dh_install</command> from <systemitem " "role=\"package\">debhelper</systemitem>. Be sure to check the different " "permutations of the various packages, ensuring that you have the " "inter-package dependencies set right in <filename>debian/control</filename>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:143 msgid "" "The first case is a bit more difficult since it involves multiple recompiles " "of the same software but with different configuration options. The " "<systemitem role=\"package\">vim</systemitem> source package is an example " "of how to manage this using an hand-crafted " "<filename>debian/rules</filename> file." msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:155 msgid "Best practices for <filename>debian/control</filename>" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:157 msgid "" "The following practices are relevant to the " "<filename>debian/control</filename> file. They supplement the <ulink " "url=\"&url-debian-policy;ch-binary.html#s-descriptions\">Policy on package " "descriptions</ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:163 msgid "" "The description of the package, as defined by the corresponding field in the " "<filename>control</filename> file, contains both the package synopsis and " "the long description for the package. <xref linkend=\"bpp-desc-basics\"/> " "describes common guidelines for both parts of the package description. " "Following that, <xref linkend=\"bpp-pkg-synopsis\"/> provides guidelines " "specific to the synopsis, and <xref linkend=\"bpp-pkg-desc\"/> contains " "guidelines specific to the description." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:172 msgid "General guidelines for package descriptions" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:174 msgid "" "The package description should be written for the average likely user, the " "average person who will use and benefit from the package. For instance, " "development packages are for developers, and can be technical in their " "language. More general-purpose applications, such as editors, should be " "written for a less technical user." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:181 msgid "" "Our review of package descriptions lead us to conclude that most package " "descriptions are technical, that is, are not written to make sense for " "non-technical users. Unless your package really is only for technical " "users, this is a problem." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:187 msgid "" "How do you write for non-technical users? Avoid jargon. Avoid referring to " "other applications or frameworks that the user might not be familiar with — " "GNOME or KDE is fine, since users are probably familiar with these terms, " "but GTK+ is probably not. Try not to assume any knowledge at all. If you " "must use technical terms, introduce them." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:194 msgid "" "Be objective. Package descriptions are not the place for advocating your " "package, no matter how much you love it. Remember that the reader may not " "care about the same things you care about." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:199 msgid "" "References to the names of any other software packages, protocol names, " "standards, or specifications should use their canonical forms, if one " "exists. For example, use X Window System, X11, or X; not X Windows, " "X-Windows, or X Window. Use GTK+, not GTK or gtk. Use GNOME, not Gnome. " "Use PostScript, not Postscript or postscript." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:206 msgid "" "If you are having problems writing your description, you may wish to send it " "along to &email-debian-l10n-english; and request feedback." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:212 msgid "The package synopsis, or short description" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:214 msgid "" "Policy says the synopsis line (the short description) must be concise, not " "repeating the package name, but also informative." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:218 msgid "" "The synopsis functions as a phrase describing the package, not a complete " "sentence, so sentential punctuation is inappropriate: it does not need extra " "capital letters or a final period (full stop). It should also omit any " "initial indefinite or definite article — \"a\", \"an\", or \"the\". Thus for " "instance:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:224 #, no-wrap msgid "" "Package: libeg0\n" "Description: exemplification support library\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:228 msgid "" "Technically this is a noun phrase minus articles, as opposed to a verb " "phrase. A good heuristic is that it should be possible to substitute the " "package <replaceable>name</replaceable> and " "<replaceable>synopsis</replaceable> into this formula:" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:233 msgid "" "The package <replaceable>name</replaceable> provides {a,an,the,some} " "<replaceable>synopsis</replaceable>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:237 msgid "" "Sets of related packages may use an alternative scheme that divides the " "synopsis into two parts, the first a description of the whole suite and the " "second a summary of the package's role within it:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:242 #, no-wrap msgid "" "Package: eg-tools\n" "Description: simple exemplification system (utilities)\n" "\t\t\t \n" "Package: eg-doc\n" "Description: simple exemplification system - documentation\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:249 msgid "" "These synopses follow a modified formula. Where a package " "\"<replaceable>name</replaceable>\" has a synopsis " "\"<replaceable>suite</replaceable> (<replaceable>role</replaceable>)\" or " "\"<replaceable>suite</replaceable> - <replaceable>role</replaceable>\", the " "elements should be phrased so that they fit into the formula:" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:256 msgid "" "The package <replaceable>name</replaceable> provides {a,an,the} " "<replaceable>role</replaceable> for the <replaceable>suite</replaceable>." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:262 msgid "The long description" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:264 msgid "" "The long description is the primary information available to the user about " "a package before they install it. It should provide all the information " "needed to let the user decide whether to install the package. Assume that " "the user has already read the package synopsis." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:270 msgid "The long description should consist of full and complete sentences." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:273 msgid "" "The first paragraph of the long description should answer the following " "questions: what does the package do? what task does it help the user " "accomplish? It is important to describe this in a non-technical way, unless " "of course the audience for the package is necessarily technical." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:279 msgid "" "The following paragraphs should answer the following questions: Why do I as " "a user need this package? What other features does the package have? What " "outstanding features and deficiencies are there compared to other packages " "(e.g., if you need X, use Y instead)? Is this package related to other " "packages in some way that is not handled by the package manager (e.g., this " "is the client for the foo server)?" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:287 msgid "" "Be careful to avoid spelling and grammar mistakes. Ensure that you " "spell-check it. Both <command>ispell</command> and " "<command>aspell</command> have special modes for checking " "<filename>debian/control</filename> files:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:292 #, no-wrap msgid "ispell -d american -g debian/control\n" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:295 #, no-wrap msgid "aspell -d en -D -c debian/control\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:298 msgid "" "Users usually expect these questions to be answered in the package " "description:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:303 msgid "" "What does the package do? If it is an add-on to another package, then the " "short description of the package we are an add-on to should be put in here." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:309 msgid "" "Why should I want this package? This is related to the above, but not the " "same (this is a mail user agent; this is cool, fast, interfaces with PGP and " "LDAP and IMAP, has features X, Y, and Z)." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:316 msgid "" "If this package should not be installed directly, but is pulled in by " "another package, this should be mentioned." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:322 msgid "" "If the package is <literal>experimental</literal>, or there are other " "reasons it should not be used, if there are other packages that should be " "used instead, it should be here as well." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:329 msgid "" "How is this package different from the competition? Is it a better " "implementation? more features? different features? Why should I choose this " "package." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:342 msgid "Upstream home page" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:344 msgid "" "We recommend that you add the URL for the package's home page in the " "<literal>Homepage</literal> field of the <literal>Source</literal> section " "in <filename>debian/control</filename>. Adding this information in the " "package description itself is considered deprecated." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:352 msgid "Version Control System location" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:354 msgid "" "There are additional fields for the location of the Version Control System " "in <filename>debian/control</filename>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:358 msgid "Vcs-Browser" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:360 msgid "" "Value of this field should be a <literal>http://</literal> URL pointing to a " "web-browsable copy of the Version Control System repository used to maintain " "the given package, if available." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:365 msgid "" "The information is meant to be useful for the final user, willing to browse " "the latest work done on the package (e.g. when looking for the patch fixing " "a bug tagged as <literal>pending</literal> in the bug tracking system)." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:372 msgid "Vcs-*" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:374 msgid "" "Value of this field should be a string identifying unequivocally the " "location of the Version Control System repository used to maintain the given " "package, if available. <literal>*</literal> identify the Version Control " "System; currently the following systems are supported by the package " "tracking system: <literal>arch</literal>, <literal>bzr</literal> (Bazaar), " "<literal>cvs</literal>, <literal>darcs</literal>, <literal>git</literal>, " "<literal>hg</literal> (Mercurial), <literal>mtn</literal> (Monotone), " "<literal>svn</literal> (Subversion). It is allowed to specify different VCS " "fields for the same package: they will all be shown in the PTS web " "interface." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:385 msgid "" "The information is meant to be useful for a user knowledgeable in the given " "Version Control System and willing to build the current version of a package " "from the VCS sources. Other uses of this information might include " "automatic building of the latest VCS version of the given package. To this " "end the location pointed to by the field should better be version agnostic " "and point to the main branch (for VCSs supporting such a concept). Also, " "the location pointed to should be accessible to the final user; fulfilling " "this requirement might imply pointing to an anonymous access of the " "repository instead of pointing to an SSH-accessible version of the same." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:396 msgid "" "In the following example, an instance of the field for a Subversion " "repository of the <systemitem role=\"package\">vim</systemitem> package is " "shown. Note how the URL is in the <literal>svn://</literal> scheme (instead " "of <literal>svn+ssh://</literal>) and how it points to the " "<filename>trunk/</filename> branch. The use of the " "<literal>Vcs-Browser</literal> and <literal>Homepage</literal> fields " "described above is also shown." msgstr "" #. type: Content of: <chapter><section><section><section><screen> #: best-pkging-practices.dbk:405 #, no-wrap msgid "" " Source: vim\n" " Section: editors\n" " Priority: optional\n" " <snip>\n" " Vcs-Svn: svn://svn.debian.org/svn/pkg-vim/trunk/packages/vim\n" " Vcs-Browser: https://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim\n" " Homepage: http://www.vim.org\n" msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:420 msgid "Best practices for <filename>debian/changelog</filename>" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:422 msgid "" "The following practices supplement the <ulink " "url=\"&url-debian-policy;ch-docs.html#s-changelogs\">Policy on changelog " "files</ulink>." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:427 msgid "Writing useful changelog entries" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:429 msgid "" "The changelog entry for a package revision documents changes in that " "revision, and only them. Concentrate on describing significant and " "user-visible changes that were made since the last version." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:434 msgid "" "Focus on <emphasis>what</emphasis> was changed — who, how and when are " "usually less important. Having said that, remember to politely attribute " "people who have provided notable help in making the package (e.g., those who " "have sent in patches)." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:440 msgid "" "There's no need to elaborate the trivial and obvious changes. You can also " "aggregate several changes in one entry. On the other hand, don't be overly " "terse if you have undertaken a major change. Be especially clear if there " "are changes that affect the behaviour of the program. For further " "explanations, use the <filename>README.Debian</filename> file." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:447 msgid "" "Use common English so that the majority of readers can comprehend it. Avoid " "abbreviations, tech-speak and jargon when explaining changes that close " "bugs, especially for bugs filed by users that did not strike you as " "particularly technically savvy. Be polite, don't swear." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:453 msgid "" "It is sometimes desirable to prefix changelog entries with the names of the " "files that were changed. However, there's no need to explicitly list each " "and every last one of the changed files, especially if the change was small " "or repetitive. You may use wildcards." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:459 msgid "" "When referring to bugs, don't assume anything. Say what the problem was, " "how it was fixed, and append the closes: #nnnnn string. See <xref " "linkend=\"upload-bugfix\"/> for more information." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:466 msgid "Common misconceptions about changelog entries" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:468 msgid "" "The changelog entries should <emphasis role=\"strong\">not</emphasis> " "document generic packaging issues (Hey, if you're looking for foo.conf, it's " "in /etc/blah/.), since administrators and users are supposed to be at least " "remotely acquainted with how such things are generally arranged on Debian " "systems. Do, however, mention if you change the location of a configuration " "file." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:476 msgid "" "The only bugs closed with a changelog entry should be those that are " "actually fixed in the same package revision. Closing unrelated bugs in the " "changelog is bad practice. See <xref linkend=\"upload-bugfix\"/>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:481 msgid "" "The changelog entries should <emphasis role=\"strong\">not</emphasis> be " "used for random discussion with bug reporters (I don't see segfaults when " "starting foo with option bar; send in more info), general statements on " "life, the universe and everything (sorry this upload took me so long, but I " "caught the flu), or pleas for help (the bug list on this package is huge, " "please lend me a hand). Such things usually won't be noticed by their " "target audience, but may annoy people who wish to read information about " "actual changes in the package. See <xref linkend=\"bug-answering\"/> for " "more information on how to use the bug tracking system." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:492 msgid "" "It is an old tradition to acknowledge bugs fixed in non-maintainer uploads " "in the first changelog entry of the proper maintainer upload. As we have " "version tracking now, it is enough to keep the NMUed changelog entries and " "just mention this fact in your own changelog entry." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:500 msgid "Common errors in changelog entries" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:502 msgid "" "The following examples demonstrate some common errors or examples of bad " "style in changelog entries." msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:506 #, no-wrap msgid " * Fixed all outstanding bugs.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:509 msgid "This doesn't tell readers anything too useful, obviously." msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:512 #, no-wrap msgid " * Applied patch from Jane Random.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:515 msgid "What was the patch about?" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:518 #, no-wrap msgid " * Late night install target overhaul.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:521 msgid "" "Overhaul which accomplished what? Is the mention of late night supposed to " "remind us that we shouldn't trust that code?" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:525 #, no-wrap msgid " * Fix vsync FU w/ ancient CRTs.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:528 msgid "" "Too many acronyms, and it's not overly clear what the, uh, fsckup (oops, a " "curse word!) was actually about, or how it was fixed." msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:532 #, no-wrap msgid " * This is not a bug, closes: #nnnnnn.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:535 msgid "" "First of all, there's absolutely no need to upload the package to convey " "this information; instead, use the bug tracking system. Secondly, there's " "no explanation as to why the report is not a bug." msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:540 #, no-wrap msgid " * Has been fixed for ages, but I forgot to close; closes: #54321.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:543 msgid "" "If for some reason you didn't mention the bug number in a previous changelog " "entry, there's no problem, just close the bug normally in the BTS. There's " "no need to touch the changelog file, presuming the description of the fix is " "already in (this applies to the fixes by the upstream authors/maintainers as " "well, you don't have to track bugs that they fixed ages ago in your " "changelog)." msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:550 #, no-wrap msgid " * Closes: #12345, #12346, #15432\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:553 msgid "" "Where's the description? If you can't think of a descriptive message, start " "by inserting the title of each different bug." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:559 msgid "Supplementing changelogs with <filename>NEWS.Debian</filename> files" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:561 msgid "" "Important news about changes in a package can also be put in " "<filename>NEWS.Debian</filename> files. The news will be displayed by tools " "like <systemitem role=\"package\">apt-listchanges</systemitem>, before all " "the rest of the changelogs. This is the preferred means to let the user " "know about significant changes in a package. It is better than using " "<systemitem role=\"package\">debconf</systemitem> notes since it is less " "annoying and the user can go back and refer to the " "<filename>NEWS.Debian</filename> file after the install. And it's better " "than listing major changes in <filename>README.Debian</filename>, since the " "user can easily miss such notes." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:572 msgid "" "The file format is the same as a debian changelog file, but leave off the " "asterisks and describe each news item with a full paragraph when necessary " "rather than the more concise summaries that would go in a changelog. It's a " "good idea to run your file through <literal>dpkg-parsechangelog</literal> to " "check its formatting as it will not be automatically checked during build as " "the changelog is. Here is an example of a real " "<filename>NEWS.Debian</filename> file:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:581 #, no-wrap msgid "" "cron (3.0pl1-74) unstable; urgency=low\n" "\n" " The checksecurity script is no longer included with the cron package:\n" " it now has its own package, checksecurity. If you liked the\n" " functionality provided with that script, please install the new\n" " package.\n" "\n" " -- Steve Greenland <stevegr@debian.org> Sat, 6 Sep 2003 17:15:03 " "-0500\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:591 msgid "" "The <filename>NEWS.Debian</filename> file is installed as " "<filename>/usr/share/doc/<replaceable>package</replaceable>/NEWS.Debian.gz</filename>. " "It is compressed, and always has that name even in Debian native packages. " "If you use <literal>debhelper</literal>, " "<literal>dh_installchangelogs</literal> will install " "<filename>debian/NEWS</filename> files for you." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:598 msgid "" "Unlike changelog files, you need not update <filename>NEWS.Debian</filename> " "files with every release. Only update them if you have something " "particularly newsworthy that user should know about. If you have no news at " "all, there's no need to ship a <filename>NEWS.Debian</filename> file in your " "package. No news is good news!" msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:620 msgid "Best practices for maintainer scripts" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:622 msgid "" "Maintainer scripts include the files <filename>debian/postinst</filename>, " "<filename>debian/preinst</filename>, <filename>debian/prerm</filename> and " "<filename>debian/postrm</filename>. These scripts take care of any package " "installation or deinstallation setup which isn't handled merely by the " "creation or removal of files and directories. The following instructions " "supplement the <ulink url=\"&url-debian-policy;\">Debian Policy</ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:630 msgid "" "Maintainer scripts must be idempotent. That means that you need to make " "sure nothing bad will happen if the script is called twice where it would " "usually be called once." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:635 msgid "" "Standard input and output may be redirected (e.g. into pipes) for logging " "purposes, so don't rely on them being a tty." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:639 msgid "" "All prompting or interactive configuration should be kept to a minimum. " "When it is necessary, you should use the <systemitem " "role=\"package\">debconf</systemitem> package for the interface. Remember " "that prompting in any case can only be in the <literal>configure</literal> " "stage of the <filename>postinst</filename> script." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:646 msgid "" "Keep the maintainer scripts as simple as possible. We suggest you use pure " "POSIX shell scripts. Remember, if you do need any bash features, the " "maintainer script must have a bash shebang line. POSIX shell or Bash are " "preferred to Perl, since they enable <systemitem " "role=\"package\">debhelper</systemitem> to easily add bits to the scripts." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:653 msgid "" "If you change your maintainer scripts, be sure to test package removal, " "double installation, and purging. Be sure that a purged package is " "completely gone, that is, it must remove any files created, directly or " "indirectly, in any maintainer script." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:659 msgid "" "If you need to check for the existence of a command, you should use " "something like" msgstr "" #. type: Content of: <chapter><section><programlisting> #: best-pkging-practices.dbk:662 #, no-wrap msgid "if [ -x /usr/sbin/install-docs ]; then ..." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:664 msgid "" "If you don't wish to hard-code the path of a command in your maintainer " "script, the following POSIX-compliant shell function may help:" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:669 msgid "" "You can use this function to search <varname>$PATH</varname> for a command " "name, passed as an argument. It returns true (zero) if the command was " "found, and false if not. This is really the most portable way, since " "<literal>command -v</literal>, <command>type</command>, and " "<command>which</command> are not POSIX." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:676 msgid "" "While <command>which</command> is an acceptable alternative, since it is " "from the required <systemitem role=\"package\">debianutils</systemitem> " "package, it's not on the root partition. That is, it's in " "<filename>/usr/bin</filename> rather than <filename>/bin</filename>, so one " "can't use it in scripts which are run before the <filename>/usr</filename> " "partition is mounted. Most scripts won't have this problem, though." msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:686 msgid "" "Configuration management with <systemitem " "role=\"package\">debconf</systemitem>" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:688 msgid "" "<systemitem role=\"package\">Debconf</systemitem> is a configuration " "management system which can be used by all the various packaging scripts " "(<filename>postinst</filename> mainly) to request feedback from the user " "concerning how to configure the package. Direct user interactions must now " "be avoided in favor of <systemitem role=\"package\">debconf</systemitem> " "interaction. This will enable non-interactive installations in the future." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:696 msgid "" "Debconf is a great tool but it is often poorly used. Many common mistakes " "are listed in the <citerefentry> " "<refentrytitle>debconf-devel</refentrytitle> <manvolnum>7</manvolnum> " "</citerefentry> man page. It is something that you must read if you decide " "to use debconf. Also, we document some best practices here." msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:703 msgid "" "These guidelines include some writing style and typography recommendations, " "general considerations about debconf usage as well as more specific " "recommendations for some parts of the distribution (the installation system " "for instance)." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:709 msgid "Do not abuse debconf" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:711 msgid "" "Since debconf appeared in Debian, it has been widely abused and several " "criticisms received by the Debian distribution come from debconf abuse with " "the need of answering a wide bunch of questions before getting any little " "thing installed." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:717 msgid "" "Keep usage notes to what they belong: the <filename>NEWS.Debian</filename>, " "or <filename>README.Debian</filename> file. Only use notes for important " "notes which may directly affect the package usability. Remember that notes " "will always block the install until confirmed or bother the user by email." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:723 msgid "" "Carefully choose the questions priorities in maintainer scripts. See " "<citerefentry> <refentrytitle>debconf-devel</refentrytitle> " "<manvolnum>7</manvolnum> </citerefentry> for details about priorities. Most " "questions should use medium and low priorities." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:731 msgid "General recommendations for authors and translators" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:733 msgid "Write correct English" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:735 msgid "" "Most Debian package maintainers are not native English speakers. So, " "writing properly phrased templates may not be easy for them." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:739 msgid "" "Please use (and abuse) &email-debian-l10n-english; mailing list. Have your " "templates proofread." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:743 msgid "" "Badly written templates give a poor image of your package, of your " "work... or even of Debian itself." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:747 msgid "" "Avoid technical jargon as much as possible. If some terms sound common to " "you, they may be impossible to understand for others. If you cannot avoid " "them, try to explain them (use the extended description). When doing so, " "try to balance between verbosity and simplicity." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:755 msgid "Be kind to translators" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:757 msgid "" "Debconf templates may be translated. Debconf, along with its sister package " "<command>po-debconf</command> offers a simple framework for getting " "templates translated by translation teams or even individuals." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:762 msgid "" "Please use gettext-based templates. Install <systemitem " "role=\"package\">po-debconf</systemitem> on your development system and read " "its documentation (<command>man po-debconf</command> is a good start)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:767 msgid "" "Avoid changing templates too often. Changing templates text induces more " "work to translators which will get their translation fuzzied. A fuzzy " "translation is a string for which the original changed since it was " "translated, therefore requiring some update by a translator to be usable. " "When changes are small enough, the original translation is kept in PO files " "but marked as <literal>fuzzy</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:775 msgid "" "If you plan to do changes to your original templates, please use the " "notification system provided with the <systemitem " "role=\"package\">po-debconf</systemitem> package, namely the " "<command>podebconf-report-po</command>, to contact translators. Most active " "translators are very responsive and getting their work included along with " "your modified templates will save you additional uploads. If you use " "gettext-based templates, the translator's name and e-mail addresses are " "mentioned in the PO files headers and will be used by " "<command>podebconf-report-po</command>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:787 msgid "A recommended use of that utility is:" msgstr "" #. type: Content of: <chapter><section><section><section><programlisting> #: best-pkging-practices.dbk:789 #, no-wrap msgid "" "cd debian/po && podebconf-report-po --call --languageteam " "--withtranslators --deadline=\"+10 days\"" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:791 msgid "" "This command will first synchronize the PO and POT files in " "<filename>debian/po</filename> with the templates files listed in " "<filename>debian/po/POTFILES.in</filename>. Then, it will send a call for " "new translations, in the &email-debian-i18n; mailing list. Finally, it will " "also send a call for translation updates to the language team (mentioned in " "the <literal>Language-Team</literal> field of each PO file) as well as the " "last translator (mentioned in <literal>Last-translator</literal>)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:800 msgid "" "Giving a deadline to translators is always appreciated, so that they can " "organize their work. Please remember that some translation teams have a " "formalized translate/review process and a delay lower than 10 days is " "considered as unreasonable. A shorter delay puts too much pressure on " "translation teams and should be kept for very minor changes." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:807 msgid "" "If in doubt, you may also contact the translation team for a given language " "(debian-l10n-xxxxx@&lists-host;), or the &email-debian-i18n; mailing list." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:814 msgid "Unfuzzy complete translations when correcting typos and spelling" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:816 msgid "" "When the text of a debconf template is corrected and you are <emphasis " "role=\"strong\">sure</emphasis> that the change does <emphasis " "role=\"strong\">not</emphasis> affect translations, please be kind to " "translators and <emphasis>unfuzzy</emphasis> their translations." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:822 msgid "" "If you don't do so, the whole template will not be translated as long as a " "translator will send you an update." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:826 msgid "" "To <emphasis>unfuzzy</emphasis> translations, you can use " "<command>msguntypot</command> (part of the <systemitem " "role=\"package\">po4a</systemitem> package)." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:833 msgid "Regenerate the POT and PO files." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><programlisting> #: best-pkging-practices.dbk:835 best-pkging-practices.dbk:858 #, no-wrap msgid "debconf-updatepo" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:839 msgid "Make a copy of the POT file." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><programlisting> #: best-pkging-practices.dbk:841 #, no-wrap msgid "cp templates.pot templates.pot.orig" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:845 msgid "Make a copy of all the PO files." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><programlisting> #: best-pkging-practices.dbk:847 #, no-wrap msgid "mkdir po_fridge; cp *.po po_fridge" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:851 msgid "Change the debconf template files to fix the typos." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:856 msgid "Regenerate the POT and PO files (again)." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:860 msgid "" "At this point, the typo fix fuzzied all the translations, and this " "unfortunate change is the only one between the PO files of your main " "directory and the one from the fridge. Here is how to solve this." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:867 msgid "Discard fuzzy translation, restore the ones from the fridge." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><programlisting> #: best-pkging-practices.dbk:869 #, no-wrap msgid "cp po_fridge/*.po ." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:873 msgid "" "Manually merge the PO files with the new POT file, but taking the useless " "fuzzy into account." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><programlisting> #: best-pkging-practices.dbk:875 #, no-wrap msgid "msguntypot -o templates.pot.orig -n templates.pot *.po" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:879 msgid "Clean up." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><programlisting> #: best-pkging-practices.dbk:881 #, no-wrap msgid "rm -rf templates.pot.orig po_fridge" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:887 msgid "Do not make assumptions about interfaces" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:889 msgid "" "Templates text should not make reference to widgets belonging to some " "debconf interfaces. Sentences like <emphasis>If you answer " "Yes...</emphasis> have no meaning for users of graphical interfaces which " "use checkboxes for boolean questions." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:894 msgid "" "String templates should also avoid mentioning the default values in their " "description. First, because this is redundant with the values seen by the " "users. Also, because these default values may be different from the " "maintainer choices (for instance, when the debconf database was preseeded)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:900 msgid "" "More generally speaking, try to avoid referring to user actions. Just give " "facts." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:906 msgid "Do not use first person" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:908 msgid "" "You should avoid the use of first person (<emphasis>I will do " "this...</emphasis> or <emphasis>We recommend...</emphasis>). The computer " "is not a person and the Debconf templates do not speak for the Debian " "developers. You should use neutral construction. Those of you who already " "wrote scientific publications, just write your templates like you would " "write a scientific paper. However, try using active voice if still " "possible, like <emphasis>Enable this if ...</emphasis> instead of " "<emphasis>This can be enabled if...</emphasis>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:918 msgid "Be gender neutral" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:920 msgid "" "The world is made of men and women. Please use gender-neutral constructions " "in your writing." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:928 msgid "Templates fields definition" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:930 msgid "" "This part gives some information which is mostly taken from the " "<citerefentry> <refentrytitle>debconf-devel</refentrytitle> " "<manvolnum>7</manvolnum> </citerefentry> manual page." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:935 msgid "Type" msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:937 msgid "string" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:939 msgid "Results in a free-form input field that the user can type any string into." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:944 msgid "password" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:946 msgid "" "Prompts the user for a password. Use this with caution; be aware that the " "password the user enters will be written to debconf's database. You should " "probably clean that value out of the database as soon as is possible." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:953 msgid "boolean" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:955 msgid "" "A true/false choice. Remember: true/false, <emphasis role=\"strong\">not " "yes/no</emphasis>..." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:961 msgid "select" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:963 msgid "" "A choice between one of a number of values. The choices must be specified " "in a field named 'Choices'. Separate the possible values with commas and " "spaces, like this: <literal>Choices: yes, no, maybe</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:968 msgid "" "If choices are translatable strings, the 'Choices' field may be marked as " "translatable by using <literal>__Choices</literal>. The double underscore " "will split out each choice in a separate string." msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:973 msgid "" "The <command>po-debconf</command> system also offers interesting " "possibilities to only mark <emphasis role=\"strong\">some</emphasis> choices " "as translatable. Example:" msgstr "" #. type: Content of: <chapter><section><section><section><section><programlisting> #: best-pkging-practices.dbk:978 #, no-wrap msgid "" "Template: foo/bar\n" "Type: Select\n" "#flag:translate:3\n" "__Choices: PAL, SECAM, Other\n" "_Description: TV standard:\n" " Please choose the TV standard used in your country.\n" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:986 msgid "" "In that example, only the 'Other' string is translatable while others are " "acronyms that should not be translated. The above allows only 'Other' to be " "included in PO and POT files." msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:991 msgid "" "The debconf templates flag system offers many such possibilities. The " "<citerefentry> <refentrytitle>po-debconf</refentrytitle> " "<manvolnum>7</manvolnum> </citerefentry> manual page lists all these " "possibilities." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:999 msgid "multiselect" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:1001 msgid "" "Like the select data type, except the user can choose any number of items " "from the choices list (or chose none of them)." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1007 msgid "note" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:1009 msgid "" "Rather than being a question per se, this datatype indicates a note that can " "be displayed to the user. It should be used only for important notes that " "the user really should see, since debconf will go to great pains to make " "sure the user sees it; halting the install for them to press a key, and even " "mailing the note to them in some cases." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1018 msgid "text" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:1020 msgid "This type is now considered obsolete: don't use it." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1025 msgid "error" msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:1027 msgid "" "This type is designed to handle error messages. It is mostly similar to the " "note type. Frontends may present it differently (for instance, the dialog " "frontend of cdebconf draws a red screen instead of the usual blue one)." msgstr "" #. type: Content of: <chapter><section><section><section><section><para> #: best-pkging-practices.dbk:1032 msgid "" "It is recommended to use this type for any message that needs user attention " "for a correction of any kind." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1040 msgid "Description: short and extended description" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1042 msgid "" "Template descriptions have two parts: short and extended. The short " "description is in the Description: line of the template." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1046 msgid "" "The short description should be kept short (50 characters or so) so that it " "may be accommodated by most debconf interfaces. Keeping it short also helps " "translators, as usually translations tend to end up being longer than the " "original." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1052 msgid "" "The short description should be able to stand on its own. Some interfaces " "do not show the long description by default, or only if the user explicitely " "asks for it or even do not show it at all. Avoid things like What do you " "want to do?" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1058 msgid "" "The short description does not necessarily have to be a full sentence. This " "is part of the keep it short and efficient recommendation." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1062 msgid "" "The extended description should not repeat the short description word for " "word. If you can't think up a long description, then first, think some " "more. Post to debian-devel. Ask for help. Take a writing class! That " "extended description is important. If after all that you still can't come " "up with anything, leave it blank." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1069 msgid "" "The extended description should use complete sentences. Paragraphs should " "be kept short for improved readability. Do not mix two ideas in the same " "paragraph but rather use another paragraph." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1074 msgid "" "Don't be too verbose. User tend to ignore too long screens. 20 lines are " "by experience a border you shouldn't cross, because that means that in the " "classical dialog interface, people will need to scroll, and lot of people " "just don't do that." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1080 msgid "" "The extended description should <emphasis role=\"strong\">never</emphasis> " "include a question." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1084 msgid "" "For specific rules depending on templates type (string, boolean, etc.), " "please read below." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1090 msgid "Choices" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1092 msgid "" "This field should be used for select and multiselect types. It contains the " "possible choices which will be presented to users. These choices should be " "separated by commas." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1099 msgid "Default" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1101 msgid "" "This field is optional. It contains the default answer for string, select " "and multiselect templates. For multiselect templates, it may contain a " "comma-separated list of choices." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1110 msgid "Templates fields specific style guide" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1112 msgid "Type field" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1114 msgid "" "No specific indication except: use the appropriate type by referring to the " "previous section." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1120 msgid "Description field" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1122 msgid "" "Below are specific instructions for properly writing the Description (short " "and extended) depending on the template type." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1126 msgid "String/password templates" msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1130 msgid "" "The short description is a prompt and <emphasis " "role=\"strong\">not</emphasis> a title. Avoid question style prompts (IP " "Address?) in favour of opened prompts (IP address:). The use of colons is " "recommended." msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1137 msgid "" "The extended description is a complement to the short description. In the " "extended part, explain what is being asked, rather than ask the same " "question again using longer words. Use complete sentences. Terse writing " "style is strongly discouraged." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1147 msgid "Boolean templates" msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1151 msgid "" "The short description should be phrased in the form of a question which " "should be kept short and should generally end with a question mark. Terse " "writing style is permitted and even encouraged if the question is rather " "long (remember that translations are often longer than original versions)." msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1159 msgid "" "Again, please avoid referring to specific interface widgets. A common " "mistake for such templates is if you answer Yes-type constructions." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1167 msgid "Select/Multiselect" msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1171 msgid "" "The short description is a prompt and <emphasis " "role=\"strong\">not</emphasis> a title. Do <emphasis " "role=\"strong\">not</emphasis> use useless Please choose... constructions. " "Users are clever enough to figure out they have to choose something...:)" msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1179 msgid "" "The extended description will complete the short description. It may refer " "to the available choices. It may also mention that the user may choose more " "than one of the available choices, if the template is a multiselect one " "(although the interface often makes this clear)." msgstr "" #. type: Content of: <chapter><section><section><section><section><title> #: best-pkging-practices.dbk:1189 msgid "Notes" msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1193 msgid "" "The short description should be considered to be a <emphasis " "role=\"strong\">title</emphasis>." msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1198 msgid "" "The extended description is what will be displayed as a more detailed " "explanation of the note. Phrases, no terse writing style." msgstr "" #. type: Content of: <chapter><section><section><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1204 msgid "" "<emphasis role=\"strong\">Do not abuse debconf.</emphasis> Notes are the " "most common way to abuse debconf. As written in debconf-devel manual page: " "it's best to use them only for warning about very serious problems. The " "<filename>NEWS.Debian</filename> or <filename>README.Debian</filename> files " "are the appropriate location for a lot of notes. If, by reading this, you " "consider converting your Note type templates to entries in " "<filename>NEWS.Debian</filename> or <filename>README.Debian</filename>, plus " "consider keeping existing translations for the future." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1219 msgid "Choices field" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1221 msgid "" "If the Choices are likely to change often, please consider using the " "__Choices trick. This will split each individual choice into a single " "string, which will considerably help translators for doing their work." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1228 best-pkging-practices.dbk:1266 msgid "Default field" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1230 msgid "" "If the default value, for a select template, is likely to vary depending on " "the user language (for instance, if the choice is a language choice), please " "use the _Default trick." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1235 msgid "" "This special field allow translators to put the most appropriate choice " "according to their own language. It will become the default choice when " "their language is used while your own mentioned Default Choice will be used " "when using English." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1241 msgid "Example, taken from the geneweb package templates:" msgstr "" #. type: Content of: <chapter><section><section><section><screen> #: best-pkging-practices.dbk:1244 #, no-wrap msgid "" "Template: geneweb/lang\n" "Type: select\n" "__Choices: Afrikaans (af), Bulgarian (bg), Catalan (ca), Chinese (zh), Czech " "(cs), Danish (da), Dutch (nl), English (en), Esperanto (eo), Estonian (et), " "Finnish (fi), French (fr), German (de), Hebrew (he), Icelandic (is), Italian " "(it), Latvian (lv), Norwegian (no), Polish (pl), Portuguese (pt), Romanian " "(ro), Russian (ru), Spanish (es), Swedish (sv)\n" "# This is the default choice. Translators may put their own language here\n" "# instead of the default.\n" "# WARNING : you MUST use the ENGLISH NAME of your language\n" "# For instance, the french translator will need to put French (fr) here.\n" "_Default: English[ translators, please see comment in PO files]\n" "_Description: Geneweb default language:\n" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1255 msgid "" "Note the use of brackets which allow internal comments in debconf fields. " "Also note the use of comments which will show up in files the translators " "will work with." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1260 msgid "" "The comments are needed as the _Default trick is a bit confusing: the " "translators may put their own choice" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1268 msgid "" "Do NOT use empty default field. If you don't want to use default values, do " "not use Default at all." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1272 msgid "" "If you use po-debconf (and you <emphasis role=\"strong\">should</emphasis>, " "see <xref linkend=\"s6.5.2.2\"/>), consider making this field translatable, " "if you think it may be translated." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1277 msgid "" "If the default value may vary depending on language/country (for instance " "the default value for a language choice), consider using the special " "_Default type documented in <citerefentry> " "<refentrytitle>po-debconf</refentrytitle> <manvolnum>7</manvolnum> " "</citerefentry>." msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:1289 msgid "Internationalization" msgstr "" #. type: Content of: <chapter><section><para> #: best-pkging-practices.dbk:1291 msgid "" "This section contains global information for developers to make translators' " "life easier. More information for translators and developers interested in " "internationalization are available in the <ulink " "url=\"&url-i18n-l10n;\">Internationalisation and localisation in " "Debian</ulink> documentation." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1298 msgid "Handling debconf translations" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1300 msgid "" "Like porters, translators have a difficult task. They work on many packages " "and must collaborate with many different maintainers. Moreover, most of the " "time, they are not native English speakers, so you may need to be " "particularly patient with them." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1306 msgid "" "The goal of <systemitem role=\"package\">debconf</systemitem> was to make " "packages configuration easier for maintainers and for users. Originally, " "translation of debconf templates was handled with " "<command>debconf-mergetemplate</command>. However, that technique is now " "deprecated; the best way to accomplish <systemitem " "role=\"package\">debconf</systemitem> internationalization is by using the " "<systemitem role=\"package\">po-debconf</systemitem> package. This method " "is easier both for maintainer and translators; transition scripts are " "provided." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1316 msgid "" "Using <systemitem role=\"package\">po-debconf</systemitem>, the translation " "is stored in <filename>.po</filename> files (drawing from " "<command>gettext</command> translation techniques). Special template files " "contain the original messages and mark which fields are translatable. When " "you change the value of a translatable field, by calling " "<command>debconf-updatepo</command>, the translation is marked as needing " "attention from the translators. Then, at build time, the " "<command>dh_installdebconf</command> program takes care of all the needed " "magic to add the template along with the up-to-date translations into the " "binary packages. Refer to the <citerefentry> " "<refentrytitle>po-debconf</refentrytitle> <manvolnum>7</manvolnum> " "</citerefentry> manual page for details." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1332 msgid "Internationalized documentation" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1334 msgid "" "Internationalizing documentation is crucial for users, but a lot of labor. " "There's no way to eliminate all that work, but you can make things easier " "for translators." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1339 msgid "" "If you maintain documentation of any size, it is easier for translators if " "they have access to a source control system. That lets translators see the " "differences between two versions of the documentation, so, for instance, " "they can see what needs to be retranslated. It is recommended that the " "translated documentation maintain a note about what source control revision " "the translation is based on. An interesting system is provided by <ulink " "url=\"&url-i18n-doc-check;\">doc-check</ulink> in the <systemitem " "role=\"package\">debian-installer</systemitem> package, which shows an " "overview of the translation status for any given language, using structured " "comments for the current revision of the file to be translated and, for a " "translated file, the revision of the original file the translation is based " "on. You might wish to adapt and provide that in your VCS area." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1353 msgid "" "If you maintain XML or SGML documentation, we suggest that you isolate any " "language-independent information and define those as entities in a separate " "file which is included by all the different translations. This makes it " "much easier, for instance, to keep URLs up to date across multiple files." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1359 msgid "" "Some tools (e.g. <systemitem role=\"package\">po4a</systemitem>, <systemitem " "role=\"package\">poxml</systemitem>, or the <systemitem " "role=\"package\">translate-toolkit</systemitem>) are specialized in " "extracting the translatable material from different formats. They produce " "PO files, a format quite common to translators, which permits to see what " "needs to be retranslated when the translated document is updated." msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:1371 msgid "Common packaging situations" msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1382 msgid "Packages using <command>autoconf</command>/<command>automake</command>" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1384 msgid "" "Keeping <command>autoconf</command>'s <filename>config.sub</filename> and " "<filename>config.guess</filename> files up to date is critical for porters, " "especially on more volatile architectures. Some very good packaging " "practices for any package using <command>autoconf</command> and/or " "<command>automake</command> have been synthesized in &file-bpp-autotools; " "from the <systemitem role=\"package\">autotools-dev</systemitem> package. " "You're strongly encouraged to read this file and to follow the given " "recommendations." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1396 msgid "Libraries" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1398 msgid "" "Libraries are always difficult to package for various reasons. The policy " "imposes many constraints to ease their maintenance and to make sure upgrades " "are as simple as possible when a new upstream version comes out. Breakage " "in a library can result in dozens of dependent packages breaking." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1404 msgid "" "Good practices for library packaging have been grouped in <ulink " "url=\"&url-libpkg-guide;\">the library packaging guide</ulink>." msgstr "" #. type: Content of: <chapter><section><title> #: best-pkging-practices.dbk:1411 resources.dbk:193 msgid "Documentation" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1413 msgid "" "Be sure to follow the <ulink url=\"&url-debian-policy;ch-docs.html\">Policy " "on documentation</ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1418 msgid "" "If your package contains documentation built from XML or SGML, we recommend " "you not ship the XML or SGML source in the binary package(s). If users want " "the source of the documentation, they should retrieve the source package." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1423 msgid "" "Policy specifies that documentation should be shipped in HTML format. We " "also recommend shipping documentation in PDF and plain text format if " "convenient and if output of reasonable quality is possible. However, it is " "generally not appropriate to ship plain text versions of documentation whose " "source format is HTML." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1430 msgid "" "Major shipped manuals should register themselves with <systemitem " "role=\"package\">doc-base</systemitem> on installation. See the <systemitem " "role=\"package\">doc-base</systemitem> package documentation for more " "information." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1436 msgid "" "Debian policy (section 12.1) directs that manual pages should accompany " "every program, utility, and function, and suggests them for other objects " "like configuration files. If the work you are packaging does not have such " "manual pages, consider writing them for inclusion in your package, and " "submitting them upstream." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1443 msgid "" "The manpages do not need to be written directly in the troff format. " "Popular source formats are Docbook, POD and reST, which can be converted " "using <command>xsltproc</command>, <command>pod2man</command> and " "<command>rst2man</command> respectively. To a lesser extent, the " "<command>help2man</command> program can also be used to write a stub." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1452 msgid "Specific types of packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1454 msgid "" "Several specific types of packages have special sub-policies and " "corresponding packaging rules and practices:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1460 msgid "" "Perl related packages have a <ulink url=\"&url-perl-policy;\">Perl " "policy</ulink>, some examples of packages following that policy are " "<systemitem role=\"package\">libdbd-pg-perl</systemitem> (binary perl " "module) or <systemitem role=\"package\">libmldbm-perl</systemitem> (arch " "independent perl module)." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1469 msgid "" "Python related packages have their python policy; see &file-python-policy; " "in the <systemitem role=\"package\">python</systemitem> package." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1476 msgid "" "Emacs related packages have the <ulink url=\"&url-emacs-policy;\">emacs " "policy</ulink>." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1483 msgid "" "Java related packages have their <ulink url=\"&url-java-policy;\">java " "policy</ulink>." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1490 msgid "" "Ocaml related packages have their own policy, found in &file-ocaml-policy; " "from the <systemitem role=\"package\">ocaml</systemitem> package. A good " "example is the <systemitem role=\"package\">camlzip</systemitem> source " "package." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1498 msgid "" "Packages providing XML or SGML DTDs should conform to the recommendations " "found in the <systemitem role=\"package\">sgml-base-doc</systemitem> " "package." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: best-pkging-practices.dbk:1504 msgid "" "Lisp packages should register themselves with <systemitem " "role=\"package\">common-lisp-controller</systemitem>, about which see " "&file-lisp-controller;." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1534 msgid "Architecture-independent data" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1536 msgid "" "It is not uncommon to have a large amount of architecture-independent data " "packaged with a program. For example, audio files, a collection of icons, " "wallpaper patterns, or other graphic files. If the size of this data is " "negligible compared to the size of the rest of the package, it's probably " "best to keep it all in a single package." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1543 msgid "" "However, if the size of the data is considerable, consider splitting it out " "into a separate, architecture-independent package " "(<filename>_all.deb</filename>). By doing this, you avoid needless " "duplication of the same data into eleven or more .debs, one per each " "architecture. While this adds some extra overhead into the " "<filename>Packages</filename> files, it saves a lot of disk space on Debian " "mirrors. Separating out architecture-independent data also reduces " "processing time of <command>lintian</command> (see <xref " "linkend=\"tools-lint\"/>) when run over the entire Debian archive." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1555 msgid "Needing a certain locale during build" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1557 msgid "" "If you need a certain locale during build, you can create a temporary file " "via this trick:" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1561 msgid "" "If you set <varname>LOCPATH</varname> to the equivalent of " "<filename>/usr/lib/locale</filename>, and <varname>LC_ALL</varname> to the " "name of the locale you generate, you should get what you want without being " "root. Something like this:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:1566 #, no-wrap msgid "" "LOCALE_PATH=debian/tmpdir/usr/lib/locale\n" "LOCALE_NAME=en_IN\n" "LOCALE_CHARSET=UTF-8\n" "\n" "mkdir -p $LOCALE_PATH\n" "localedef -i $LOCALE_NAME.$LOCALE_CHARSET -f $LOCALE_CHARSET " "$LOCALE_PATH/$LOCALE_NAME.$LOCALE_CHARSET\n" "\n" "# Using the locale\n" "LOCPATH=$LOCALE_PATH LC_ALL=$LOCALE_NAME.$LOCALE_CHARSET date\n" msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1579 msgid "Make transition packages deborphan compliant" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1581 msgid "" "Deborphan is a program for helping users to detect which packages can safely " "be removed from the system, i.e. the ones that have no packages depending " "on them. The default operation is to search only within the libs and " "oldlibs sections, to hunt down unused libraries. But when passed the right " "argument, it tries to catch other useless packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1588 msgid "" "For example, with <literal>--guess-dummy</literal>, " "<command>deborphan</command> tries to search all transitional packages which " "were needed for upgrade but which can now safely be removed. For that, it " "looks for the string dummy or transitional in their short description." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1595 msgid "" "So, when you are creating such a package, please make sure to add this text " "to your short description. If you are looking for examples, just run: " "<command>apt-cache search .|grep dummy</command> or <command>apt-cache " "search .|grep transitional</command>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1601 msgid "" "Also, it is recommended to adjust its section to <literal>oldlibs</literal> " "and its priority to <literal>extra</literal> in order to ease " "<command>deborphan</command>'s job." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1610 msgid "Best practices for <filename>.orig.tar.{gz,bz2,xz}</filename> files" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1612 msgid "" "There are two kinds of original source tarballs: Pristine source and " "repackaged upstream source." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1616 msgid "Pristine source" msgstr "" #. type: Content of: <chapter><section><section><section><para><footnote><para> #: best-pkging-practices.dbk:1620 msgid "" "We cannot prevent upstream authors from changing the tarball they distribute " "without also incrementing the version number, so there can be no guarantee " "that a pristine tarball is identical to what upstream " "<emphasis>currently</emphasis> distributing at any point in time. All that " "can be expected is that it is identical to something that upstream once " "<emphasis>did</emphasis> distribute. If a difference arises later (say, if " "upstream notice that they weren't using maximal compression in their " "original distribution and then re-<command>gzip</command> it), that's just " "too bad. Since there is no good way to upload a new " "<filename>.orig.tar.{gz,bz2,xz}</filename> for the same version, there is " "not even any point in treating this situation as a bug." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1618 msgid "" "The defining characteristic of a pristine source tarball is that the " "<filename>.orig.tar.{gz,bz2,xz}</filename> file is byte-for-byte identical " "to a tarball officially distributed by the upstream author.<placeholder " "type=\"footnote\" id=\"0\"/> This makes it possible to use checksums to " "easily verify that all changes between Debian's version and upstream's are " "contained in the Debian diff. Also, if the original source is huge, " "upstream authors and others who already have the upstream tarball can save " "download time if they want to inspect your packaging in detail." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1638 msgid "" "There is no universally accepted guidelines that upstream authors follow " "regarding to the directory structure inside their tarball, but " "<command>dpkg-source</command> is nevertheless able to deal with most " "upstream tarballs as pristine source. Its strategy is equivalent to the " "following:" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1646 msgid "It unpacks the tarball in an empty temporary directory by doing" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><screen> #: best-pkging-practices.dbk:1649 #, no-wrap msgid "" "zcat " "path/to/<replaceable>packagename</replaceable>_<replaceable>upstream-version</replaceable>.orig.tar.gz " "| tar xf -\n" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1654 msgid "" "If, after this, the temporary directory contains nothing but one directory " "and no other files, <command>dpkg-source</command> renames that directory to " "<filename><replaceable>packagename</replaceable>-<replaceable>upstream-version</replaceable>(.orig)</filename>. " "The name of the top-level directory in the tarball does not matter, and is " "forgotten." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1663 msgid "" "Otherwise, the upstream tarball must have been packaged without a common " "top-level directory (shame on the upstream author!). In this case, " "<command>dpkg-source</command> renames the temporary directory " "<emphasis>itself</emphasis> to " "<filename><replaceable>packagename</replaceable>-<replaceable>upstream-version</replaceable>(.orig)</filename>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1674 msgid "Repackaged upstream source" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1676 msgid "" "You <emphasis role=\"strong\">should</emphasis> upload packages with a " "pristine source tarball if possible, but there are various reasons why it " "might not be possible. This is the case if upstream does not distribute the " "source as gzipped tar at all, or if upstream's tarball contains " "non-DFSG-free material that you must remove before uploading." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1683 msgid "" "In these cases the developer must construct a suitable " "<filename>.orig.tar.{gz,bz2,xz}</filename> file themselves. We refer to " "such a tarball as a repackaged upstream source. Note that a repackaged " "upstream source is different from a Debian-native package. A repackaged " "source still comes with Debian-specific changes in a separate " "<filename>.diff.gz</filename> or " "<filename>.debian.tar.{gz,bz2,xz}</filename> and still has a version number " "composed of <replaceable>upstream-version</replaceable> and " "<replaceable>debian-version</replaceable>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1692 msgid "" "There may be cases where it is desirable to repackage the source even though " "upstream distributes a <filename>.tar.{gz,bz2,xz}</filename> that could in " "principle be used in its pristine form. The most obvious is if " "<emphasis>significant</emphasis> space savings can be achieved by " "recompressing the tar archive or by removing genuinely useless cruft from " "the upstream archive. Use your own discretion here, but be prepared to " "defend your decision if you repackage source that could have been pristine." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1701 msgid "A repackaged <filename>.orig.tar.{gz,bz2,xz}</filename>" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1706 msgid "" "<emphasis role=\"strong\">should</emphasis> be documented in the resulting " "source package. Detailed information on how the repackaged source was " "obtained, and on how this can be reproduced should be provided in " "<filename>debian/copyright</filename>. It is also a good idea to provide a " "<literal>get-orig-source</literal> target in your " "<filename>debian/rules</filename> file that repeats the process, as " "described in the Policy Manual, <ulink " "url=\"&url-debian-policy;ch-source.html#s-debianrules\">Main building " "script: <filename>debian/rules</filename></ulink>." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para><footnote><para> #: best-pkging-practices.dbk:1721 msgid "" "As a special exception, if the omission of non-free files would lead to the " "source failing to build without assistance from the Debian diff, it might be " "appropriate to instead edit the files, omitting only the non-free parts of " "them, and/or explain the situation in a <filename>README.source</filename> " "file in the root of the source tree. But in that case please also urge the " "upstream author to make the non-free components easier separable from the " "rest of the source." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1719 msgid "" "<emphasis role=\"strong\">should not</emphasis> contain any file that does " "not come from the upstream author(s), or whose contents has been changed by " "you.<placeholder type=\"footnote\" id=\"0\"/>" msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1732 msgid "" "<emphasis role=\"strong\">should</emphasis>, except where impossible for " "legal reasons, preserve the entire building and portablility infrastructure " "provided by the upstream author. For example, it is not a sufficient reason " "for omitting a file that it is used only when building on MS-DOS. " "Similarly, a <filename>Makefile</filename> provided by upstream should not " "be omitted even if the first thing your <filename>debian/rules</filename> " "does is to overwrite it by running a configure script." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1741 msgid "" "(<emphasis>Rationale:</emphasis> It is common for Debian users who need to " "build software for non-Debian platforms to fetch the source from a Debian " "mirror rather than trying to locate a canonical upstream distribution " "point)." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1748 msgid "" "<emphasis role=\"strong\">should</emphasis> use " "<filename><replaceable>packagename</replaceable>-<replaceable>upstream-version</replaceable>.orig</filename> " "as the name of the top-level directory in its tarball. This makes it " "possible to distinguish pristine tarballs from repackaged ones." msgstr "" #. type: Content of: <chapter><section><section><section><orderedlist><listitem><para> #: best-pkging-practices.dbk:1756 msgid "" "<emphasis role=\"strong\">should</emphasis> be gzipped or bzipped with " "maximal compression." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: best-pkging-practices.dbk:1763 msgid "Changing binary files" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: best-pkging-practices.dbk:1765 msgid "" "Sometimes it is necessary to change binary files contained in the original " "tarball, or to add binary files that are not in it. This is fully supported " "when using source packages in “3.0 (quilt)” format, see the " "<citerefentry><refentrytitle>dpkg-source</refentrytitle><manvolnum>1</manvolnum></citerefentry> " "manual page for details. When using the older format “1.0”, binary files " "can't be stored in the <filename>.diff.gz</filename> so you must store an " "<command>uuencode</command>d (or similar) version of the file(s) and decode " "it at build time in <filename>debian/rules</filename> (and move it in its " "official location)." msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1780 msgid "Best practices for debug packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1782 msgid "" "A debug package is a package with a name ending in -dbg, that contains " "additional information that <command>gdb</command> can use. Since Debian " "binaries are stripped by default, debugging information, including function " "names and line numbers, is otherwise not available when running " "<command>gdb</command> on Debian binaries. Debug packages allow users who " "need this additional debugging information to install it, without bloating a " "regular system with the information." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1790 msgid "" "It is up to a package's maintainer whether to create a debug package or " "not. Maintainers are encouraged to create debug packages for library " "packages, since this can aid in debugging many programs linked to a " "library. In general, debug packages do not need to be added for all " "programs; doing so would bloat the archive. But if a maintainer finds that " "users often need a debugging version of a program, it can be worthwhile to " "make a debug package for it. Programs that are core infrastructure, such as " "apache and the X server are also good candidates for debug packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1800 msgid "" "Some debug packages may contain an entire special debugging build of a " "library or other binary, but most of them can save space and build time by " "instead containing separated debugging symbols that <command>gdb</command> " "can find and load on the fly when debugging a program or library. The " "convention in Debian is to keep these symbols in " "<filename>/usr/lib/debug/<replaceable>path</replaceable></filename>, where " "<replaceable>path</replaceable> is the path to the executable or library. " "For example, debugging symbols for <filename>/usr/bin/foo</filename> go in " "<filename>/usr/lib/debug/usr/bin/foo</filename>, and debugging symbols for " "<filename>/usr/lib/libfoo.so.1</filename> go in " "<filename>/usr/lib/debug/usr/lib/libfoo.so.1</filename>." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1812 msgid "" "The debugging symbols can be extracted from an object file using " "<command>objcopy --only-keep-debug</command>. Then the object file can be " "stripped, and <command>objcopy --add-gnu-debuglink</command> used to specify " "the path to the debugging symbol file. <citerefentry> " "<refentrytitle>objcopy</refentrytitle> <manvolnum>1</manvolnum> " "</citerefentry> explains in detail how this works." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1820 msgid "" "The <command>dh_strip</command> command in <systemitem " "role=\"package\">debhelper</systemitem> supports creating debug packages, " "and can take care of using <command>objcopy</command> to separate out the " "debugging symbols for you. If your package uses <systemitem " "role=\"package\">debhelper</systemitem>, all you need to do is call " "<command>dh_strip --dbg-package=libfoo-dbg</command>, and add an entry to " "<filename>debian/control</filename> for the debug package." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1827 msgid "" "Note that the debug package should depend on the package that it provides " "debugging symbols for, and this dependency should be versioned. For " "example:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: best-pkging-practices.dbk:1831 #, no-wrap msgid "Depends: libfoo (= ${binary:Version})\n" msgstr "" #. type: Content of: <chapter><section><section><title> #: best-pkging-practices.dbk:1835 msgid "Best practices for meta-packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1837 msgid "" "A meta-package is a mostly empty package that makes it easy to install a " "coherent set of packages that can evolve over time. It achieves this by " "depending on all the packages of the set. Thanks to the power of APT, the " "meta-package maintainer can adjust the dependencies and the user's system " "will automatically get the supplementary packages. The dropped packages that " "were automatically installed will be also be marked as removal candidates " "(and are even automatically removed by <command>aptitude</command>). " "<systemitem role=\"package\">gnome</systemitem> and <systemitem " "role=\"package\">linux-image-amd64</systemitem> are two examples of " "meta-packages (built by the source packages <systemitem " "role=\"package\">meta-gnome2</systemitem> and <systemitem " "role=\"package\">linux-latest</systemitem>)." msgstr "" #. type: Content of: <chapter><section><section><para> #: best-pkging-practices.dbk:1851 msgid "" "The long description of the meta-package must clearly document its purpose " "so that the user knows what they will lose if they remove the package. Being " "explicit about the consequences is recommended. This is particularly " "important for meta-packages which are installed during initial installation " "and that have not been explicitly installed by the user. Those tend to be " "important to ensure smooth system upgrades and the user should be " "discouraged from uninstalling them to avoid potential breakages." msgstr "" #. type: Content of: <chapter><title> #: beyond-pkging.dbk:7 msgid "Beyond Packaging" msgstr "" #. type: Content of: <chapter><para> #: beyond-pkging.dbk:9 msgid "" "Debian is about a lot more than just packaging software and maintaining " "those packages. This chapter contains information about ways, often really " "critical ways, to contribute to Debian beyond simply creating and " "maintaining packages." msgstr "" #. type: Content of: <chapter><para> #: beyond-pkging.dbk:14 msgid "" "As a volunteer organization, Debian relies on the discretion of its members " "in choosing what they want to work on and in choosing the most critical " "thing to spend their time on." msgstr "" #. type: Content of: <chapter><section><title> #: beyond-pkging.dbk:19 msgid "Bug reporting" msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:21 msgid "" "We encourage you to file bugs as you find them in Debian packages. In fact, " "Debian developers are often the first line testers. Finding and reporting " "bugs in other developers' packages improves the quality of Debian." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:26 msgid "" "Read the <ulink url=\"&url-bts-report;\">instructions for reporting " "bugs</ulink> in the Debian <ulink url=\"&url-bts;\">bug tracking " "system</ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:31 msgid "" "Try to submit the bug from a normal user account at which you are likely to " "receive mail, so that people can reach you if they need further information " "about the bug. Do not submit bugs as root." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:36 msgid "" "You can use a tool like <citerefentry> " "<refentrytitle>reportbug</refentrytitle> <manvolnum>1</manvolnum> " "</citerefentry> to submit bugs. It can automate and generally ease the " "process." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:41 msgid "" "Make sure the bug is not already filed against a package. Each package has " "a bug list easily reachable at " "<literal>https://&bugs-host;/<replaceable>packagename</replaceable></literal>. " "Utilities like <citerefentry> <refentrytitle>querybts</refentrytitle> " "<manvolnum>1</manvolnum> </citerefentry> can also provide you with this " "information (and <command>reportbug</command> will usually invoke " "<command>querybts</command> before sending, too)." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:50 msgid "" "Try to direct your bugs to the proper location. When for example your bug " "is about a package which overwrites files from another package, check the " "bug lists for <emphasis>both</emphasis> of those packages in order to avoid " "filing duplicate bug reports." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:56 msgid "" "For extra credit, you can go through other packages, merging bugs which are " "reported more than once, or tagging bugs `fixed' when they have already been " "fixed. Note that when you are neither the bug submitter nor the package " "maintainer, you should not actually close the bug (unless you secure " "permission from the maintainer)." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:63 msgid "" "From time to time you may want to check what has been going on with the bug " "reports that you submitted. Take this opportunity to close those that you " "can't reproduce anymore. To find out all the bugs you submitted, you just " "have to visit " "<literal>https://&bugs-host;/from:<replaceable>your-email-addr</replaceable></literal>." msgstr "" #. type: Content of: <chapter><section><section><title> #: beyond-pkging.dbk:70 msgid "Reporting lots of bugs at once (mass bug filing)" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:72 msgid "" "Reporting a great number of bugs for the same problem on a great number of " "different packages — i.e., more than 10 — is a deprecated practice. Take " "all possible steps to avoid submitting bulk bugs at all. For instance, if " "checking for the problem can be automated, add a new check to <systemitem " "role=\"package\">lintian</systemitem> so that an error or warning is " "emitted." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:79 msgid "" "If you report more than 10 bugs on the same topic at once, it is recommended " "that you send a message to &email-debian-devel; describing your intention " "before submitting the report, and mentioning the fact in the subject of your " "mail. This will allow other developers to verify that the bug is a real " "problem. In addition, it will help prevent a situation in which several " "maintainers start filing the same bug report simultaneously." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:87 msgid "" "Please use the programs <command>dd-list</command> and if appropriate " "<command>whodepends</command> (from the package <systemitem " "role=\"package\">devscripts</systemitem>) to generate a list of all affected " "packages, and include the output in your mail to &email-debian-devel;." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:93 msgid "" "Note that when sending lots of bugs on the same subject, you should send the " "bug report to <email>maintonly@&bugs-host;</email> so that the bug report is " "not forwarded to the bug distribution mailing list." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: beyond-pkging.dbk:98 msgid "Usertags" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:100 msgid "" "You may wish to use BTS usertags when submitting bugs across a number of " "packages. Usertags are similar to normal tags such as 'patch' and 'wishlist' " "but differ in that they are user-defined and occupy a namespace that is " "unique to a particular user. This allows multiple sets of developers to " "'usertag' the same bug in different ways without conflicting." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:107 msgid "" "To add usertags when filing bugs, specify the <literal>User</literal> and " "<literal>Usertags</literal> pseudo-headers:" msgstr "" #. type: Content of: <chapter><section><section><section><screen> #: beyond-pkging.dbk:111 #, no-wrap msgid "" "To: submit@bugs.debian.org\n" "Subject: <replaceable>title-of-bug</replaceable>\n" "\n" "Package: <replaceable>pkgname</replaceable>\n" "<replaceable>[ ... ]</replaceable>\n" "User: <replaceable>email-addr</replaceable>\n" "Usertags: <replaceable>tag-name [ tag-name ... ]</replaceable>\n" "\n" "<replaceable>description-of-bug ...</replaceable>\n" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:122 msgid "" "Note that tags are seperated by spaces and cannot contain underscores. If " "you are filing bugs for a particular group or team it is recommended that " "you set the <literal>User</literal> to an appropriate mailing list after " "describing your intention there." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:128 msgid "" "To view bugs tagged with a specific usertag, visit " "<literal>https://&bugs-host;/cgi-bin/pkgreport.cgi?users=<replaceable>email-addr</replaceable>&tag=<replaceable>tag-name</replaceable></literal>." msgstr "" #. type: Content of: <chapter><section><title> #: beyond-pkging.dbk:137 msgid "Quality Assurance effort" msgstr "" #. type: Content of: <chapter><section><section><title> #: beyond-pkging.dbk:139 msgid "Daily work" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:141 msgid "" "Even though there is a dedicated group of people for Quality Assurance, QA " "duties are not reserved solely for them. You can participate in this effort " "by keeping your packages as bug-free as possible, and as lintian-clean (see " "<xref linkend=\"lintian\"/>) as possible. If you do not find that possible, " "then you should consider orphaning some of your packages (see <xref " "linkend=\"orphaning\"/>). Alternatively, you may ask the help of other " "people in order to catch up with the backlog of bugs that you have (you can " "ask for help on &email-debian-qa; or &email-debian-devel;). At the same " "time, you can look for co-maintainers (see <xref " "linkend=\"collaborative-maint\"/>)." msgstr "" #. type: Content of: <chapter><section><section><title> #: beyond-pkging.dbk:155 msgid "Bug squashing parties" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:157 msgid "" "From time to time the QA group organizes bug squashing parties to get rid of " "as many problems as possible. They are announced on " "&email-debian-devel-announce; and the announcement explains which area will " "be the focus of the party: usually they focus on release critical bugs but " "it may happen that they decide to help finish a major upgrade (like a new " "<command>perl</command> version which requires recompilation of all the " "binary modules)." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:166 msgid "" "The rules for non-maintainer uploads differ during the parties because the " "announcement of the party is considered prior notice for NMU. If you have " "packages that may be affected by the party (because they have release " "critical bugs for example), you should send an update to each of the " "corresponding bug to explain their current status and what you expect from " "the party. If you don't want an NMU, or if you're only interested in a " "patch, or if you will deal yourself with the bug, please explain that in the " "BTS." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:175 msgid "" "People participating in the party have special rules for NMU, they can NMU " "without prior notice if they upload their NMU to DELAYED/3-day at least. " "All other NMU rules apply as usually; they should send the patch of the NMU " "to the BTS (to one of the open bugs fixed by the NMU, or to a new bug, " "tagged fixed). They should also respect any particular wishes of the " "maintainer." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:182 msgid "" "If you don't feel confident about doing an NMU, just send a patch to the " "BTS. It's far better than a broken NMU." msgstr "" #. type: Content of: <chapter><section><title> #: beyond-pkging.dbk:190 msgid "Contacting other maintainers" msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:192 msgid "" "During your lifetime within Debian, you will have to contact other " "maintainers for various reasons. You may want to discuss a new way of " "cooperating between a set of related packages, or you may simply remind " "someone that a new upstream version is available and that you need it." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:198 msgid "" "Looking up the email address of the maintainer for the package can be " "distracting. Fortunately, there is a simple email alias, " "<literal><replaceable>package</replaceable>@&packages-host;</literal>, which " "provides a way to email the maintainer, whatever their individual email " "address (or addresses) may be. Replace <replaceable>package</replaceable> " "with the name of a source or a binary package." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:206 msgid "" "You may also be interested in contacting the persons who are subscribed to a " "given source package via <xref linkend=\"pkg-tracking-system\"/>. You can " "do so by using the " "<literal><replaceable>package</replaceable>@&pts-host;</literal> email " "address." msgstr "" #. type: Content of: <chapter><section><title> #: beyond-pkging.dbk:215 msgid "Dealing with inactive and/or unreachable maintainers" msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:217 msgid "" "If you notice that a package is lacking maintenance, you should make sure " "that the maintainer is active and will continue to work on their packages. " "It is possible that they are not active any more, but haven't registered out " "of the system, so to speak. On the other hand, it is also possible that " "they just need a reminder." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:224 msgid "" "There is a simple system (the MIA database) in which information about " "maintainers who are deemed Missing In Action is recorded. When a member of " "the QA group contacts an inactive maintainer or finds more information about " "one, this is recorded in the MIA database. This system is available in " "<filename>/org/qa.debian.org/mia</filename> on the host " "<literal>qa.debian.org</literal>, and can be queried with the " "<command>mia-query</command> tool. Use <command>mia-query --help</command> " "to see how to query the database. If you find that no information has been " "recorded about an inactive maintainer yet, or that you can add more " "information, you should generally proceed as follows." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:235 msgid "" "The first step is to politely contact the maintainer, and wait a reasonable " "time for a response. It is quite hard to define reasonable time, but it is " "important to take into account that real life is sometimes very hectic. One " "way to handle this would be to send a reminder after two weeks." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:241 msgid "" "If the maintainer doesn't reply within four weeks (a month), one can assume " "that a response will probably not happen. If that happens, you should " "investigate further, and try to gather as much useful information about the " "maintainer in question as possible. This includes:" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:249 msgid "" "The <literal>echelon</literal> information available through the <ulink " "url=\"&url-debian-db;\">developers' LDAP database</ulink>, which indicates " "when the developer last posted to a Debian mailing list. (This includes " "mails about uploads distributed via the &email-debian-devel-changes; list.) " "Also, remember to check whether the maintainer is marked as on vacation in " "the database." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:259 msgid "" "The number of packages this maintainer is responsible for, and the condition " "of those packages. In particular, are there any RC bugs that have been open " "for ages? Furthermore, how many bugs are there in general? Another important " "piece of information is whether the packages have been NMUed, and if so, by " "whom." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:268 msgid "" "Is there any activity of the maintainer outside of Debian? For example, they " "might have posted something recently to non-Debian mailing lists or news " "groups." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:275 msgid "" "A bit of a problem are packages which were sponsored — the maintainer is not " "an official Debian developer. The <literal>echelon</literal> information is " "not available for sponsored people, for example, so you need to find and " "contact the Debian developer who has actually uploaded the package. Given " "that they signed the package, they're responsible for the upload anyhow, and " "are likely to know what happened to the person they sponsored." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:283 msgid "" "It is also allowed to post a query to &email-debian-devel;, asking if anyone " "is aware of the whereabouts of the missing maintainer. Please Cc: the " "person in question." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:288 msgid "" "Once you have gathered all of this, you can contact &email-mia;. People on " "this alias will use the information you provide in order to decide how to " "proceed. For example, they might orphan one or all of the packages of the " "maintainer. If a package has been NMUed, they might prefer to contact the " "NMUer before orphaning the package — perhaps the person who has done the NMU " "is interested in the package." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:296 msgid "" "One last word: please remember to be polite. We are all volunteers and " "cannot dedicate all of our time to Debian. Also, you are not aware of the " "circumstances of the person who is involved. Perhaps they might be " "seriously ill or might even have died — you do not know who may be on the " "receiving side. Imagine how a relative will feel if they read the e-mail of " "the deceased and find a very impolite, angry and accusing message!" msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:304 msgid "" "On the other hand, although we are volunteers, we do have a responsibility. " "So you can stress the importance of the greater good — if a maintainer does " "not have the time or interest anymore, they should let go and give the " "package to someone with more time." msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:310 msgid "" "If you are interested in working in the MIA team, please have a look at the " "<filename>README</filename> file in " "<filename>/org/qa.debian.org/mia</filename> on " "<literal>qa.debian.org</literal> where the technical details and the MIA " "procedures are documented and contact &email-mia;." msgstr "" #. type: Content of: <chapter><section><title> #: beyond-pkging.dbk:318 msgid "Interacting with prospective Debian developers" msgstr "" #. type: Content of: <chapter><section><para> #: beyond-pkging.dbk:320 msgid "" "Debian's success depends on its ability to attract and retain new and " "talented volunteers. If you are an experienced developer, we recommend that " "you get involved with the process of bringing in new developers. This " "section describes how to help new prospective developers." msgstr "" #. type: Content of: <chapter><section><section><title> #: beyond-pkging.dbk:326 msgid "Sponsoring packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:328 msgid "" "Sponsoring a package means uploading a package for a maintainer who is not " "able to do it on their own. It's not a trivial matter, the sponsor must " "verify the packaging and ensure that it is of the high level of quality that " "Debian strives to have." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:334 msgid "Debian Developers can sponsor packages. Debian Maintainers can't." msgstr "" #. type: Content of: <chapter><section><section><para><orderedlist><listitem><para> #: beyond-pkging.dbk:340 msgid "" "The maintainer prepares a source package (<filename>.dsc</filename>) and " "puts it online somewhere (like on <ulink " "url=\"http://mentors.debian.net/cgi-bin/welcome\">mentors.debian.net</ulink>) " "or even better, provides a link to a public VCS repository (see <xref " "linkend=\"servers-vcs\"/>) where the package is maintained." msgstr "" #. type: Content of: <chapter><section><section><para><orderedlist><listitem><para> #: beyond-pkging.dbk:346 msgid "The sponsor downloads (or checkouts) the source package." msgstr "" #. type: Content of: <chapter><section><section><para><orderedlist><listitem><para> #: beyond-pkging.dbk:349 msgid "" "The sponsor reviews the source package. If they find issues, they inform the " "maintainer and ask them to provide a fixed version (the process starts over " "at step 1)." msgstr "" #. type: Content of: <chapter><section><section><para><orderedlist><listitem><para> #: beyond-pkging.dbk:354 msgid "" "The sponsor could not find any remaining problem. They build the package, " "sign it, and upload it to Debian." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:337 msgid "" "The process of sponsoring a package is: <placeholder type=\"orderedlist\" " "id=\"0\"/>" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:360 msgid "" "Before delving in the details of how to sponsor a package, you should ask " "yourself whether adding the proposed package is beneficial to Debian." msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:364 msgid "" "There's no simple rule to answer this question, it can depend on many " "factors: is the upstream codebase mature and not full of security holes? Are " "there pre-existing packages that can do the same task and how do they " "compare to this new package? Has the new package been requested by users and " "how large is the user base? How active are the upstream developers?" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:371 msgid "" "You should also ensure that the prospective maintainer is going to be a good " "maintainer. Do they already have some experience with other packages? If " "yes, are they doing a good job with them (check out some bugs)? Are they " "familiar with the package and its programming language? Do they have the " "skills needed for this package? If not, are they able to learn them?" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:379 msgid "" "It's also a good idea to know where they stand with respect to Debian: do " "they agree with Debian's philosophy and do they intend to join Debian? Given " "how easy it is to become a Debian Maintainer, you might want to only sponsor " "people who plan to join. That way you know from the start that you won't " "have to act as a sponsor indefinitely." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: beyond-pkging.dbk:386 msgid "Sponsoring a new package" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:388 msgid "" "New maintainers usually have certain difficulties creating Debian packages — " "this is quite understandable. They will do mistakes. That's why sponsoring a " "brand new package into Debian requires a thorough review of the Debian " "packaging. Sometimes several iterations will be needed until the package is " "good enough to be uploaded to Debian. Thus being a sponsor implies being a " "mentor." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:396 msgid "" "Don't ever sponsor a new package without reviewing it. The review of new " "packages done by ftpmasters mainly ensures that the software is really " "free. Of course, it happens that they stumble on packaging problems but they " "really should not. It's your task to ensure that the uploaded package " "complies with the Debian Free Software Guidelines and is of good quality." msgstr "" #. type: Content of: <chapter><section><section><section><para><footnote><para> #: beyond-pkging.dbk:409 msgid "" "You can find more checks in the wiki where several developers share their " "own <ulink url=\"https://wiki.debian.org/SponsorChecklist\">sponsorship " "checklists</ulink>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:404 msgid "" "Building the package and testing the software is part of the review, but " "it's also not enough. The rest of this section contains a non-exhaustive " "list of points to check in your review. <placeholder type=\"footnote\" " "id=\"0\"/>" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:416 msgid "" "Verify that the upstream tarball provided is the same that has been " "distributed by the upstream author (when the sources are repackaged for " "Debian, generate the modified tarball yourself)." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:421 msgid "" "Run <command>lintian</command> (see <xref linkend=\"lintian\"/>). It will " "catch many common problems. Be sure to verify that any " "<command>lintian</command> overrides setup by the maintainer is fully " "justified." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:426 msgid "" "Run <command>licensecheck</command> (part of <xref linkend=\"devscripts\"/>) " "and verify that <filename>debian/copyright</filename> seems correct and " "complete. Look for license problems (like files with “All rights reserved” " "headers, or with a non-DFSG compliant license). <command>grep -ri</command> " "is your friend for this task." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:433 msgid "" "Build the package with <command>pbuilder</command> (or any similar tool, see " "<xref linkend=\"pbuilder\"/>) to ensure that the build-dependencies are " "complete." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:438 msgid "" "Proofread <filename>debian/control</filename>: does it follow the best " "practices (see <xref linkend=\"bpp-debian-control\"/>)? Are the dependencies " "complete?" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:443 msgid "" "Proofread <filename>debian/rules</filename>: does it follow the best " "practices (see <xref linkend=\"bpp-debian-rules\"/>)? Do you see some " "possible improvements?" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:448 msgid "" "Proofread the maintainer scripts (<filename>preinst</filename>, " "<filename>postinst</filename>, <filename>prerm</filename>, " "<filename>postrm</filename>, <filename>config</filename>): will the " "<filename>preinst</filename>/<filename>postrm</filename> work when the " "dependencies are not installed? Are all the scripts idempotent (i.e. can you " "run them multiple times without consequences)?" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:456 msgid "" "Review any change to upstream files (either in " "<filename>.diff.gz</filename>, or in <filename>debian/patches/</filename> or " "directly embedded in the <filename>debian</filename> tarball for binary " "files). Are they justified? Are they properly documented (with <ulink " "url=\"&url-dep3;\">DEP-3</ulink> for patches)?" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:462 msgid "" "For every file, ask yourself why the file is there and whether it's the " "right way to achieve the desired result. Is the maintainer following the " "best packaging practices (see <xref linkend=\"best-pkging-practices\"/>)?" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: beyond-pkging.dbk:468 msgid "" "Build the packages, install them and try the software. Ensure you can remove " "and purge the packages. Maybe test them with <command>piuparts</command>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:474 msgid "" "If the audit did not reveal any problem, you can build the package and " "upload it to Debian. Remember that even if you're not the maintainer, as a " "sponsor you are still responsible for what you upload to Debian. That's why " "you're encouraged to keep up with the package through the <xref " "linkend=\"pkg-tracking-system\"/>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:481 msgid "" "Note that you should not need to modify the source package to put your name " "in the <filename>changelog</filename> or in the <filename>control</filename> " "file. The <literal>Maintainer</literal> field of the " "<filename>control</filename> file and the <filename>changelog</filename> " "should list the person who did the packaging, i.e. the sponsoree. That way " "they will get all the BTS mail." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:487 msgid "" "Instead you should instruct <command>dpkg-buildpackage</command> to use your " "key for the signature. You do that with the <literal>-k</literal> option:" msgstr "" #. type: Content of: <chapter><section><section><section><screen> #: beyond-pkging.dbk:490 #, no-wrap msgid "dpkg-buildpackage -k<replaceable>KEY-ID</replaceable>\n" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:492 msgid "" "If you use <command>debuild</command> and <command>debsign</command>, you " "can even configure it permanently in <filename>~/.devscripts</filename>:" msgstr "" #. type: Content of: <chapter><section><section><section><programlisting> #: beyond-pkging.dbk:495 #, no-wrap msgid "DEBSIGN_KEYID=<replaceable>KEY-ID</replaceable>\n" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: beyond-pkging.dbk:500 msgid "Sponsoring an update of an existing package" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:502 msgid "" "You will usually assume that the package has already gone through a full " "review. So instead of doing it again, you will carefully analyze the " "difference between the current version and the new version prepared by the " "maintainer. If you have not done the initial review yourself, you might " "still want to have a more deeper look just in case the initial reviewer was " "sloppy." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:510 msgid "" "To be able to analyze the difference you need both versions. Download the " "current version of the source package (with <command>apt-get " "source</command>) and rebuild it (or download the current binary packages " "with <command>aptitude download</command>). Download the source package to " "sponsor (usually with <command>dget</command>)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:517 msgid "" "Read the new changelog entry, it should tell you what to expect during the " "review. The main tool you will use is <command>debdiff</command> (provide by " "the <systemitem role=\"package\">devscripts</systemitem> package), you can " "run it with two source packages (<filename>.dsc</filename> files), or two " "binary packages, or two <filename>.changes</filename> files (it will then " "compare all the binary packages listed in the " "<filename>.changes</filename>)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:524 msgid "" "If you compare the source packages (excluding upstream files in the case of " "a new upstream version, for example by filtering the output of " "<command>debdiff</command> with <command>filterdiff -i " "'*/debian/*'</command>), you must understand all the changes you see and " "they should be properly documented in the Debian changelog." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:531 msgid "" "If everything is fine, build the package and compare the binary packages to " "verify that the changes on the source package have no unexpected " "consequences (like some files dropped by mistake, missing dependencies, " "etc.)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:537 msgid "" "You might want to check out the Package Tracking System (see <xref " "linkend=\"pkg-tracking-system\"/>) to verify if the maintainer has not " "missed something important. Maybe there are translations updates sitting in " "the BTS that could have been integrated. Maybe the package has been NMUed " "and the maintainer forgot to integrate the changes from the NMU into their " "package. Maybe there's a release critical bug that they have left unhandled " "and that's blocking migration to <literal>testing</literal>. If you find " "something that they could have done (better), it's time to tell them so that " "they can improve for next time, and so that they have a better understanding " "of their responsibilities." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: beyond-pkging.dbk:549 msgid "" "If you have found no major problem, upload the new version. Otherwise ask " "the maintainer to provide you a fixed version." msgstr "" #. type: Content of: <chapter><section><section><title> #: beyond-pkging.dbk:556 msgid "Advocating new developers" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:558 msgid "" "See the page about <ulink url=\"&url-newmaint-advocate;\">advocating a " "prospective developer</ulink> at the Debian web site." msgstr "" #. type: Content of: <chapter><section><section><title> #: beyond-pkging.dbk:565 msgid "Handling new maintainer applications" msgstr "" #. type: Content of: <chapter><section><section><para> #: beyond-pkging.dbk:567 msgid "" "Please see <ulink url=\"&url-newmaint-amchecklist;\">Checklist for " "Application Managers</ulink> at the Debian web site." msgstr "" #. type: Content of: <chapter><title> #: developer-duties.dbk:7 msgid "Debian Developer's Duties" msgstr "" #. type: Content of: <chapter><section><title> #: developer-duties.dbk:10 msgid "Package Maintainer's Duties" msgstr "" #. type: Content of: <chapter><section><para> #: developer-duties.dbk:11 msgid "" "As a package maintainer, you're supposed to provide high-quality packages " "that are well integrated in the system and that adhere to the Debian Policy." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:16 msgid "Work towards the next <literal>stable</literal> release" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:18 msgid "" "Providing high-quality packages in <literal>unstable</literal> is not " "enough, most users will only benefit from your packages when they are " "released as part of the next <literal>stable</literal> release. You are thus " "expected to collaborate with the release team to ensure your packages get " "included." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:24 msgid "" "More concretely, you should monitor whether your packages are migrating to " "<literal>testing</literal> (see <xref linkend=\"testing\"/>). When the " "migration doesn't happen after the test period, you should analyze why and " "work towards fixing this. It might mean fixing your package (in the case of " "release-critical bugs or failures to build on some architecture) but it can " "also mean updating (or fixing, or removing from <literal>testing</literal>) " "other packages to help complete a transition in which your package is " "entangled due to its dependencies. The release team might provide you some " "input on the current blockers of a given transition if you are not able to " "identify them." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:37 msgid "Maintain packages in <literal>stable</literal>" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:39 msgid "" "Most of the package maintainer's work goes into providing updated versions " "of packages in <literal>unstable</literal>, but their job also entails " "taking care of the packages in the current <literal>stable</literal> " "release." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:44 msgid "" "While changes in <literal>stable</literal> are discouraged, they are " "possible. Whenever a security problem is reported, you should collaborate " "with the security team to provide a fixed version (see <xref " "linkend=\"bug-security\"/>). When bugs of severity important (or more) are " "reported against the <literal>stable</literal> version of your packages, you " "should consider providing a targeted fix. You can ask the " "<literal>stable</literal> release team whether they would accept such an " "update and then prepare a <literal>stable</literal> upload (see <xref " "linkend=\"upload-stable\"/>)." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:56 msgid "Manage release-critical bugs" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:58 msgid "" "Generally you should deal with bug reports on your packages as described in " "<xref linkend=\"bug-handling\"/>. However, there's a special category of " "bugs that you need to take care of — the so-called release-critical bugs (RC " "bugs). All bug reports that have severity <literal>critical</literal>, " "<literal>grave</literal> or <literal>serious</literal> make the package " "unsuitable for inclusion in the next <literal>stable</literal> release. " "They can thus delay the Debian release (when they affect a package in " "<literal>testing</literal>) or block migrations to " "<literal>testing</literal> (when they only affect the package in " "<literal>unstable</literal>). In the worst scenario, they will lead to the " "package's removal. That's why these bugs need to be corrected as quickly as " "possible." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:70 msgid "" "If, for any reason, you aren't able fix an RC bug in a package of yours " "within 2 weeks (for example due to time constraints, or because it's " "difficult to fix), you should mention it clearly in the bug report and you " "should tag the bug <literal>help</literal> to invite other volunteers to " "chime in. Be aware that RC bugs are frequently the targets of Non-Maintainer " "Uploads (see <xref linkend=\"nmu\"/>) because they can block the " "<literal>testing</literal> migration of many packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:79 msgid "" "Lack of attention to RC bugs is often interpreted by the QA team as a sign " "that the maintainer has disappeared without properly orphaning their " "package. The MIA team might also get involved, which could result in your " "packages being orphaned (see <xref linkend=\"mia-qa\" />)." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:87 msgid "Coordination with upstream developers" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:89 msgid "" "A big part of your job as Debian maintainer will be to stay in contact with " "the upstream developers. Debian users will sometimes report bugs that are " "not specific to Debian to our bug tracking system. You have to forward " "these bug reports to the upstream developers so that they can be fixed in a " "future upstream release." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:96 msgid "" "While it's not your job to fix non-Debian specific bugs, you may freely do " "so if you're able. When you make such fixes, be sure to pass them on to the " "upstream maintainers as well. Debian users and developers will sometimes " "submit patches to fix upstream bugs — you should evaluate and forward these " "patches upstream." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:103 msgid "" "If you need to modify the upstream sources in order to build a policy " "compliant package, then you should propose a nice fix to the upstream " "developers which can be included there, so that you won't have to modify the " "sources of the next upstream version. Whatever changes you need, always try " "not to fork from the upstream sources." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:110 msgid "" "If you find that the upstream developers are or become hostile towards " "Debian or the free software community, you may want to re-consider the need " "to include the software in Debian. Sometimes the social cost to the Debian " "community is not worth the benefits the software may bring." msgstr "" #. type: Content of: <chapter><section><title> #: developer-duties.dbk:120 msgid "Administrative Duties" msgstr "" #. type: Content of: <chapter><section><para> #: developer-duties.dbk:121 msgid "" "A project of the size of Debian relies on some administrative infrastructure " "to keep track of everything. As a project member, you have some duties to " "ensure everything keeps running smoothly." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:126 msgid "Maintaining your Debian information" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:128 msgid "" "There's a LDAP database containing information about Debian developers at " "<ulink url=\"&url-debian-db;\"></ulink>. You should enter your information " "there and update it as it changes. Most notably, make sure that the address " "where your debian.org email gets forwarded to is always up to date, as well " "as the address where you get your debian-private subscription if you choose " "to subscribe there." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:136 msgid "" "For more information about the database, please see <xref " "linkend=\"devel-db\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:141 msgid "Maintaining your public key" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:143 msgid "" "Be very careful with your private keys. Do not place them on any public " "servers or multiuser machines, such as the Debian servers (see <xref " "linkend=\"server-machines\"/>). Back your keys up; keep a copy offline. " "Read the documentation that comes with your software; read the <ulink " "url=\"&url-pgp-faq;\">PGP FAQ</ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:150 msgid "" "You need to ensure not only that your key is secure against being stolen, " "but also that it is secure against being lost. Generate and make a copy " "(best also in paper form) of your revocation certificate; this is needed if " "your key is lost." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:156 msgid "" "If you add signatures to your public key, or add user identities, you can " "update the Debian key ring by sending your key to the key server at " "<literal>&keyserver-host;</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:161 msgid "" "If you need to add a completely new key or remove an old key, you need to " "get the new key signed by another developer. If the old key is compromised " "or invalid, you also have to add the revocation certificate. If there is no " "real reason for a new key, the Keyring Maintainers might reject the new " "key. Details can be found at <ulink " "url=\"http://&keyserver-host;/replacing_keys.html\"></ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:169 msgid "" "The same key extraction routines discussed in <xref " "linkend=\"registering\"/> apply." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:173 msgid "" "You can find a more in-depth discussion of Debian key maintenance in the " "documentation of the <systemitem " "role=\"package\">debian-keyring</systemitem> package." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:180 msgid "Voting" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:182 msgid "" "Even though Debian isn't really a democracy, we use a democratic process to " "elect our leaders and to approve general resolutions. These procedures are " "defined by the <ulink url=\"&url-constitution;\">Debian " "Constitution</ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:188 msgid "" "Other than the yearly leader election, votes are not routinely held, and " "they are not undertaken lightly. Each proposal is first discussed on the " "&email-debian-vote; mailing list and it requires several endorsements before " "the project secretary starts the voting procedure." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:194 msgid "" "You don't have to track the pre-vote discussions, as the secretary will " "issue several calls for votes on &email-debian-devel-announce; (and all " "developers are expected to be subscribed to that list). Democracy doesn't " "work well if people don't take part in the vote, which is why we encourage " "all developers to vote. Voting is conducted via GPG-signed/encrypted email " "messages." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:202 msgid "" "The list of all proposals (past and current) is available on the <ulink " "url=\"&url-vote;\">Debian Voting Information</ulink> page, along with " "information on how to make, second and vote on proposals." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:209 msgid "Going on vacation gracefully" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:211 msgid "" "It is common for developers to have periods of absence, whether those are " "planned vacations or simply being buried in other work. The important thing " "to notice is that other developers need to know that you're on vacation so " "that they can do whatever is needed if a problem occurs with your packages " "or other duties in the project." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:218 msgid "" "Usually this means that other developers are allowed to NMU (see <xref " "linkend=\"nmu\"/>) your package if a big problem (release critical bug, " "security update, etc.) occurs while you're on vacation. Sometimes it's " "nothing as critical as that, but it's still appropriate to let others know " "that you're unavailable." msgstr "" #. type: Content of: <chapter><section><section><para><footnote><para> #: developer-duties.dbk:227 msgid "" "This is so that the message can be easily filtered by people who don't want " "to read vacation notices." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:225 msgid "" "In order to inform the other developers, there are two things that you " "should do. First send a mail to <email>debian-private@&lists-host;</email> " "with [VAC] prepended to the subject of your message<placeholder " "type=\"footnote\" id=\"0\"/> and state the period of time when you will be " "on vacation. You can also give some special instructions on what to do if a " "problem occurs." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:234 msgid "" "The other thing to do is to mark yourself as on vacation in the <link " "linkend=\"devel-db\">Debian developers' LDAP database</link> (this " "information is only accessible to Debian developers). Don't forget to " "remove the on vacation flag when you come back!" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:240 msgid "" "Ideally, you should sign up at the <ulink url=\"&url-gpg-coord;\">GPG " "coordination pages</ulink> when booking a holiday and check if anyone there " "is looking for signing. This is especially important when people go to " "exotic places where we don't have any developers yet but where there are " "people who are interested in applying." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:249 msgid "Retiring" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:251 msgid "" "If you choose to leave the Debian project, you should make sure you do the " "following steps:" msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: developer-duties.dbk:257 msgid "Orphan all your packages, as described in <xref linkend=\"orphaning\"/>." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: developer-duties.dbk:262 msgid "" "Send an gpg-signed email about why you are leaving the project to " "<email>debian-private@&lists-host;</email>." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: developer-duties.dbk:268 msgid "" "Notify the Debian key ring maintainers that you are leaving by opening a " "ticket in Debian RT by sending a mail to &email-keyring; with the words " "'Debian RT' somewhere in the subject line (case doesn't matter)." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:275 msgid "" "It is important that the above process is followed, because finding inactive " "developers and orphaning their packages takes significant time and effort." msgstr "" #. type: Content of: <chapter><section><section><title> #: developer-duties.dbk:281 msgid "Returning after retirement" msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:283 msgid "" "A retired developer's account is marked as \"emeritus\" when the process in " "<xref linkend=\"s3.7\"/> is followed, and \"disabled\" otherwise. Retired " "developers with an \"emeritus\" account can get their account re-activated " "as follows:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: developer-duties.dbk:292 msgid "Contact &email-debian-account-manager;." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: developer-duties.dbk:297 msgid "" "Go through a shortened NM process (to ensure that the returning developer " "still knows important parts of P&P and T&S)." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: developer-duties.dbk:303 msgid "" "Prove that they still control the GPG key associated with the account, or " "provide proof of identify on a new GPG key, with at least two signatures " "from other developers." msgstr "" #. type: Content of: <chapter><section><section><para> #: developer-duties.dbk:310 msgid "Retired developers with a \"disabled\" account need to go through NM again." msgstr "" #. type: Attribute 'lang' of: <book> #: index.dbk:7 msgid "en" msgstr "" #. type: Content of: <book><title> #: index.dbk:9 msgid "Debian Developer's Reference" msgstr "" #. type: Content of: <book><bookinfo> #: index.dbk:11 msgid "" "<author> <othername>Developer's Reference Team</othername> &email-devel-ref; " "</author> <author> <firstname>Andreas</firstname> <surname>Barth</surname> " "</author> <author> <firstname>Adam</firstname> <surname>Di Carlo</surname> " "</author> <author> <firstname>Raphaël</firstname> <surname>Hertzog</surname> " "</author> <author> <firstname>Lucas</firstname> <surname>Nussbaum</surname> " "</author> <author> <firstname>Christian</firstname> " "<surname>Schwarz</surname> </author> <author> <firstname>Ian</firstname> " "<surname>Jackson</surname> </author>" msgstr "" #. type: Content of: <book><bookinfo><releaseinfo> #: index.dbk:33 msgid "ver. &version;" msgstr "" #. type: Content of: <book><bookinfo> #: index.dbk:34 msgid "" "<pubdate>&pubdate;</pubdate> <copyright> <year>2004</year> <year>2005</year> " "<year>2006</year> <year>2007</year> <holder>Andreas Barth</holder> " "</copyright> <copyright> <year>1998</year> <year>1999</year> " "<year>2000</year> <year>2001</year> <year>2002</year> <year>2003</year> " "<holder>Adam Di Carlo</holder> </copyright> <copyright> <year>2002</year> " "<year>2003</year> <year>2008</year> <year>2009</year> <holder>Raphaël " "Hertzog</holder> </copyright> <copyright> <year>2008</year> " "<year>2009</year> <holder>Lucas Nussbaum</holder> </copyright> <copyright> " "<year>1997</year> <year>1998</year> <holder>Christian Schwarz</holder> " "</copyright>" msgstr "" #. type: Content of: <book><bookinfo><legalnotice><para> #: index.dbk:70 msgid "" "This manual is free software; you may redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2, or (at your option) any later " "version." msgstr "" #. type: Content of: <book><bookinfo><legalnotice><para> #: index.dbk:75 msgid "" "This is distributed in the hope that it will be useful, but " "<emphasis>without any warranty</emphasis>; without even the implied warranty " "of merchantability or fitness for a particular purpose. See the GNU General " "Public License for more details." msgstr "" #. type: Content of: <book><bookinfo><legalnotice><para> #: index.dbk:81 msgid "" "A copy of the GNU General Public License is available as &file-GPL; in the " "&debian-formal; distribution or on the World Wide Web at <ulink " "url=\"&url-gpl;\">the GNU web site</ulink>. You can also obtain it by " "writing to the &fsf-addr;." msgstr "" #. TODO: Maybe better: "This document has originally been written #. in English. Translations into different languages are available." #. type: Content of: <book><bookinfo><legalnotice><para> #: index.dbk:88 msgid "" "If you want to print this reference, you should use the <ulink " "url=\"developers-reference.pdf\">pdf version</ulink>. This page is also " "available in <ulink url=\"index.fr.html\">French</ulink>, <ulink " "url=\"index.de.html\">German</ulink> and <ulink " "url=\"index.ja.html\">Japanese</ulink>." msgstr "" #. type: Content of: <chapter><title> #: l10n.dbk:7 msgid "Internationalization and Translations" msgstr "" #. type: Content of: <chapter><para> #: l10n.dbk:9 msgid "" "Debian supports an ever-increasing number of natural languages. Even if you " "are a native English speaker and do not speak any other language, it is part " "of your duty as a maintainer to be aware of issues of internationalization " "(abbreviated i18n because there are 18 letters between the 'i' and the 'n' " "in internationalization). Therefore, even if you are ok with English-only " "programs, you should read most of this chapter." msgstr "" #. type: Content of: <chapter><para> #: l10n.dbk:17 msgid "" "According to <ulink url=\"&url-i18n-intro;\">Introduction to i18n</ulink> " "from Tomohiro KUBOTA, I18N (internationalization) means modification of a " "software or related technologies so that a software can potentially handle " "multiple languages, customs, and so on in the world, while L10N " "(localization) means implementation of a specific language for an already " "internationalized software." msgstr "" #. type: Content of: <chapter><para> #: l10n.dbk:26 msgid "" "l10n and i18n are interconnected, but the difficulties related to each of " "them are very different. It's not really difficult to allow a program to " "change the language in which texts are displayed based on user settings, but " "it is very time consuming to actually translate these messages. On the " "other hand, setting the character encoding is trivial, but adapting the code " "to use several character encodings is a really hard problem." msgstr "" #. type: Content of: <chapter><para> #: l10n.dbk:34 msgid "" "Setting aside the i18n problems, where no general guideline can be given, " "there is actually no central infrastructure for l10n within Debian which " "could be compared to the buildd mechanism for porting. So most of the work " "has to be done manually." msgstr "" #. type: Content of: <chapter><section><title> #: l10n.dbk:40 msgid "How translations are handled within Debian" msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:42 msgid "" "Handling translation of the texts contained in a package is still a manual " "task, and the process depends on the kind of text you want to see " "translated." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:46 msgid "" "For program messages, the gettext infrastructure is used most of the time. " "Most of the time, the translation is handled upstream within projects like " "the <ulink url=\"&url-l10n-tp;\">Free Translation Project</ulink>, the " "<ulink url=\"&url-l10n-gnome;\">Gnome translation Project</ulink> or the " "<ulink url=\"&url-l10n-kde;\">KDE one</ulink>. The only centralized " "resource within Debian is the <ulink url=\"&url-l10n;\">Central Debian " "translation statistics</ulink>, where you can find some statistics about the " "translation files found in the actual packages, but no real infrastructure " "to ease the translation process." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:59 msgid "" "An effort to translate the package descriptions started long ago, even if " "very little support is offered by the tools to actually use them (i.e., only " "APT can use them, when configured correctly). Maintainers don't need to do " "anything special to support translated package descriptions; translators " "should use the <ulink url=\"&url-ddtp;\">Debian Description Translation " "Project (DDTP)</ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:66 msgid "" "For <systemitem role=\"package\">debconf</systemitem> templates, maintainers " "should use the <systemitem role=\"package\">po-debconf</systemitem> package " "to ease the work of translators, who could use the DDTP to do their work " "(but the French and Brazilian teams don't). Some statistics can be found " "both on the <ulink url=\"&url-ddtp;\">DDTP site</ulink> (about what is " "actually translated), and on the <ulink url=\"&url-l10n;\">Central Debian " "translation statistics</ulink> site (about what is integrated in the " "packages)." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:75 msgid "" "For web pages, each l10n team has access to the relevant VCS, and the " "statistics are available from the Central Debian translation statistics " "site." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:79 msgid "" "For general documentation about Debian, the process is more or less the same " "as for the web pages (the translators have access to the VCS), but there are " "no statistics pages." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:84 msgid "" "For package-specific documentation (man pages, info documents, other " "formats), almost everything remains to be done." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:88 msgid "" "Most notably, the KDE project handles translation of its documentation in " "the same way as its program messages." msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:92 msgid "" "There is an effort to handle Debian-specific man pages within a <ulink " "url=\"&url-cvsweb;manpages/?cvsroot=debian-doc\">specific VCS " "repository</ulink>." msgstr "" #. type: Content of: <chapter><section><title> #: l10n.dbk:99 msgid "I18N & L10N FAQ for maintainers" msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:101 msgid "" "This is a list of problems that maintainers may face concerning i18n and " "l10n. While reading this, keep in mind that there is no real consensus on " "these points within Debian, and that this is only advice. If you have a " "better idea for a given problem, or if you disagree on some points, feel " "free to provide your feedback, so that this document can be enhanced." msgstr "" #. type: Content of: <chapter><section><section><title> #: l10n.dbk:108 msgid "How to get a given text translated" msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:110 msgid "" "To translate package descriptions or <systemitem " "role=\"package\">debconf</systemitem> templates, you have nothing to do; the " "DDTP infrastructure will dispatch the material to translate to volunteers " "with no need for interaction from your part." msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:115 msgid "" "For all other material (gettext files, man pages, or other documentation), " "the best solution is to put your text somewhere on the Internet, and ask on " "debian-i18n for a translation in different languages. Some translation team " "members are subscribed to this list, and they will take care of the " "translation and of the reviewing process. Once they are done, you will get " "your translated document from them in your mailbox." msgstr "" #. type: Content of: <chapter><section><section><title> #: l10n.dbk:125 msgid "How to get a given translation reviewed" msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:127 msgid "" "From time to time, individuals translate some texts in your package and will " "ask you for inclusion of the translation in the package. This can become " "problematic if you are not fluent in the given language. It is a good idea " "to send the document to the corresponding l10n mailing list, asking for a " "review. Once it has been done, you should feel more confident in the " "quality of the translation, and feel safe to include it in your package." msgstr "" #. type: Content of: <chapter><section><section><title> #: l10n.dbk:137 msgid "How to get a given translation updated" msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:139 msgid "" "If you have some translations of a given text lying around, each time you " "update the original, you should ask the previous translator to update the " "translation with your new changes. Keep in mind that this task takes time; " "at least one week to get the update reviewed and all." msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:145 msgid "" "If the translator is unresponsive, you may ask for help on the corresponding " "l10n mailing list. If everything fails, don't forget to put a warning in " "the translated document, stating that the translation is somehow outdated, " "and that the reader should refer to the original document if possible." msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:151 msgid "" "Avoid removing a translation completely because it is outdated. Old " "documentation is often better than no documentation at all for non-English " "speakers." msgstr "" #. type: Content of: <chapter><section><section><title> #: l10n.dbk:158 msgid "How to handle a bug report concerning a translation" msgstr "" #. TODO: add the i18n tag to the bug? #. type: Content of: <chapter><section><section><para> #: l10n.dbk:160 msgid "" "The best solution may be to mark the bug as forwarded to upstream, and " "forward it to both the previous translator and their team (using the " "corresponding debian-l10n-XXX mailing list)." msgstr "" #. type: Content of: <chapter><section><title> #: l10n.dbk:170 msgid "I18N & L10N FAQ for translators" msgstr "" #. type: Content of: <chapter><section><para> #: l10n.dbk:172 msgid "" "While reading this, please keep in mind that there is no general procedure " "within Debian concerning these points, and that in any case, you should " "collaborate with your team and the package maintainer." msgstr "" #. type: Content of: <chapter><section><section><title> #: l10n.dbk:177 msgid "How to help the translation effort" msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:179 msgid "" "Choose what you want to translate, make sure that nobody is already working " "on it (using your debian-l10n-XXX mailing list), translate it, get it " "reviewed by other native speakers on your l10n mailing list, and provide it " "to the maintainer of the package (see next point)." msgstr "" #. type: Content of: <chapter><section><section><title> #: l10n.dbk:187 msgid "How to provide a translation for inclusion in a package" msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:189 msgid "" "Make sure your translation is correct (asking for review on your l10n " "mailing list) before providing it for inclusion. It will save time for " "everyone, and avoid the chaos resulting in having several versions of the " "same document in bug reports." msgstr "" #. type: Content of: <chapter><section><section><para> #: l10n.dbk:195 msgid "" "The best solution is to file a regular bug containing the translation " "against the package. Make sure to use the 'PATCH' tag, and to not use a " "severity higher than 'wishlist', since the lack of translation never " "prevented a program from running." msgstr "" #. type: Content of: <chapter><section><title> #: l10n.dbk:205 msgid "Best current practice concerning l10n" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: l10n.dbk:209 msgid "" "As a maintainer, never edit the translations in any way (even to reformat " "the layout) without asking on the corresponding l10n mailing list. You risk " "for example breaking the encoding of the file by doing so. Moreover, what " "you consider an error can be right (or even needed) in the given language." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: l10n.dbk:217 msgid "" "As a translator, if you find an error in the original text, make sure to " "report it. Translators are often the most attentive readers of a given " "text, and if they don't report the errors they find, nobody will." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: l10n.dbk:224 msgid "" "In any case, remember that the major issue with l10n is that it requires " "several people to cooperate, and that it is very easy to start a flamewar " "about small problems because of misunderstandings. So if you have problems " "with your interlocutor, ask for help on the corresponding l10n mailing list, " "on debian-i18n, or even on debian-devel (but beware, l10n discussions very " "often become flamewars on that list :)" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: l10n.dbk:234 msgid "" "In any case, cooperation can only be achieved with <emphasis " "role=\"strong\">mutual respect</emphasis>." msgstr "" #. type: Content of: <chapter><title> #: new-maintainer.dbk:7 msgid "Applying to Become a Maintainer" msgstr "" #. type: Content of: <chapter><section><title> #: new-maintainer.dbk:9 msgid "Getting started" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:11 msgid "" "So, you've read all the documentation, you've gone through the <ulink " "url=\"&url-newmaint-guide;\">Debian New Maintainers' Guide</ulink>, " "understand what everything in the <systemitem " "role=\"package\">hello</systemitem> example package is for, and you're about " "to Debianize your favorite piece of software. How do you actually become a " "Debian developer so that your work can be incorporated into the Project?" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:19 msgid "" "Firstly, subscribe to &email-debian-devel; if you haven't already. Send the " "word <literal>subscribe</literal> in the <literal>Subject</literal> of an " "email to &email-debian-devel-req;. In case of problems, contact the list " "administrator at &email-listmaster;. More information on available mailing " "lists can be found in <xref linkend=\"mailing-lists\"/>. " "&email-debian-devel-announce; is another list which is mandatory for anyone " "who wishes to follow Debian's development." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:29 msgid "" "You should subscribe and lurk (that is, read without posting) for a bit " "before doing any coding, and you should post about your intentions to work " "on something to avoid duplicated effort." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:34 msgid "" "Another good list to subscribe to is &email-debian-mentors;. See <xref " "linkend=\"mentors\"/> for details. The IRC channel " "<literal>#debian</literal> can also be helpful; see <xref " "linkend=\"irc-channels\"/>." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:40 msgid "" "When you know how you want to contribute to &debian-formal;, you should get " "in contact with existing Debian maintainers who are working on similar " "tasks. That way, you can learn from experienced developers. For example, " "if you are interested in packaging existing software for Debian, you should " "try to get a sponsor. A sponsor will work together with you on your package " "and upload it to the Debian archive once they are happy with the packaging " "work you have done. You can find a sponsor by mailing the " "&email-debian-mentors; mailing list, describing your package and yourself " "and asking for a sponsor (see <xref linkend=\"sponsoring\"/> and <ulink " "url=\"&url-mentors;\"></ulink> for more information on sponsoring). On the " "other hand, if you are interested in porting Debian to alternative " "architectures or kernels you can subscribe to port specific mailing lists " "and ask there how to get started. Finally, if you are interested in " "documentation or Quality Assurance (QA) work you can join maintainers " "already working on these tasks and submit patches and improvements." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:57 msgid "" "One pitfall could be a too-generic local part in your mailadress: Terms like " "mail, admin, root, master should be avoided, please see <ulink " "url=\"&url-debian-lists;\"></ulink> for details." msgstr "" #. type: Content of: <chapter><section><title> #: new-maintainer.dbk:64 msgid "Debian mentors and sponsors" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:66 msgid "" "The mailing list &email-debian-mentors; has been set up for novice " "maintainers who seek help with initial packaging and other developer-related " "issues. Every new developer is invited to subscribe to that list (see <xref " "linkend=\"mailing-lists\"/> for details)." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:72 msgid "" "Those who prefer one-on-one help (e.g., via private email) should also post " "to that list and an experienced developer will volunteer to help." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:76 msgid "" "In addition, if you have some packages ready for inclusion in Debian, but " "are waiting for your new maintainer application to go through, you might be " "able find a sponsor to upload your package for you. Sponsors are people who " "are official Debian Developers, and who are willing to criticize and upload " "your packages for you. Please read the debian-mentors FAQ at <ulink " "url=\"&url-mentors;\"></ulink> first." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:84 msgid "" "If you wish to be a mentor and/or sponsor, more information is available in " "<xref linkend=\"newmaint\"/>." msgstr "" #. type: Content of: <chapter><section><title> #: new-maintainer.dbk:90 msgid "Registering as a Debian developer" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:92 msgid "" "Before you decide to register with &debian-formal;, you will need to read " "all the information available at the <ulink url=\"&url-newmaint;\">New " "Maintainer's Corner</ulink>. It describes in detail the preparations you " "have to do before you can register to become a Debian developer. For " "example, before you apply, you have to read the <ulink " "url=\"&url-social-contract;\">Debian Social Contract</ulink>. Registering " "as a developer means that you agree with and pledge to uphold the Debian " "Social Contract; it is very important that maintainers are in accord with " "the essential ideas behind &debian-formal;. Reading the <ulink " "url=\"&url-gnu-manifesto;\">GNU Manifesto</ulink> would also be a good idea." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:106 msgid "" "The process of registering as a developer is a process of verifying your " "identity and intentions, and checking your technical skills. As the number " "of people working on &debian-formal; has grown to over " "&number-of-maintainers; and our systems are used in several very important " "places, we have to be careful about being compromised. Therefore, we need " "to verify new maintainers before we can give them accounts on our servers " "and let them upload packages." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:115 msgid "" "Before you actually register you should have shown that you can do competent " "work and will be a good contributor. You show this by submitting patches " "through the Bug Tracking System and having a package sponsored by an " "existing Debian Developer for a while. Also, we expect that contributors " "are interested in the whole project and not just in maintaining their own " "packages. If you can help other maintainers by providing further " "information on a bug or even a patch, then do so!" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:124 msgid "" "Registration requires that you are familiar with Debian's philosophy and " "technical documentation. Furthermore, you need a GnuPG key which has been " "signed by an existing Debian maintainer. If your GnuPG key is not signed " "yet, you should try to meet a Debian Developer in person to get your key " "signed. There's a <ulink url=\"&url-gpg-coord;\">GnuPG Key Signing " "Coordination page</ulink> which should help you find a Debian Developer " "close to you. (If there is no Debian Developer close to you, alternative " "ways to pass the ID check may be permitted as an absolute exception on a " "case-by-case-basis. See the <ulink url=\"&url-newmaint-id;\">identification " "page</ulink> for more information.)" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:137 msgid "" "If you do not have an OpenPGP key yet, generate one. Every developer needs " "an OpenPGP key in order to sign and verify package uploads. You should read " "the manual for the software you are using, since it has much important " "information which is critical to its security. Many more security failures " "are due to human error than to software failure or high-powered spy " "techniques. See <xref linkend=\"key-maint\"/> for more information on " "maintaining your public key." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:145 msgid "" "Debian uses the <literal>GNU Privacy Guard</literal> (package <systemitem " "role=\"package\">gnupg</systemitem> version 1 or better) as its baseline " "standard. You can use some other implementation of OpenPGP as well. Note " "that OpenPGP is an open standard based on <ulink url=\"&url-rfc2440;\">RFC " "2440</ulink>." msgstr "" #. type: Content of: <chapter><section><para><footnote><para> #: new-maintainer.dbk:155 msgid "" "Version 4 keys are keys conforming to the OpenPGP standard as defined in RFC " "2440. Version 4 is the key type that has always been created when using " "GnuPG. PGP versions since 5.x also could create v4 keys, the other choice " "having been pgp 2.6.x compatible v3 keys (also called legacy RSA by PGP)." msgstr "" #. type: Content of: <chapter><section><para><footnote><para> #: new-maintainer.dbk:159 msgid "" "Version 4 (primary) keys can either use the RSA or the DSA algorithms, so " "this has nothing to do with GnuPG's question about which kind of key do you " "want: (1) DSA and Elgamal, (2) DSA (sign only), (5) RSA (sign only). If " "you don't have any special requirements just pick the default." msgstr "" #. type: Content of: <chapter><section><para><footnote><para> #: new-maintainer.dbk:163 msgid "" "The easiest way to tell whether an existing key is a v4 key or a v3 (or v2) " "key is to look at the fingerprint: Fingerprints of version 4 keys are the " "SHA-1 hash of some key material, so they are 40 hex digits, usually grouped " "in blocks of 4. Fingerprints of older key format versions used MD5 and are " "generally shown in blocks of 2 hex digits. For example if your fingerprint " "looks like " "<literal>5B00 C96D 5D54 AEE1 206B  AF84 DE7A AF6E 94C0 9C7F</literal> then " "it's a v4 key." msgstr "" #. type: Content of: <chapter><section><para><footnote><para> #: new-maintainer.dbk:170 msgid "" "Another possibility is to pipe the key into <command>pgpdump</command>, " "which will say something like Public Key Packet - Ver 4." msgstr "" #. type: Content of: <chapter><section><para><footnote><para> #: new-maintainer.dbk:172 msgid "" "Also note that your key must be self-signed (i.e. it has to sign all its " "own user IDs; this prevents user ID tampering). All modern OpenPGP software " "does that automatically, but if you have an older key you may have to " "manually add those signatures." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:152 msgid "" "You need a version 4 key for use in Debian Development. <ulink " "url=\"https://lists.debian.org/20090520092534.GG22906@earth.li\">Your key " "length must be greater than 1024 bits</ulink>; there is no reason to use a " "smaller key, and doing so would be much less secure.<placeholder " "type=\"footnote\" id=\"0\"/>" msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:178 msgid "" "If your public key isn't on a public key server such as &pgp-keyserv;, " "please read the documentation available at <ulink " "url=\"&url-newmaint-id;\">NM Step 2: Identification</ulink>. That document " "contains instructions on how to put your key on the public key servers. The " "New Maintainer Group will put your public key on the servers if it isn't " "already there." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:186 msgid "" "Some countries restrict the use of cryptographic software by their " "citizens. This need not impede one's activities as a Debian package " "maintainer however, as it may be perfectly legal to use cryptographic " "products for authentication, rather than encryption purposes. If you live " "in a country where use of cryptography even for authentication is forbidden " "then please contact us so we can make special arrangements." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:194 msgid "" "To apply as a new maintainer, you need an existing Debian Developer to " "support your application (an <literal>advocate</literal>). After you have " "contributed to Debian for a while, and you want to apply to become a " "registered developer, an existing developer with whom you have worked over " "the past months has to express their belief that you can contribute to " "Debian successfully." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:201 msgid "" "When you have found an advocate, have your GnuPG key signed and have already " "contributed to Debian for a while, you're ready to apply. You can simply " "register on our <ulink url=\"&url-newmaint-apply;\">application " "page</ulink>. After you have signed up, your advocate has to confirm your " "application. When your advocate has completed this step you will be " "assigned an Application Manager who will go with you through the necessary " "steps of the New Maintainer process. You can always check your status on " "the <ulink url=\"&url-newmaint-db;\">applications status board</ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: new-maintainer.dbk:211 msgid "" "For more details, please consult <ulink url=\"&url-newmaint;\">New " "Maintainer's Corner</ulink> at the Debian web site. Make sure that you are " "familiar with the necessary steps of the New Maintainer process before " "actually applying. If you are well prepared, you can save a lot of time " "later on." msgstr "" #. type: Content of: <chapter><title> #: pkgs.dbk:7 msgid "Managing Packages" msgstr "" #. type: Content of: <chapter><para> #: pkgs.dbk:9 msgid "" "This chapter contains information related to creating, uploading, " "maintaining, and porting packages." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:13 msgid "New packages" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:15 msgid "" "If you want to create a new package for the Debian distribution, you should " "first check the <ulink url=\"&url-wnpp;\">Work-Needing and Prospective " "Packages (WNPP)</ulink> list. Checking the WNPP list ensures that no one is " "already working on packaging that software, and that effort is not " "duplicated. Read the <ulink url=\"&url-wnpp;\">WNPP web pages</ulink> for " "more information." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:23 msgid "" "Assuming no one else is already working on your prospective package, you " "must then submit a bug report (<xref linkend=\"submit-bug\"/>) against the " "pseudo-package <systemitem role=\"package\">wnpp</systemitem> describing " "your plan to create a new package, including, but not limiting yourself to, " "a description of the package, the license of the prospective package, and " "the current URL where it can be downloaded from." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:31 msgid "" "You should set the subject of the bug to <literal>ITP: " "<replaceable>foo</replaceable> -- <replaceable>short " "description</replaceable></literal>, substituting the name of the new " "package for <replaceable>foo</replaceable>. The severity of the bug report " "must be set to <literal>wishlist</literal>. Please send a copy to " "&email-debian-devel; by using the X-Debbugs-CC header (don't use CC:, " "because that way the message's subject won't indicate the bug number). If " "you are packaging so many new packages (>10) that notifying the mailing " "list in separate messages is too disruptive, send a summary after filing the " "bugs to the debian-devel list instead. This will inform the other " "developers about upcoming packages and will allow a review of your " "description and package name." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:45 msgid "" "Please include a <literal>Closes: " "#<replaceable>nnnnn</replaceable></literal> entry in the changelog of the " "new package in order for the bug report to be automatically closed once the " "new package is installed in the archive (see <xref " "linkend=\"upload-bugfix\"/>)." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:51 msgid "" "If you think your package needs some explanations for the administrators of " "the NEW package queue, include them in your changelog, send to " "&email-ftpmaster; a reply to the email you receive as a maintainer after " "your upload, or reply to the rejection email in case you are already " "re-uploading." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:57 msgid "" "When closing security bugs include CVE numbers as well as the " "<literal>Closes: #<replaceable>nnnnn</replaceable></literal>. This is " "useful for the security team to track vulnerabilities. If an upload is made " "to fix the bug before the advisory ID is known, it is encouraged to modify " "the historical changelog entry with the next upload. Even in this case, " "please include all available pointers to background information in the " "original changelog entry." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:66 msgid "" "There are a number of reasons why we ask maintainers to announce their " "intentions:" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:72 msgid "" "It helps the (potentially new) maintainer to tap into the experience of " "people on the list, and lets them know if anyone else is working on it " "already." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:78 msgid "" "It lets other people thinking about working on the package know that there " "already is a volunteer, so efforts may be shared." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:84 msgid "" "It lets the rest of the maintainers know more about the package than the one " "line description and the usual changelog entry ``Initial release'' that gets " "posted to &email-debian-devel-changes;." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:91 msgid "" "It is helpful to the people who live off <literal>unstable</literal> (and " "form our first line of testers). We should encourage these people." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:97 msgid "" "The announcements give maintainers and other interested parties a better " "feel of what is going on, and what is new, in the project." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:103 msgid "" "Please see <ulink url=\"https://&ftp-master-host;/REJECT-FAQ.html\"></ulink> " "for common rejection reasons for a new package." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:109 msgid "Recording changes in the package" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:111 msgid "" "Changes that you make to the package need to be recorded in the " "<filename>debian/changelog</filename>. These changes should provide a " "concise description of what was changed, why (if it's in doubt), and note if " "any bugs were closed. They also record when the package was completed. " "This file will be installed in " "<filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.Debian.gz</filename>, " "or " "<filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.gz</filename> " "for native packages." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:122 msgid "" "The <filename>debian/changelog</filename> file conforms to a certain " "structure, with a number of different fields. One field of note, the " "<literal>distribution</literal>, is described in <xref " "linkend=\"distribution\"/>. More information about the structure of this " "file can be found in the Debian Policy section titled " "<filename>debian/changelog</filename>." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:130 msgid "" "Changelog entries can be used to automatically close Debian bugs when the " "package is installed into the archive. See <xref " "linkend=\"upload-bugfix\"/>." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:134 msgid "" "It is conventional that the changelog entry of a package that contains a new " "upstream version of the software looks like this:" msgstr "" #. type: Content of: <chapter><section><screen> #: pkgs.dbk:138 #, no-wrap msgid " * New upstream release.\n" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:141 msgid "" "There are tools to help you create entries and finalize the " "<filename>changelog</filename> for release — see <xref " "linkend=\"devscripts\"/> and <xref linkend=\"dpkg-dev-el\"/>." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:146 msgid "See also <xref linkend=\"bpp-debian-changelog\"/>." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:151 msgid "Testing the package" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:153 msgid "" "Before you upload your package, you should do basic testing on it. At a " "minimum, you should try the following activities (you'll need to have an " "older version of the same Debian package around):" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:160 msgid "" "Install the package and make sure the software works, or upgrade the package " "from an older version to your new version if a Debian package for it already " "exists." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:167 msgid "" "Run <command>lintian</command> over the package. You can run " "<command>lintian</command> as follows: <literal>lintian -v " "<replaceable>package-version</replaceable>.changes</literal>. This will " "check the source package as well as the binary package. If you don't " "understand the output that <command>lintian</command> generates, try adding " "the <literal>-i</literal> switch, which will cause " "<command>lintian</command> to output a very verbose description of the " "problem." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:176 msgid "" "Normally, a package should <emphasis>not</emphasis> be uploaded if it causes " "<command>lintian</command> to emit errors (they will start with " "<literal>E</literal>)." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:180 msgid "" "For more information on <command>lintian</command>, see <xref " "linkend=\"lintian\"/>." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:186 msgid "" "Optionally run <command>debdiff</command> (see <xref linkend=\"debdiff\"/>) " "to analyze changes from an older version, if one exists." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:192 msgid "" "Downgrade the package to the previous version (if one exists) — this tests " "the <filename>postrm</filename> and <filename>prerm</filename> scripts." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:198 msgid "Remove the package, then reinstall it." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:203 msgid "" "Copy the source package in a different directory and try unpacking it and " "rebuilding it. This tests if the package relies on existing files outside " "of it, or if it relies on permissions being preserved on the files shipped " "inside the <filename>.diff.gz</filename> file." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:213 msgid "Layout of the source package" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:215 msgid "There are two types of Debian source packages:" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:220 msgid "" "the so-called <literal>native</literal> packages, where there is no " "distinction between the original sources and the patches applied for Debian" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:226 msgid "" "the (more common) packages where there's an original source tarball file " "accompanied by another file that contains the changes made by Debian" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:232 msgid "" "For the native packages, the source package includes a Debian source control " "file (<filename>.dsc</filename>) and the source tarball " "(<filename>.tar.{gz,bz2,xz}</filename>). A source package of a non-native " "package includes a Debian source control file, the original source tarball " "(<filename>.orig.tar.{gz,bz2,xz}</filename>) and the Debian changes " "(<filename>.diff.gz</filename> for the source format “1.0” or " "<filename>.debian.tar.{gz,bz2,xz}</filename> for the source format “3.0 " "(quilt)”)." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:241 msgid "" "With source format “1.0”, whether a package is native or not was determined " "by <command>dpkg-source</command> at build time. Nowadays it is recommended " "to be explicit about the desired source format by putting either “3.0 " "(quilt)” or “3.0 (native)” in <filename>debian/source/format</filename>. " "The rest of this section relates only to non-native packages." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:248 msgid "" "The first time a version is uploaded which corresponds to a particular " "upstream version, the original source tar file should be uploaded and " "included in the <filename>.changes</filename> file. Subsequently, this very " "same tar file should be used to build the new diffs and " "<filename>.dsc</filename> files, and will not need to be re-uploaded." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:255 msgid "" "By default, <command>dpkg-genchanges</command> and " "<command>dpkg-buildpackage</command> will include the original source tar " "file if and only if the current changelog entry has a different upstream " "version from the preceding entry. This behavior may be modified by using " "<literal>-sa</literal> to always include it or <literal>-sd</literal> to " "always leave it out." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:263 msgid "" "If no original source is included in the upload, the original source " "tar-file used by <command>dpkg-source</command> when constructing the " "<filename>.dsc</filename> file and diff to be uploaded " "<emphasis>must</emphasis> be byte-for-byte identical with the one already in " "the archive." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:270 msgid "" "Please notice that, in non-native packages, permissions on files that are " "not present in the <filename>*.orig.tar.{gz,bz2,xz}</filename> will not be " "preserved, as diff does not store file permissions in the patch. However " "when using source format “3.0 (quilt)”, permissions of files inside the " "<filename>debian</filename> directory are preserved since they are stored in " "a tar archive." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:279 msgid "Picking a distribution" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:281 msgid "" "Each upload needs to specify which distribution the package is intended " "for. The package build process extracts this information from the first " "line of the <filename>debian/changelog</filename> file and places it in the " "<literal>Distribution</literal> field of the <filename>.changes</filename> " "file." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:287 msgid "" "There are several possible values for this field: <literal>stable</literal>, " "<literal>unstable</literal>, <literal>testing-proposed-updates</literal> and " "<literal>experimental</literal>. Normally, packages are uploaded into " "<literal>unstable</literal>." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:293 msgid "" "Actually, there are other possible distributions: " "<replaceable>codename</replaceable><literal>-security</literal>, but read " "<xref linkend=\"bug-security\"/> for more information on those." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:298 msgid "" "It is not possible to upload a package into several distributions at the " "same time." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:302 msgid "" "Special case: uploads to the <literal>stable</literal> and " "<literal>oldstable</literal> distributions" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:305 msgid "" "Uploading to <literal>stable</literal> means that the package will " "transferred to the <literal>proposed-updates-new</literal> queue for review " "by the stable release managers, and if approved will be installed in " "<filename>stable-proposed-updates</filename> directory of the Debian " "archive. From there, it will be included in <literal>stable</literal> with " "the next point release." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:313 msgid "" "To ensure that your upload will be accepted, you should discuss the changes " "with the stable release team before you upload. For that, file a bug against " "the <systemitem role=\"package\">release.debian.org</systemitem> " "pseudo-package using <command>reportbug</command>, including the patch you " "want to apply to the package version currently in " "<literal>stable</literal>. Always be verbose and detailed in your changelog " "entries for uploads to the <literal>stable</literal> distribution." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:322 msgid "" "Extra care should be taken when uploading to <literal>stable</literal>. " "Basically, a package should only be uploaded to <literal>stable</literal> if " "one of the following happens:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:329 msgid "a truly critical functionality problem" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:334 msgid "the package becomes uninstallable" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:339 msgid "a released architecture lacks the package" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:344 msgid "" "In the past, uploads to <literal>stable</literal> were used to address " "security problems as well. However, this practice is deprecated, as uploads " "used for Debian security advisories are automatically copied to the " "appropriate <filename>proposed-updates</filename> archive when the advisory " "is released. See <xref linkend=\"bug-security\"/> for detailed information " "on handling security problems. If the security teams deems the problem to be " "too benign to be fixed through a <literal>DSA</literal>, the stable release " "managers are usually willing to include your fix nonetheless in a regular " "upload to <literal>stable</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:355 msgid "" "Changing anything else in the package that isn't important is discouraged, " "because even trivial fixes can cause bugs later on." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:359 msgid "" "Packages uploaded to <literal>stable</literal> need to be compiled on " "systems running <literal>stable</literal>, so that their dependencies are " "limited to the libraries (and other packages) available in " "<literal>stable</literal>; for example, a package uploaded to " "<literal>stable</literal> that depends on a library package that only exists " "in <literal>unstable</literal> will be rejected. Making changes to " "dependencies of other packages (by messing with <literal>Provides</literal> " "or <filename>shlibs</filename> files), possibly making those other packages " "uninstallable, is strongly discouraged." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:369 msgid "" "Uploads to the <literal>oldstable</literal> distributions are possible as " "long as it hasn't been archived. The same rules as for " "<literal>stable</literal> apply." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:376 msgid "Special case: uploads to <literal>testing/testing-proposed-updates</literal>" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:378 msgid "" "Please see the information in the <link linkend=\"t-p-u\">testing " "section</link> for details." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:386 msgid "Uploading a package" msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:388 msgid "Uploading to <literal>ftp-master</literal>" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:390 msgid "" "To upload a package, you should upload the files (including the signed " "changes and dsc-file) with anonymous ftp to " "<literal>&ftp-upload-host;</literal> in the directory <ulink " "url=\"ftp://&ftp-upload-host;&upload-queue;\">&upload-queue;</ulink>. To " "get the files processed there, they need to be signed with a key in the " "Debian Developers keyring or the Debian Maintainers keyring (see <ulink " "url=\"&url-wiki-dm;\"></ulink>)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:399 msgid "" "Please note that you should transfer the changes file last. Otherwise, your " "upload may be rejected because the archive maintenance software will parse " "the changes file and see that not all files have been uploaded." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:404 msgid "" "You may also find the Debian packages <link " "linkend=\"dupload\">dupload</link> or <link linkend=\"dput\">dput</link> " "useful when uploading packages.These handy programs help automate the " "process of uploading packages into Debian." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:409 msgid "" "For removing packages, please see <ulink " "url=\"ftp://&ftp-upload-host;&upload-queue;README\"/> and the Debian package " "<link linkend=\"dcut\">dcut</link>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:416 msgid "Delayed uploads" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:419 msgid "" "It is sometimes useful to upload a package immediately, but to want this " "package to arrive in the archive only a few days later. For example, when " "preparing a <link linkend=\"nmu\">Non-Maintainer Upload</link>, you might " "want to give the maintainer a few days to react." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:426 msgid "" "An upload to the delayed directory keeps the package in <ulink " "url=\"https://ftp-master.debian.org/deferred.html\">the deferred uploads " "queue</ulink>. When the specified waiting time is over, the package is " "moved into the regular incoming directory for processing. This is done " "through automatic uploading to <literal>&ftp-upload-host;</literal> in " "upload-directory <literal>DELAYED/<replaceable>X</replaceable>-day</literal> " "(<replaceable>X</replaceable> between 0 and 15). 0-day is uploaded multiple " "times per day to <literal>&ftp-upload-host;</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:437 msgid "" "With dput, you can use the <literal>--delayed " "<replaceable>DELAY</replaceable></literal> parameter to put the package into " "one of the queues." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:443 msgid "Security uploads" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:445 msgid "" "Do <emphasis role=\"strong\">NOT</emphasis> upload a package to the security " "upload queue (on <literal>security-master.debian.org</literal>) without " "prior authorization from the security team. If the package does not exactly " "meet the team's requirements, it will cause many problems and delays in " "dealing with the unwanted upload. For details, please see <xref " "linkend=\"bug-security\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:455 msgid "Other upload queues" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:457 msgid "" "There is an alternative upload queue in Europe at <ulink " "url=\"ftp://&ftp-eu-upload-host;&upload-queue;\"/>. It operates in the same " "way as <literal>&ftp-upload-host;</literal>, but should be faster for " "European developers." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:463 msgid "" "Packages can also be uploaded via ssh to " "<literal>&ssh-upload-host;</literal>; files should be put " "<literal>/srv/upload.debian.org/UploadQueue</literal>. This queue does not " "support <link linkend=\"delayed-incoming\">delayed uploads</link>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:471 msgid "Notification that a new package has been installed" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:473 msgid "" "The Debian archive maintainers are responsible for handling package " "uploads. For the most part, uploads are automatically handled on a daily " "basis by the archive maintenance tools, <command>dak " "process-upload</command>. Specifically, updates to existing packages to the " "<literal>unstable</literal> distribution are handled automatically. In other " "cases, notably new packages, placing the uploaded package into the " "distribution is handled manually. When uploads are handled manually, the " "change to the archive may take some time to occur. Please be patient." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:483 msgid "" "In any case, you will receive an email notification indicating that the " "package has been added to the archive, which also indicates which bugs will " "be closed by the upload. Please examine this notification carefully, " "checking if any bugs you meant to close didn't get triggered." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:489 msgid "" "The installation notification also includes information on what section the " "package was inserted into. If there is a disparity, you will receive a " "separate email notifying you of that. Read on below." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:494 msgid "" "Note that if you upload via queues, the queue daemon software will also send " "you a notification by email." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:502 msgid "Specifying the package section, subsection and priority" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:504 msgid "" "The <filename>debian/control</filename> file's <literal>Section</literal> " "and <literal>Priority</literal> fields do not actually specify where the " "file will be placed in the archive, nor its priority. In order to retain " "the overall integrity of the archive, it is the archive maintainers who have " "control over these fields. The values in the " "<filename>debian/control</filename> file are actually just hints." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:512 msgid "" "The archive maintainers keep track of the canonical sections and priorities " "for packages in the <literal>override file</literal>. If there is a " "disparity between the <literal>override file</literal> and the package's " "fields as indicated in <filename>debian/control</filename>, then you will " "receive an email noting the divergence when the package is installed into " "the archive. You can either correct your " "<filename>debian/control</filename> file for your next upload, or else you " "may wish to make a change in the <literal>override file</literal>." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:522 msgid "" "To alter the actual section that a package is put in, you need to first make " "sure that the <filename>debian/control</filename> file in your package is " "accurate. Next, submit a bug against <systemitem " "role=\"package\">ftp.debian.org</systemitem> requesting that the section or " "priority for your package be changed from the old section or priority to the " "new one. Use a Subject like <literal>override: PACKAGE1:section/priority, " "[...], PACKAGEX:section/priority</literal>, and include the justification " "for the change in the body of the bug report." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:533 msgid "" "For more information about <literal>override files</literal>, see " "<citerefentry> <refentrytitle>dpkg-scanpackages</refentrytitle> " "<manvolnum>1</manvolnum> </citerefentry> and <ulink " "url=\"&url-bts-devel;#maintincorrect\"></ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:539 msgid "" "Note that the <literal>Section</literal> field describes both the section as " "well as the subsection, which are described in <xref " "linkend=\"archive-sections\"/>. If the section is main, it should be " "omitted. The list of allowable subsections can be found in <ulink " "url=\"&url-debian-policy;ch-archive.html#s-subsections\"></ulink>." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:548 msgid "Handling bugs" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:550 msgid "" "Every developer has to be able to work with the Debian <ulink " "url=\"&url-bts;\">bug tracking system</ulink>. This includes knowing how to " "file bug reports properly (see <xref linkend=\"submit-bug\"/>), how to " "update them and reorder them, and how to process and close them." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:556 msgid "" "The bug tracking system's features are described in the <ulink " "url=\"&url-bts-devel;\">BTS documentation for developers</ulink>. This " "includes closing bugs, sending followup messages, assigning severities and " "tags, marking bugs as forwarded, and other issues." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:562 msgid "" "Operations such as reassigning bugs to other packages, merging separate bug " "reports about the same issue, or reopening bugs when they are prematurely " "closed, are handled using the so-called control mail server. All of the " "commands available on this server are described in the <ulink " "url=\"&url-bts-control;\">BTS control server documentation</ulink>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:570 msgid "Monitoring bugs" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:572 msgid "" "If you want to be a good maintainer, you should periodically check the " "<ulink url=\"&url-bts;\">Debian bug tracking system (BTS)</ulink> for your " "packages. The BTS contains all the open bugs against your packages. You " "can check them by browsing this page: " "<literal>https://&bugs-host;/<replaceable>yourlogin</replaceable>@debian.org</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:579 msgid "" "Maintainers interact with the BTS via email addresses at " "<literal>&bugs-host;</literal>. Documentation on available commands can be " "found at <ulink url=\"&url-bts;\"></ulink>, or, if you have installed the " "<systemitem role=\"package\">doc-debian</systemitem> package, you can look " "at the local files &file-bts-docs;." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:586 msgid "" "Some find it useful to get periodic reports on open bugs. You can add a " "cron job such as the following if you want to get a weekly email outlining " "all the open bugs against your packages:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: pkgs.dbk:591 #, no-wrap msgid "" "# ask for weekly reports of bugs in my packages\n" "&cron-bug-report;\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:595 msgid "" "Replace <replaceable>address</replaceable> with your official Debian " "maintainer address." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:601 msgid "Responding to bugs" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:603 msgid "" "When responding to bugs, make sure that any discussion you have about bugs " "is sent both to the original submitter of the bug, and to the bug itself " "(e.g., <email><replaceable>123</replaceable>@&bugs-host;</email>). If " "you're writing a new mail and you don't remember the submitter email " "address, you can use the " "<email><replaceable>123</replaceable>-submitter@&bugs-host;</email> email to " "contact the submitter <emphasis>and</emphasis> to record your mail within " "the bug log (that means you don't need to send a copy of the mail to " "<email><replaceable>123</replaceable>@&bugs-host;</email>)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:612 msgid "" "If you get a bug which mentions FTBFS, this means Fails to build from " "source. Porters frequently use this acronym." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:616 msgid "" "Once you've dealt with a bug report (e.g. fixed it), mark it as " "<literal>done</literal> (close it) by sending an explanation message to " "<email><replaceable>123</replaceable>-done@&bugs-host;</email>. If you're " "fixing a bug by changing and uploading the package, you can automate bug " "closing as described in <xref linkend=\"upload-bugfix\"/>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:623 msgid "" "You should <emphasis>never</emphasis> close bugs via the bug server " "<literal>close</literal> command sent to &email-bts-control;. If you do so, " "the original submitter will not receive any information about why the bug " "was closed." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:631 msgid "Bug housekeeping" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:633 msgid "" "As a package maintainer, you will often find bugs in other packages or have " "bugs reported against your packages which are actually bugs in other " "packages. The bug tracking system's features are described in the <ulink " "url=\"&url-bts-devel;\">BTS documentation for Debian developers</ulink>. " "Operations such as reassigning, merging, and tagging bug reports are " "described in the <ulink url=\"&url-bts-control;\">BTS control server " "documentation</ulink>. This section contains some guidelines for managing " "your own bugs, based on the collective Debian developer experience." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:644 msgid "" "Filing bugs for problems that you find in other packages is one of the civic " "obligations of maintainership, see <xref linkend=\"submit-bug\"/> for " "details. However, handling the bugs in your own packages is even more " "important." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:649 msgid "Here's a list of steps that you may follow to handle a bug report:" msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:654 msgid "" "Decide whether the report corresponds to a real bug or not. Sometimes users " "are just calling a program in the wrong way because they haven't read the " "documentation. If you diagnose this, just close the bug with enough " "information to let the user correct their problem (give pointers to the good " "documentation and so on). If the same report comes up again and again you " "may ask yourself if the documentation is good enough or if the program " "shouldn't detect its misuse in order to give an informative error message. " "This is an issue that may need to be brought up with the upstream author." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:664 msgid "" "If the bug submitter disagrees with your decision to close the bug, they may " "reopen it until you find an agreement on how to handle it. If you don't " "find any, you may want to tag the bug <literal>wontfix</literal> to let " "people know that the bug exists but that it won't be corrected. If this " "situation is unacceptable, you (or the submitter) may want to require a " "decision of the technical committee by reassigning the bug to <systemitem " "role=\"package\">tech-ctte</systemitem> (you may use the clone command of " "the BTS if you wish to keep it reported against your package). Before doing " "so, please read the <ulink url=\"&url-tech-ctte;\">recommended " "procedure</ulink>." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:678 msgid "" "If the bug is real but it's caused by another package, just reassign the bug " "to the right package. If you don't know which package it should be " "reassigned to, you should ask for help on <link " "linkend=\"irc-channels\">IRC</link> or on &email-debian-devel;. Please " "inform the maintainer(s) of the package you reassign the bug to, for example " "by Cc:ing the message that does the reassign to " "<email><replaceable>packagename</replaceable>@packages.debian.org</email> " "and explaining your reasons in that mail. Please note that a simple " "reassignment is <emphasis>not</emphasis> e-mailed to the maintainers of the " "package being reassigned to, so they won't know about it until they look at " "a bug overview for their packages." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:690 msgid "" "If the bug affects the operation of your package, please consider cloning " "the bug and reassigning the clone to the package that really causes the " "behavior. Otherwise, the bug will not be shown in your package's bug list, " "possibly causing users to report the same bug over and over again. You " "should block \"your\" bug with the reassigned, cloned bug to document the " "relationship." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:700 msgid "" "Sometimes you also have to adjust the severity of the bug so that it matches " "our definition of the severity. That's because people tend to inflate the " "severity of bugs to make sure their bugs are fixed quickly. Some bugs may " "even be dropped to wishlist severity when the requested change is just " "cosmetic." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:708 msgid "" "If the bug is real but the same problem has already been reported by someone " "else, then the two relevant bug reports should be merged into one using the " "merge command of the BTS. In this way, when the bug is fixed, all of the " "submitters will be informed of this. (Note, however, that emails sent to " "one bug report's submitter won't automatically be sent to the other report's " "submitter.) For more details on the technicalities of the merge command and " "its relative, the unmerge command, see the BTS control server documentation." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:719 msgid "" "The bug submitter may have forgotten to provide some information, in which " "case you have to ask them for the required information. You may use the " "<literal>moreinfo</literal> tag to mark the bug as such. Moreover if you " "can't reproduce the bug, you tag it <literal>unreproducible</literal>. " "Anyone who can reproduce the bug is then invited to provide more information " "on how to reproduce it. After a few months, if this information has not " "been sent by someone, the bug may be closed." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:730 msgid "" "If the bug is related to the packaging, you just fix it. If you are not " "able to fix it yourself, then tag the bug as <literal>help</literal>. You " "can also ask for help on &email-debian-devel; or &email-debian-qa;. If it's " "an upstream problem, you have to forward it to the upstream author. " "Forwarding a bug is not enough, you have to check at each release if the bug " "has been fixed or not. If it has, you just close it, otherwise you have to " "remind the author about it. If you have the required skills you can prepare " "a patch that fixes the bug and send it to the author at the same time. Make " "sure to send the patch to the BTS and to tag the bug as " "<literal>patch</literal>." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:744 msgid "" "If you have fixed a bug in your local copy, or if a fix has been committed " "to the VCS repository, you may tag the bug as <literal>pending</literal> to " "let people know that the bug is corrected and that it will be closed with " "the next upload (add the <literal>closes:</literal> in the " "<filename>changelog</filename>). This is particularly useful if you are " "several developers working on the same package." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:754 msgid "" "Once a corrected package is available in the archive, the bug should be " "closed indicating the version in which it was fixed. This can be done " "automatically, read <xref linkend=\"upload-bugfix\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:763 msgid "When bugs are closed by new uploads" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:765 msgid "" "As bugs and problems are fixed in your packages, it is your responsibility " "as the package maintainer to close these bugs. However, you should not " "close a bug until the package which fixes the bug has been accepted into the " "Debian archive. Therefore, once you get notification that your updated " "package has been installed into the archive, you can and should close the " "bug in the BTS. Also, the bug should be closed with the correct version." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:773 msgid "" "However, it's possible to avoid having to manually close bugs after the " "upload — just list the fixed bugs in your " "<filename>debian/changelog</filename> file, following a certain syntax, and " "the archive maintenance software will close the bugs for you. For example:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: pkgs.dbk:779 #, no-wrap msgid "" "acme-cannon (3.1415) unstable; urgency=low\n" "\n" " * Frobbed with options (closes: Bug#98339)\n" " * Added safety to prevent operator dismemberment, closes: bug#98765,\n" " bug#98713, #98714.\n" " * Added man page. Closes: #98725.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:787 msgid "" "Technically speaking, the following Perl regular expression describes how " "bug closing changelogs are identified:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: pkgs.dbk:791 #, no-wrap msgid " /closes:\\s*(?:bug)?\\#\\s*\\d+(?:,\\s*(?:bug)?\\#\\s*\\d+)*/ig\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:794 msgid "" "We prefer the <literal>closes: #<replaceable>XXX</replaceable></literal> " "syntax, as it is the most concise entry and the easiest to integrate with " "the text of the <filename>changelog</filename>. Unless specified different " "by the <literal>-v</literal>-switch to <command>dpkg-buildpackage</command>, " "only the bugs closed in the most recent changelog entry are closed " "(basically, exactly the bugs mentioned in the changelog-part in the " "<filename>.changes</filename> file are closed)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:803 msgid "" "Historically, uploads identified as <link linkend=\"nmu\">non-maintainer " "upload (NMU)</link> were tagged <literal>fixed</literal> instead of being " "closed, but that practice was ceased with the advent of version-tracking. " "The same applied to the tag <literal>fixed-in-experimental</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:809 msgid "" "If you happen to mistype a bug number or forget a bug in the changelog " "entries, don't hesitate to undo any damage the error caused. To reopen " "wrongly closed bugs, send a <literal>reopen " "<replaceable>XXX</replaceable></literal> command to the bug tracking " "system's control address, &email-bts-control;. To close any remaining bugs " "that were fixed by your upload, email the <filename>.changes</filename> file " "to <email><replaceable>XXX</replaceable>-done@&bugs-host;</email>, where " "<replaceable>XXX</replaceable> is the bug number, and put Version: " "<replaceable>YYY</replaceable> and an empty line as the first two lines of " "the body of the email, where <replaceable>YYY</replaceable> is the first " "version where the bug has been fixed." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:821 msgid "" "Bear in mind that it is not obligatory to close bugs using the changelog as " "described above. If you simply want to close bugs that don't have anything " "to do with an upload you made, do it by emailing an explanation to " "<email><replaceable>XXX</replaceable>-done@&bugs-host;</email>. Do " "<emphasis role=\"strong\">not</emphasis> close bugs in the changelog entry " "of a version if the changes in that version of the package don't have any " "bearing on the bug." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:829 msgid "" "For general information on how to write your changelog entries, see <xref " "linkend=\"bpp-debian-changelog\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:835 msgid "Handling security-related bugs" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:837 msgid "" "Due to their sensitive nature, security-related bugs must be handled " "carefully. The Debian Security Team exists to coordinate this activity, " "keeping track of outstanding security problems, helping maintainers with " "security problems or fixing them themselves, sending security advisories, " "and maintaining <literal>security.debian.org</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:844 msgid "" "When you become aware of a security-related bug in a Debian package, whether " "or not you are the maintainer, collect pertinent information about the " "problem, and promptly contact the security team by emailing " "&email-security-team;. If desired, email can be encrypted with the Debian " "Security Contact key, see <ulink " "url=\"https://www.debian.org/security/faq#contact\"/> for details. " "<emphasis role=\"strong\">DO NOT UPLOAD</emphasis> any packages for " "<literal>stable</literal> without contacting the team. Useful information " "includes, for example:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:856 msgid "Whether or not the bug is already public." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:861 msgid "" "Which versions of the package are known to be affected by the bug. Check " "each version that is present in a supported Debian release, as well as " "<literal>testing</literal> and <literal>unstable</literal>." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:868 msgid "The nature of the fix, if any is available (patches are especially helpful)" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:873 msgid "" "Any fixed packages that you have prepared yourself (send only the " "<filename>.diff.gz</filename> and <filename>.dsc</filename> files and read " "<xref linkend=\"bug-security-building\"/> first)" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:880 msgid "" "Any assistance you can provide to help with testing (exploits, regression " "testing, etc.)" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:886 msgid "" "Any information needed for the advisory (see <xref " "linkend=\"bug-security-advisories\"/>)" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:891 msgid "" "As the maintainer of the package, you have the responsibility to maintain " "it, even in the stable release. You are in the best position to evaluate " "patches and test updated packages, so please see the sections below on how " "to prepare packages for the Security Team to handle." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:897 msgid "The Security Tracker" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:899 msgid "" "The security team maintains a central database, the <ulink " "url=\"https://security-tracker.debian.org/\">Debian Security " "Tracker</ulink>. This contains all public information that is known about " "security issues: which packages and versions are affected or fixed, and thus " "whether stable, testing and/or unstable are vulnerable. Information that is " "still confidential is not added to the tracker." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:907 msgid "" "You can search it for a specific issue, but also on package name. Look for " "your package to see which issues are still open. If you can, please provide " "more information about those issues, or help to address them in your " "package. Instructions are on the tracker web pages." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:915 msgid "Confidentiality" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:917 msgid "" "Unlike most other activities within Debian, information about security " "issues must sometimes be kept private for a time. This allows software " "distributors to coordinate their disclosure in order to minimize their " "users' exposure. Whether this is the case depends on the nature of the " "problem and corresponding fix, and whether it is already a matter of public " "knowledge." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:924 msgid "There are several ways developers can learn of a security problem:" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:929 msgid "they notice it on a public forum (mailing list, web site, etc.)" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:934 msgid "someone files a bug report" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:939 msgid "someone informs them via private email" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:944 msgid "" "In the first two cases, the information is public and it is important to " "have a fix as soon as possible. In the last case, however, it might not be " "public information. In that case there are a few possible options for " "dealing with the problem:" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:952 msgid "" "If the security exposure is minor, there is sometimes no need to keep the " "problem a secret and a fix should be made and released." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:958 msgid "" "If the problem is severe, it is preferable to share the information with " "other vendors and coordinate a release. The security team keeps in contact " "with the various organizations and individuals and can take care of that." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:965 msgid "" "In all cases if the person who reports the problem asks that it not be " "disclosed, such requests should be honored, with the obvious exception of " "informing the security team in order that a fix may be produced for a stable " "release of Debian. When sending confidential information to the security " "team, be sure to mention this fact." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:972 msgid "" "Please note that if secrecy is needed you may not upload a fix to " "<literal>unstable</literal> (or anywhere else, such as a public VCS " "repository). It is not sufficient to obfuscate the details of the change, " "as the code itself is public, and can (and will) be examined by the general " "public." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:979 msgid "" "There are two reasons for releasing information even though secrecy is " "requested: the problem has been known for a while, or the problem or exploit " "has become public." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:984 msgid "" "The Security Team has a PGP-key to enable encrypted communication about " "sensitive issues. See the <ulink " "url=\"https://www.debian.org/security/faq#contact\">Security Team FAQ</ulink> " "for details." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:990 msgid "Security Advisories" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:992 msgid "" "Security advisories are only issued for the current, released stable " "distribution, and <emphasis>not</emphasis> for <literal>testing</literal> or " "<literal>unstable</literal>. When released, advisories are sent to the " "&email-debian-security-announce; mailing list and posted on <ulink " "url=\"&url-debian-security-advisories;\">the security web page</ulink>. " "Security advisories are written and posted by the security team. However " "they certainly do not mind if a maintainer can supply some of the " "information for them, or write part of the text. Information that should be " "in an advisory includes:" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1005 msgid "A description of the problem and its scope, including:" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para> #: pkgs.dbk:1010 msgid "The type of problem (privilege escalation, denial of service, etc.)" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para> #: pkgs.dbk:1015 msgid "What privileges may be gained, and by whom (if any)" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para> #: pkgs.dbk:1020 msgid "How it can be exploited" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para> #: pkgs.dbk:1025 msgid "Whether it is remotely or locally exploitable" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para> #: pkgs.dbk:1030 msgid "How the problem was fixed" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1035 msgid "This information allows users to assess the threat to their systems." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1040 msgid "Version numbers of affected packages" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1045 msgid "Version numbers of fixed packages" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1050 msgid "" "Information on where to obtain the updated packages (usually from the Debian " "security archive)" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1056 msgid "" "References to upstream advisories, <ulink " "url=\"https://cve.mitre.org\">CVE</ulink> identifiers, and any other " "information useful in cross-referencing the vulnerability" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1065 msgid "Preparing packages to address security issues" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1067 msgid "" "One way that you can assist the security team in their duties is to provide " "them with fixed packages suitable for a security advisory for the stable " "Debian release." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1072 msgid "" "When an update is made to the stable release, care must be taken to avoid " "changing system behavior or introducing new bugs. In order to do this, make " "as few changes as possible to fix the bug. Users and administrators rely on " "the exact behavior of a release once it is made, so any change that is made " "might break someone's system. This is especially true of libraries: make " "sure you never change the API or ABI, no matter how small the change." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1080 msgid "" "This means that moving to a new upstream version is not a good solution. " "Instead, the relevant changes should be back-ported to the version present " "in the current stable Debian release. Generally, upstream maintainers are " "willing to help if needed. If not, the Debian security team may be able to " "help." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1086 msgid "" "In some cases, it is not possible to back-port a security fix, for example " "when large amounts of source code need to be modified or rewritten. If this " "happens, it may be necessary to move to a new upstream version. However, " "this is only done in extreme situations, and you must always coordinate that " "with the security team beforehand." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1093 msgid "" "Related to this is another important guideline: always test your changes. " "If you have an exploit available, try it and see if it indeed succeeds on " "the unpatched package and fails on the fixed package. Test other, normal " "actions as well, as sometimes a security fix can break seemingly unrelated " "features in subtle ways." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1100 msgid "" "Do <emphasis role=\"strong\">NOT</emphasis> include any changes in your " "package which are not directly related to fixing the vulnerability. These " "will only need to be reverted, and this wastes time. If there are other " "bugs in your package that you would like to fix, make an upload to " "proposed-updates in the usual way, after the security advisory is issued. " "The security update mechanism is not a means for introducing changes to your " "package which would otherwise be rejected from the stable release, so please " "do not attempt to do this." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1110 msgid "" "Review and test your changes as much as possible. Check the differences " "from the previous version repeatedly (<command>interdiff</command> from the " "<systemitem role=\"package\">patchutils</systemitem> package and " "<command>debdiff</command> from <systemitem " "role=\"package\">devscripts</systemitem> are useful tools for this, see " "<xref linkend=\"debdiff\"/>)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1118 msgid "Be sure to verify the following items:" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1123 msgid "" "<emphasis role=\"strong\">Target the right distribution</emphasis> in your " "<filename>debian/changelog</filename>: " "<replaceable>codename</replaceable><literal>-security</literal> " "(e.g. <literal>wheezy-security</literal>). Do not target " "<replaceable>distribution</replaceable><literal>-proposed-updates</literal> " "or <literal>stable</literal>!" msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1133 msgid "The upload should have <emphasis role=\"strong\">urgency=high</emphasis>." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1138 msgid "" "Make descriptive, meaningful changelog entries. Others will rely on them to " "determine whether a particular bug was fixed. Add " "<literal>closes:</literal> statements for any <emphasis " "role=\"strong\">Debian bugs</emphasis> filed. Always include an external " "reference, preferably a <emphasis role=\"strong\">CVE identifier</emphasis>, " "so that it can be cross-referenced. However, if a CVE identifier has not yet " "been assigned, do not wait for it but continue the process. The identifier " "can be cross-referenced later." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1149 msgid "" "Make sure the <emphasis role=\"strong\">version number</emphasis> is " "proper. It must be greater than the current package, but less than package " "versions in later distributions. If in doubt, test it with <literal>dpkg " "--compare-versions</literal>. Be careful not to re-use a version number " "that you have already used for a previous upload, or one that conflicts with " "a binNMU. The convention is to append " "<literal>+deb</literal><replaceable>X</replaceable><literal>u1</literal> " "(where <replaceable>X</replaceable> is the major release number), e.g. " "<literal>1:2.4.3-4+deb7u1</literal>, of course increasing 1 for any " "subsequent uploads." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1163 msgid "" "Unless the upstream source has been uploaded to " "<literal>security.debian.org</literal> before (by a previous security " "update), build the upload <emphasis role=\"strong\">with full upstream " "source</emphasis> (<literal>dpkg-buildpackage -sa</literal>). If there has " "been a previous upload to <literal>security.debian.org</literal> with the " "same upstream version, you may upload without upstream source " "(<literal>dpkg-buildpackage -sd</literal>)." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1174 msgid "" "Be sure to use the <emphasis role=\"strong\">exact same " "<filename>*.orig.tar.{gz,bz2,xz}</filename></emphasis> as used in the normal " "archive, otherwise it is not possible to move the security fix into the main " "archives later." msgstr "" #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1182 msgid "" "Build the package on a <emphasis role=\"strong\">clean system</emphasis> " "which only has packages installed from the distribution you are building " "for. If you do not have such a system yourself, you can use a debian.org " "machine (see <xref linkend=\"server-machines\"/>) or setup a chroot (see " "<xref linkend=\"pbuilder\"/> and <xref linkend=\"debootstrap\"/>)." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1193 msgid "Uploading the fixed package" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1195 msgid "" "Do <emphasis role=\"strong\">NOT</emphasis> upload a package to the security " "upload queue (on <literal>security-master.debian.org</literal>) without " "prior authorization from the security team. If the package does not exactly " "meet the team's requirements, it will cause many problems and delays in " "dealing with the unwanted upload." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1202 msgid "" "Do <emphasis role=\"strong\">NOT</emphasis> upload your fix to " "<literal>proposed-updates</literal> without coordinating with the security " "team. Packages from <literal>security.debian.org</literal> will be copied " "into the <literal>proposed-updates</literal> directory automatically. If a " "package with the same or a higher version number is already installed into " "the archive, the security update will be rejected by the archive system. " "That way, the stable distribution will end up without a security update for " "this package instead." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1212 msgid "" "Once you have created and tested the new package and it has been approved by " "the security team, it needs to be uploaded so that it can be installed in " "the archives. For security uploads, the place to upload to is " "<literal>ftp://security-master.debian.org/pub/SecurityUploadQueue/</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1218 msgid "" "Once an upload to the security queue has been accepted, the package will " "automatically be built for all architectures and stored for verification by " "the security team." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1223 msgid "" "Uploads which are waiting for acceptance or verification are only accessible " "by the security team. This is necessary since there might be fixes for " "security problems that cannot be disclosed yet." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1228 msgid "" "If a member of the security team accepts a package, it will be installed on " "<literal>security.debian.org</literal> as well as proposed for the proper " "<replaceable>distribution</replaceable><literal>-proposed-updates</literal> " "on <literal>&ftp-master-host;</literal>." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:1240 msgid "Moving, removing, renaming, orphaning, adopting, and reintroducing packages" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:1242 msgid "" "Some archive manipulation operations are not automated in the Debian upload " "process. These procedures should be manually followed by maintainers. This " "chapter gives guidelines on what to do in these cases." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1247 msgid "Moving packages" msgstr "" #. type: Content of: <chapter><section><section><para><footnote><para> #: pkgs.dbk:1251 msgid "" "See the <ulink url=\"&url-debian-policy;\">Debian Policy Manual</ulink> for " "guidelines on what section a package belongs in." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1249 msgid "" "Sometimes a package will change its section. For instance, a package from " "the <literal>non-free</literal> section might be GPL'd in a later version, " "in which case the package should be moved to `main' or " "`contrib'.<placeholder type=\"footnote\" id=\"0\"/>" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1256 msgid "" "If you need to change the section for one of your packages, change the " "package control information to place the package in the desired section, and " "re-upload the package (see the <ulink url=\"&url-debian-policy;\">Debian " "Policy Manual</ulink> for details). You must ensure that you include the " "<filename>.orig.tar.{gz,bz2,xz}</filename> in your upload (even if you are " "not uploading a new upstream version), or it will not appear in the new " "section together with the rest of the package. If your new section is " "valid, it will be moved automatically. If it does not, then contact the " "ftpmasters in order to understand what happened." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1268 msgid "" "If, on the other hand, you need to change the <literal>subsection</literal> " "of one of your packages (e.g., ``devel'', ``admin''), the procedure is " "slightly different. Correct the subsection as found in the control file of " "the package, and re-upload that. Also, you'll need to get the override file " "updated, as described in <xref linkend=\"override-file\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1277 msgid "Removing packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1279 msgid "" "If for some reason you want to completely remove a package (say, if it is an " "old compatibility library which is no longer required), you need to file a " "bug against <systemitem role=\"package\">&ftp-debian-org;</systemitem> " "asking that the package be removed; as all bugs, this bug should normally " "have normal severity. The bug title should be in the form <literal>RM: " "<replaceable>package</replaceable> <replaceable>[architecture " "list]</replaceable> -- <replaceable>reason</replaceable></literal>, where " "<replaceable>package</replaceable> is the package to be removed and " "<replaceable>reason</replaceable> is a short summary of the reason for the " "removal request. <replaceable>[architecture list]</replaceable> is optional " "and only needed if the removal request only applies to some architectures, " "not all. Note that the <command>reportbug</command> will create a title " "conforming to these rules when you use it to report a bug against the " "<systemitem role=\"package\">&ftp-debian-org;</systemitem> pseudo-package." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1296 msgid "" "If you want to remove a package you maintain, you should note this in the " "bug title by prepending <literal>ROM</literal> (Request Of Maintainer). " "There are several other standard acronyms used in the reasoning for a " "package removal, see <ulink " "url=\"https://&ftp-master-host;/removals.html\"></ulink> for a complete " "list. That page also provides a convenient overview of pending removal " "requests." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1305 msgid "" "Note that removals can only be done for the <literal>unstable</literal>, " "<literal>experimental</literal> and <literal>stable</literal> distribution. " "Packages are not removed from <literal>testing</literal> directly. Rather, " "they will be removed automatically after the package has been removed from " "<literal>unstable</literal> and no package in <literal>testing</literal> " "depends on it. (Removals from <literal>testing</literal> are possible though " "by filing a removal bug report against the <systemitem " "role=\"package\">&release-debian-org;</systemitem> pseudo-package. See the " "section <xref linkend=\"removals\"/>.)" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1317 msgid "" "There is one exception when an explicit removal request is not necessary: If " "a (source or binary) package is no longer built from source, it will be " "removed semi-automatically. For a binary-package, this means if there is no " "longer any source package producing this binary package; if the binary " "package is just no longer produced on some architectures, a removal request " "is still necessary. For a source-package, this means that all binary " "packages it refers to have been taken over by another source package." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1326 msgid "" "In your removal request, you have to detail the reasons justifying the " "request. This is to avoid unwanted removals and to keep a trace of why a " "package has been removed. For example, you can provide the name of the " "package that supersedes the one to be removed." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1332 msgid "" "Usually you only ask for the removal of a package maintained by yourself. " "If you want to remove another package, you have to get the approval of its " "maintainer. Should the package be orphaned and thus have no maintainer, you " "should first discuss the removal request on &email-debian-qa;. If there is a " "consensus that the package should be removed, you should reassign and " "retitle the <literal>O:</literal> bug filed against the " "<literal>wnpp</literal> package instead of filing a new bug as removal " "request." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1342 msgid "" "Further information relating to these and other package removal related " "topics may be found at <ulink " "url=\"https://wiki.debian.org/ftpmaster_Removals\"></ulink> and <ulink " "url=\"&url-debian-qa;howto-remove.html\"></ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1347 msgid "" "If in doubt concerning whether a package is disposable, email " "&email-debian-devel; asking for opinions. Also of interest is the " "<command>apt-cache</command> program from the <systemitem " "role=\"package\">apt</systemitem> package. When invoked as " "<literal>apt-cache showpkg <replaceable>package</replaceable></literal>, the " "program will show details for <replaceable>package</replaceable>, including " "reverse depends. Other useful programs include <command>apt-cache " "rdepends</command>, <command>apt-rdepends</command>, " "<command>build-rdeps</command> (in the <systemitem " "role=\"package\">devscripts</systemitem> package) and " "<command>grep-dctrl</command>. Removal of orphaned packages is discussed on " "&email-debian-qa;." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1360 msgid "" "Once the package has been removed, the package's bugs should be handled. " "They should either be reassigned to another package in the case where the " "actual code has evolved into another package (e.g. " "<literal>libfoo12</literal> was removed because <literal>libfoo13</literal> " "supersedes it) or closed if the software is simply no longer part of " "Debian. When closing the bugs, to avoid marking the bugs as fixed in " "versions of the packages in previous Debian releases, they should be marked " "as fixed in the version " "<literal><most-recent-version-ever-in-Debian>+rm</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1371 msgid "Removing packages from <filename>Incoming</filename>" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1373 msgid "" "In the past, it was possible to remove packages from " "<filename>incoming</filename>. However, with the introduction of the new " "incoming system, this is no longer possible. Instead, you have to upload a " "new revision of your package with a higher version than the package you want " "to replace. Both versions will be installed in the archive but only the " "higher version will actually be available in <literal>unstable</literal> " "since the previous version will immediately be replaced by the higher. " "However, if you do proper testing of your packages, the need to replace a " "package should not occur too often anyway." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1388 msgid "Replacing or renaming packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1390 msgid "" "When the upstream maintainers for one of your packages chose to rename their " "software (or you made a mistake naming your package), you should follow a " "two-step process to rename it. In the first step, change the " "<filename>debian/control</filename> file to reflect the new name and to " "replace, provide and conflict with the obsolete package name (see the <ulink " "url=\"&url-debian-policy;\">Debian Policy Manual</ulink> for details). " "Please note that you should only add a <literal>Provides</literal> relation " "if all packages depending on the obsolete package name continue to work " "after the renaming. Once you've uploaded the package and the package has " "moved into the archive, file a bug against <systemitem " "role=\"package\">&ftp-debian-org;</systemitem> asking to remove the package " "with the obsolete name (see <xref linkend=\"removing-pkgs\"/>). Do not " "forget to properly reassign the package's bugs at the same time." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1406 msgid "" "At other times, you may make a mistake in constructing your package and wish " "to replace it. The only way to do this is to increase the version number " "and upload a new version. The old version will be expired in the usual " "manner. Note that this applies to each part of your package, including the " "sources: if you wish to replace the upstream source tarball of your package, " "you will need to upload it with a different version. An easy possibility is " "to replace <filename>foo_1.00.orig.tar.gz</filename> with " "<filename>foo_1.00+0.orig.tar.gz</filename> or " "<filename>foo_1.00.orig.tar.bz2</filename>. This restriction gives each " "file on the ftp site a unique name, which helps to ensure consistency across " "the mirror network." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1421 msgid "Orphaning a package" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1423 msgid "" "If you can no longer maintain a package, you need to inform others, and see " "that the package is marked as orphaned. You should set the package " "maintainer to <literal>Debian QA Group &orphan-address;</literal> and submit " "a bug report against the pseudo package <systemitem " "role=\"package\">wnpp</systemitem>. The bug report should be titled " "<literal>O: <replaceable>package</replaceable> -- <replaceable>short " "description</replaceable></literal> indicating that the package is now " "orphaned. The severity of the bug should be set to " "<literal>normal</literal>; if the package has a priority of standard or " "higher, it should be set to important. If you feel it's necessary, send a " "copy to &email-debian-devel; by putting the address in the X-Debbugs-CC: " "header of the message (no, don't use CC:, because that way the message's " "subject won't indicate the bug number)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1438 msgid "" "If you just intend to give the package away, but you can keep maintainership " "for the moment, then you should instead submit a bug against <systemitem " "role=\"package\">wnpp</systemitem> and title it <literal>RFA: " "<replaceable>package</replaceable> -- <replaceable>short " "description</replaceable></literal>. <literal>RFA</literal> stands for " "<literal>Request For Adoption</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1446 msgid "More information is on the <ulink url=\"&url-wnpp;\">WNPP web pages</ulink>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1452 msgid "Adopting a package" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1454 msgid "" "A list of packages in need of a new maintainer is available in the <ulink " "url=\"&url-wnpp;\">Work-Needing and Prospective Packages list " "(WNPP)</ulink>. If you wish to take over maintenance of any of the packages " "listed in the WNPP, please take a look at the aforementioned page for " "information and procedures." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1461 msgid "" "It is not OK to simply take over a package that you feel is neglected — that " "would be package hijacking. You can, of course, contact the current " "maintainer and ask them if you may take over the package. If you have " "reason to believe a maintainer has gone AWOL (absent without leave), see " "<xref linkend=\"mia-qa\"/>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1467 msgid "" "Generally, you may not take over the package without the assent of the " "current maintainer. Even if they ignore you, that is still not grounds to " "take over a package. Complaints about maintainers should be brought up on " "the developers' mailing list. If the discussion doesn't end with a positive " "conclusion, and the issue is of a technical nature, consider bringing it to " "the attention of the technical committee (see the <ulink " "url=\"&url-tech-ctte;\">technical committee web page</ulink> for more " "information)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1477 msgid "" "If you take over an old package, you probably want to be listed as the " "package's official maintainer in the bug system. This will happen " "automatically once you upload a new version with an updated " "<literal>Maintainer</literal> field, although it can take a few hours after " "the upload is done. If you do not expect to upload a new version for a " "while, you can use <xref linkend=\"pkg-tracking-system\"/> to get the bug " "reports. However, make sure that the old maintainer has no problem with the " "fact that they will continue to receive the bugs during that time." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1489 msgid "Reintroducing packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1491 msgid "" "Packages are often removed due to release-critical bugs, absent maintainers, " "too few users or poor quality in general. While the process of " "reintroduction is similar to the initial packaging process, you can avoid " "some pitfalls by doing some historical research first." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1497 msgid "" "You should check why the package was removed in the first place. This " "information can be found in the removal item in the news section of the PTS " "page for the package or by browsing the log of <ulink " "url=\"https://&ftp-master-host;/#removed\">removals</ulink>. The removal bug " "will tell you why the package was removed and will give some indication of " "what you will need to work on in order to reintroduce the package. It may " "indicate that the best way forward is to switch to some other piece of " "software instead of reintroducing the package." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1507 msgid "" "It may be appropriate to contact the former maintainers to find out if they " "are working on reintroducing the package, interested in co-maintaining the " "package or interested in sponsoring the package if needed." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1512 msgid "" "You should do all the things required before introducing new packages (<xref " "linkend=\"newpackage\"/>)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1516 msgid "" "You should base your work on the latest packaging available that is " "suitable. That might be the latest version from " "<literal>unstable</literal>, which will still be present in the <ulink " "url=\"&snap-debian-org;\">snapshot archive</ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1521 msgid "" "The version control system used by the previous maintainer might contain " "useful changes, so it might be a good idea to have a look there. Check if " "the <filename>control</filename> file of the previous package contained any " "headers linking to the version control system for the package and if it " "still exists." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1527 msgid "" "Package removals from <literal>unstable</literal> (not " "<literal>testing</literal>, <literal>stable</literal> or " "<literal>oldstable</literal>) trigger the closing of all bugs related to the " "package. You should look through all the closed bugs (including archived " "bugs) and unarchive and reopen any that were closed in a version ending in " "<literal>+rm</literal> and still apply. Any that no longer apply should be " "marked as fixed in the correct version if that is known." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:1540 msgid "Porting and being ported" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:1542 msgid "" "Debian supports an ever-increasing number of architectures. Even if you are " "not a porter, and you don't use any architecture but one, it is part of your " "duty as a maintainer to be aware of issues of portability. Therefore, even " "if you are not a porter, you should read most of this chapter." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:1548 msgid "" "Porting is the act of building Debian packages for architectures that are " "different from the original architecture of the package maintainer's binary " "package. It is a unique and essential activity. In fact, porters do most " "of the actual compiling of Debian packages. For instance, when a maintainer " "uploads a (portable) source packages with binaries for the " "<literal>i386</literal> architecture, it will be built for each of the other " "architectures, amounting to &number-of-arches; more builds." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1557 msgid "Being kind to porters" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1559 msgid "" "Porters have a difficult and unique task, since they are required to deal " "with a large volume of packages. Ideally, every source package should build " "right out of the box. Unfortunately, this is often not the case. This " "section contains a checklist of ``gotchas'' often committed by Debian " "maintainers — common problems which often stymie porters, and make their " "jobs unnecessarily difficult." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1567 msgid "" "The first and most important thing is to respond quickly to bug or issues " "raised by porters. Please treat porters with courtesy, as if they were in " "fact co-maintainers of your package (which, in a way, they are). Please be " "tolerant of succinct or even unclear bug reports; do your best to hunt down " "whatever the problem is." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1574 msgid "" "By far, most of the problems encountered by porters are caused by " "<emphasis>packaging bugs</emphasis> in the source packages. Here is a " "checklist of things you should check or be aware of." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1581 msgid "" "Make sure that your <literal>Build-Depends</literal> and " "<literal>Build-Depends-Indep</literal> settings in " "<filename>debian/control</filename> are set properly. The best way to " "validate this is to use the <systemitem " "role=\"package\">debootstrap</systemitem> package to create an " "<literal>unstable</literal> chroot environment (see <xref " "linkend=\"debootstrap\"/>). Within that chrooted environment, install the " "<systemitem role=\"package\">build-essential</systemitem> package and any " "package dependencies mentioned in <literal>Build-Depends</literal> and/or " "<literal>Build-Depends-Indep</literal>. Finally, try building your package " "within that chrooted environment. These steps can be automated by the use " "of the <command>pbuilder</command> program which is provided by the package " "of the same name (see <xref linkend=\"pbuilder\"/>)." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1596 msgid "" "If you can't set up a proper chroot, <command>dpkg-depcheck</command> may be " "of assistance (see <xref linkend=\"dpkg-depcheck\"/>)." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1600 msgid "" "See the <ulink url=\"&url-debian-policy;\">Debian Policy Manual</ulink> for " "instructions on setting build dependencies." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1606 msgid "" "Don't set architecture to a value other than <literal>all</literal> or " "<literal>any</literal> unless you really mean it. In too many cases, " "maintainers don't follow the instructions in the <ulink " "url=\"&url-debian-policy;\">Debian Policy Manual</ulink>. Setting your " "architecture to only one architecture (such as <literal>i386</literal> or " "<literal>amd64</literal>) is usually incorrect." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1616 msgid "" "Make sure your source package is correct. Do <literal>dpkg-source -x " "<replaceable>package</replaceable>.dsc</literal> to make sure your source " "package unpacks properly. Then, in there, try building your package from " "scratch with <command>dpkg-buildpackage</command>." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1624 msgid "" "Make sure you don't ship your source package with the " "<filename>debian/files</filename> or <filename>debian/substvars</filename> " "files. They should be removed by the <literal>clean</literal> target of " "<filename>debian/rules</filename>." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1632 msgid "" "Make sure you don't rely on locally installed or hacked configurations or " "programs. For instance, you should never be calling programs in " "<filename>/usr/local/bin</filename> or the like. Try not to rely on " "programs being setup in a special way. Try building your package on another " "machine, even if it's the same architecture." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1641 msgid "" "Don't depend on the package you're building being installed already (a " "sub-case of the above issue). There are, of course, exceptions to this rule, " "but be aware that any case like this needs manual bootstrapping and cannot " "be done by automated package builders." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1649 msgid "" "Don't rely on the compiler being a certain version, if possible. If not, " "then make sure your build dependencies reflect the restrictions, although " "you are probably asking for trouble, since different architectures sometimes " "standardize on different compilers." msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1657 msgid "" "Make sure your <filename>debian/rules</filename> contains separate " "<literal>binary-arch</literal> and <literal>binary-indep</literal> targets, " "as the Debian Policy Manual requires. Make sure that both targets work " "independently, that is, that you can call the target without having called " "the other before. To test this, try to run <command>dpkg-buildpackage " "-B</command>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1668 msgid "Guidelines for porter uploads" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1670 msgid "" "If the package builds out of the box for the architecture to be ported to, " "you are in luck and your job is easy. This section applies to that case; it " "describes how to build and upload your binary package so that it is properly " "installed into the archive. If you do have to patch the package in order to " "get it to compile for the other architecture, you are actually doing a " "source NMU, so consult <xref linkend=\"nmu-guidelines\"/> instead." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1678 msgid "" "For a porter upload, no changes are being made to the source. You do not " "need to touch any of the files in the source package. This includes " "<filename>debian/changelog</filename>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1683 msgid "" "The way to invoke <command>dpkg-buildpackage</command> is as " "<literal>dpkg-buildpackage -B " "-m<replaceable>porter-email</replaceable></literal>. Of course, set " "<replaceable>porter-email</replaceable> to your email address. This will do " "a binary-only build of only the architecture-dependent portions of the " "package, using the <literal>binary-arch</literal> target in " "<filename>debian/rules</filename>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1692 msgid "" "If you are working on a Debian machine for your porting efforts and you need " "to sign your upload locally for its acceptance in the archive, you can run " "<command>debsign</command> on your <filename>.changes</filename> file to " "have it signed conveniently, or use the remote signing mode of " "<command>dpkg-sig</command>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1699 msgid "Recompilation or binary-only NMU" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1701 msgid "" "Sometimes the initial porter upload is problematic because the environment " "in which the package was built was not good enough (outdated or obsolete " "library, bad compiler, etc.). Then you may just need to recompile it in an " "updated environment. However, you have to bump the version number in this " "case, so that the old bad package can be replaced in the Debian archive " "(<command>dak</command> refuses to install new packages if they don't have a " "version number greater than the currently available one)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1710 msgid "" "You have to make sure that your binary-only NMU doesn't render the package " "uninstallable. This could happen when a source package generates " "arch-dependent and arch-independent packages that have inter-dependencies " "generated using dpkg's substitution variable " "<literal>$(Source-Version)</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1716 msgid "" "Despite the required modification of the changelog, these are called " "binary-only NMUs — there is no need in this case to trigger all other " "architectures to consider themselves out of date or requiring recompilation." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1721 msgid "" "Such recompilations require special ``magic'' version numbering, so that the " "archive maintenance tools recognize that, even though there is a new Debian " "version, there is no corresponding source update. If you get this wrong, " "the archive maintainers will reject your upload (due to lack of " "corresponding source code)." msgstr "" #. type: Content of: <chapter><section><section><section><para><footnote><para> #: pkgs.dbk:1736 msgid "" "In the past, such NMUs used the third-level number on the Debian part of the " "revision to denote their recompilation-only status; however, this syntax was " "ambiguous with native packages and did not allow proper ordering of " "recompile-only NMUs, source NMUs, and security NMUs on the same package, and " "has therefore been abandoned in favor of this new syntax." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1728 msgid "" "The ``magic'' for a recompilation-only NMU is triggered by using a suffix " "appended to the package version number, following the form " "<literal>b<replaceable>number</replaceable></literal>. For instance, if the " "latest version you are recompiling against was version " "<literal>2.9-3</literal>, your binary-only NMU should carry a version of " "<literal>2.9-3+b1</literal>. If the latest version was " "<literal>3.4+b1</literal> (i.e, a native package with a previous " "recompilation NMU), your binary-only NMU should have a version number of " "<literal>3.4+b2</literal>.<placeholder type=\"footnote\" id=\"0\"/>" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1744 msgid "" "Similar to initial porter uploads, the correct way of invoking " "<command>dpkg-buildpackage</command> is <literal>dpkg-buildpackage " "-B</literal> to only build the architecture-dependent parts of the package." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1751 msgid "When to do a source NMU if you are a porter" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1753 msgid "" "Porters doing a source NMU generally follow the guidelines found in <xref " "linkend=\"nmu\"/>, just like non-porters. However, it is expected that the " "wait cycle for a porter's source NMU is smaller than for a non-porter, since " "porters have to cope with a large quantity of packages. Again, the " "situation varies depending on the distribution they are uploading to. It " "also varies whether the architecture is a candidate for inclusion into the " "next stable release; the release managers decide and announce which " "architectures are candidates." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1762 msgid "" "If you are a porter doing an NMU for <literal>unstable</literal>, the above " "guidelines for porting should be followed, with two variations. Firstly, " "the acceptable waiting period — the time between when the bug is submitted " "to the BTS and when it is OK to do an NMU — is seven days for porters " "working on the <literal>unstable</literal> distribution. This period can be " "shortened if the problem is critical and imposes hardship on the porting " "effort, at the discretion of the porter group. (Remember, none of this is " "Policy, just mutually agreed upon guidelines.) For uploads to " "<literal>stable</literal> or <literal>testing</literal>, please coordinate " "with the appropriate release team first." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1774 msgid "" "Secondly, porters doing source NMUs should make sure that the bug they " "submit to the BTS should be of severity <literal>serious</literal> or " "greater. This ensures that a single source package can be used to compile " "every supported Debian architecture by release time. It is very important " "that we have one version of the binary and source package for all " "architectures in order to comply with many licenses." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1782 msgid "" "Porters should try to avoid patches which simply kludge around bugs in the " "current version of the compile environment, kernel, or libc. Sometimes such " "kludges can't be helped. If you have to kludge around compiler bugs and the " "like, make sure you <literal>#ifdef</literal> your work properly; also, " "document your kludge so that people know to remove it once the external " "problems have been fixed." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1790 msgid "" "Porters may also have an unofficial location where they can put the results " "of their work during the waiting period. This helps others running the port " "have the benefit of the porter's work, even during the waiting period. Of " "course, such locations have no official blessing or status, so buyer beware." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1800 msgid "Porting infrastructure and automation" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1802 msgid "" "There is infrastructure and several tools to help automate package porting. " "This section contains a brief overview of this automation and porting to " "these tools; see the package documentation or references for full " "information." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1807 msgid "Mailing lists and web pages" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1809 msgid "" "Web pages containing the status of each port can be found at <ulink " "url=\"&url-debian-ports;\"></ulink>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1813 msgid "" "Each port of Debian has a mailing list. The list of porting mailing lists " "can be found at <ulink url=\"&url-debian-port-lists;\"></ulink>. These " "lists are used to coordinate porters, and to connect the users of a given " "port with the porters." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1821 msgid "Porter tools" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1823 msgid "" "Descriptions of several porting tools can be found in <xref " "linkend=\"tools-porting\"/>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:1829 msgid "<systemitem role=\"package\">wanna-build</systemitem>" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1831 msgid "" "The <systemitem role=\"package\">wanna-build</systemitem> system is used as " "a distributed, client-server build distribution system. It is usually used " "in conjunction with build daemons running the <systemitem " "role=\"package\">buildd</systemitem> program. <literal>Build " "daemons</literal> are ``slave'' hosts which contact the central <systemitem " "role=\"package\">wanna-build</systemitem> system to receive a list of " "packages that need to be built." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1839 msgid "" "<systemitem role=\"package\">wanna-build</systemitem> is not yet available " "as a package; however, all Debian porting efforts are using it for automated " "package building. The tool used to do the actual package builds, " "<systemitem role=\"package\">sbuild</systemitem> is available as a package, " "see its description in <xref linkend=\"sbuild\"/>. Please note that the " "packaged version is not the same as the one used on build daemons, but it is " "close enough to reproduce problems." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1848 msgid "" "Most of the data produced by <systemitem " "role=\"package\">wanna-build</systemitem> which is generally useful to " "porters is available on the web at <ulink url=\"&url-buildd;\"></ulink>. " "This data includes nightly updated statistics, queueing information and logs " "for build attempts." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1854 msgid "" "We are quite proud of this system, since it has so many possible uses. " "Independent development groups can use the system for different sub-flavors " "of Debian, which may or may not really be of general interest (for instance, " "a flavor of Debian built with <command>gcc</command> bounds checking). It " "will also enable Debian to recompile entire distributions quickly." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1861 msgid "" "The wanna-build team, in charge of the buildds, can be reached at " "<literal>debian-wb-team@lists.debian.org</literal>. To determine who " "(wanna-build team, release team) and how (mail, BTS) to contact, refer to " "<ulink url=\"&url-wb-team;\"></ulink>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:1868 msgid "" "When requesting binNMUs or give-backs (retries after a failed build), please " "use the format described at <ulink url=\"&url-release-wb;\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1877 msgid "When your package is <emphasis>not</emphasis> portable" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1879 msgid "" "Some packages still have issues with building and/or working on some of the " "architectures supported by Debian, and cannot be ported at all, or not " "within a reasonable amount of time. An example is a package that is " "SVGA-specific (only available for <literal>i386</literal> and " "<literal>amd64</literal>), or uses other hardware-specific features not " "supported on all architectures." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1886 msgid "" "In order to prevent broken packages from being uploaded to the archive, and " "wasting buildd time, you need to do a few things:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1892 msgid "" "First, make sure your package <emphasis>does</emphasis> fail to build on " "architectures that it cannot support. There are a few ways to achieve " "this. The preferred way is to have a small testsuite during build time that " "will test the functionality, and fail if it doesn't work. This is a good " "idea anyway, as this will prevent (some) broken uploads on all " "architectures, and also will allow the package to build as soon as the " "required functionality is available." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1900 msgid "" "Additionally, if you believe the list of supported architectures is pretty " "constant, you should change <literal>any</literal> to a list of supported " "architectures in <filename>debian/control</filename>. This way, the build " "will fail also, and indicate this to a human reader without actually trying." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1908 msgid "" "In order to prevent autobuilders from needlessly trying to build your " "package, it must be included in <filename>Packages-arch-specific</filename>, " "a list used by the <command>wanna-build</command> script. The current " "version is available as <ulink url=\"&url-buildd-p-a-s;\"/>; please see the " "top of the file for whom to contact for changes." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1917 msgid "" "Please note that it is insufficient to only add your package to " "<filename>Packages-arch-specific</filename> without making it fail to build " "on unsupported architectures: A porter or any other person trying to build " "your package might accidently upload it without noticing it doesn't work. " "If in the past some binary packages were uploaded on unsupported " "architectures, request their removal by filing a bug against <systemitem " "role=\"package\">ftp.debian.org</systemitem>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1928 msgid "Marking non-free packages as auto-buildable" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1930 msgid "" "By default packages from the <literal>non-free</literal> section are not " "built by the autobuilder network (mostly because the license of the packages " "could disapprove). To enable a package to be build you need to perform the " "following steps:" msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1938 msgid "" "Check whether it is legally allowed and technically possible to auto-build " "the package;" msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1944 msgid "" "Add <literal>XS-Autobuild: yes</literal> into the header part of " "<filename>debian/control</filename>;" msgstr "" #. type: Content of: <chapter><section><section><orderedlist><listitem><para> #: pkgs.dbk:1950 msgid "" "Send an email to &email-nonfree-release; and explain why the package can " "legitimately and technically be auto-built." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:1959 msgid "Non-Maintainer Uploads (NMUs)" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:1961 msgid "" "Every package has one or more maintainers. Normally, these are the people " "who work on and upload new versions of the package. In some situations, it " "is useful that other developers can upload a new version as well, for " "example if they want to fix a bug in a package they don't maintain, when the " "maintainer needs help to respond to issues. Such uploads are called " "<emphasis>Non-Maintainer Uploads (NMU)</emphasis>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:1970 msgid "When and how to do an NMU" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:1973 msgid "Before doing an NMU, consider the following questions:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1978 msgid "" "Have you geared the NMU towards helping the maintainer? As there might be " "disagreement on the notion of whether the maintainer actually needs help on " "not, the DELAYED queue exists to give time to the maintainer to react and " "has the beneficial side-effect of allowing for independent reviews of the " "NMU diff." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1987 msgid "" "Does your NMU really fix bugs? (\"Bugs\" means any kind of bugs, e.g. " "wishlist bugs for packaging a new upstream version, but care should be taken " "to minimize the impact to the maintainer.) Fixing cosmetic issues or " "changing the packaging style (e.g. switching from cdbs to dh) in NMUs is " "discouraged." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:1996 msgid "" "Did you give enough time to the maintainer? When was the bug reported to the " "BTS? Being busy for a week or two isn't unusual. Is the bug so severe that " "it needs to be fixed right now, or can it wait a few more days?" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2003 msgid "" "How confident are you about your changes? Please remember the Hippocratic " "Oath: \"Above all, do no harm.\" It is better to leave a package with an " "open grave bug than applying a non-functional patch, or one that hides the " "bug instead of resolving it. If you are not 100% sure of what you did, it " "might be a good idea to seek advice from others. Remember that if you break " "something in your NMU, many people will be very unhappy about it." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2013 msgid "" "Have you clearly expressed your intention to NMU, at least in the BTS? It is " "also a good idea to try to contact the maintainer by other means (private " "email, IRC)." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2020 msgid "" "If the maintainer is usually active and responsive, have you tried to " "contact them? In general it should be considered preferable that maintainers " "take care of an issue themselves and that they are given the chance to " "review and correct your patch, because they can be expected to be more aware " "of potential issues which an NMUer might miss. It is often a better use of " "everyone's time if the maintainer is given an opportunity to upload a fix on " "their own." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2030 msgid "" "When doing an NMU, you must first make sure that your intention to NMU is " "clear. Then, you must send a patch with the differences between the current " "package and your proposed NMU to the BTS. The <command>nmudiff</command> " "script in the <systemitem role=\"package\">devscripts</systemitem> package " "might be helpful." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2037 msgid "" "While preparing the patch, you should better be aware of any " "package-specific practices that the maintainer might be using. Taking them " "into account reduces the burden of integrating your changes into the normal " "package workflow and thus increases the chances that integration will " "happen. A good place where to look for for possible package-specific " "practices is <ulink " "url=\"&url-debian-policy;ch-source.html#s-readmesource\"><filename>debian/README.source</filename></ulink>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2045 msgid "" "Unless you have an excellent reason not to do so, you must then give some " "time to the maintainer to react (for example, by uploading to the " "<literal>DELAYED</literal> queue). Here are some recommended values to use " "for delays:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2052 msgid "" "Upload fixing only release-critical bugs older than 7 days, with no " "maintainer activity on the bug for 7 days and no indication that a fix is in " "progress: 0 days" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2057 msgid "Upload fixing only release-critical bugs older than 7 days: 2 days" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2062 msgid "Upload fixing only release-critical and important bugs: 5 days" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2067 msgid "Other NMUs: 10 days" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2073 msgid "" "Those delays are only examples. In some cases, such as uploads fixing " "security issues, or fixes for trivial bugs that block a transition, it is " "desirable that the fixed package reaches <literal>unstable</literal> sooner." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2079 msgid "" "Sometimes, release managers decide to allow NMUs with shorter delays for a " "subset of bugs (e.g release-critical bugs older than 7 days). Also, some " "maintainers list themselves in the <ulink " "url=\"&url-low-threshold-nmu;\">Low Threshold NMU list</ulink>, and accept " "that NMUs are uploaded without delay. But even in those cases, it's still a " "good idea to give the maintainer a few days to react before you upload, " "especially if the patch wasn't available in the BTS before, or if you know " "that the maintainer is generally active." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2089 msgid "" "After you upload an NMU, you are responsible for the possible problems that " "you might have introduced. You must keep an eye on the package (subscribing " "to the package on the PTS is a good way to achieve this)." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2095 msgid "" "This is not a license to perform NMUs thoughtlessly. If you NMU when it is " "clear that the maintainers are active and would have acknowledged a patch in " "a timely manner, or if you ignore the recommendations of this document, your " "upload might be a cause of conflict with the maintainer. You should always " "be prepared to defend the wisdom of any NMU you perform on its own merits." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2105 msgid "NMUs and <filename>debian/changelog</filename>" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2107 msgid "" "Just like any other (source) upload, NMUs must add an entry to " "<filename>debian/changelog</filename>, telling what has changed with this " "upload. The first line of this entry must explicitely mention that this " "upload is an NMU, e.g.:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: pkgs.dbk:2112 #, no-wrap msgid " * Non-maintainer upload.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2116 msgid "The way to version NMUs differs for native and non-native packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2119 msgid "" "If the package is a native package (without a Debian revision in the version " "number), the version must be the version of the last maintainer upload, plus " "<literal>+nmu<replaceable>X</replaceable></literal>, where " "<replaceable>X</replaceable> is a counter starting at <literal>1</literal>. " "If the last upload was also an NMU, the counter should be increased. For " "example, if the current version is <literal>1.5</literal>, then an NMU would " "get version <literal>1.5+nmu1</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2129 msgid "" "If the package is not a native package, you should add a minor version " "number to the Debian revision part of the version number (the portion after " "the last hyphen). This extra number must start at <literal>1</literal>. For " "example, if the current version is <literal>1.5-2</literal>, then an NMU " "would get version <literal>1.5-2.1</literal>. If a new upstream version is " "packaged in the NMU, the Debian revision is set to <literal>0</literal>, for " "example <literal>1.6-0.1</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2138 msgid "" "In both cases, if the last upload was also an NMU, the counter should be " "increased. For example, if the current version is " "<literal>1.5+nmu3</literal> (a native package which has already been NMUed), " "the NMU would get version <literal>1.5+nmu4</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2144 msgid "" "A special versioning scheme is needed to avoid disrupting the maintainer's " "work, since using an integer for the Debian revision will potentially " "conflict with a maintainer upload already in preparation at the time of an " "NMU, or even one sitting in the ftp NEW queue. It also has the benefit of " "making it visually clear that a package in the archive was not made by the " "official maintainer." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2153 msgid "" "If you upload a package to testing or stable, you sometimes need to \"fork\" " "the version number tree. This is the case for security uploads, for " "example. For this, a version of the form " "<literal>+deb<replaceable>X</replaceable>u<replaceable>Y</replaceable></literal> " "should be used, where <replaceable>X</replaceable> is the major release " "number, and <replaceable>Y</replaceable> is a counter starting at " "<literal>1</literal>. For example, while Wheezy (Debian 7.0) is stable, a " "security NMU to stable for a package at version <literal>1.5-3</literal> " "would have version <literal>1.5-3+deb7u1</literal>, whereas a security NMU " "to Jessie would get version <literal>1.5-3+deb8u1</literal>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2167 msgid "Using the <literal>DELAYED/</literal> queue" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2170 msgid "" "Having to wait for a response after you request permission to NMU is " "inefficient, because it costs the NMUer a context switch to come back to the " "issue. The <literal>DELAYED</literal> queue (see <xref " "linkend=\"delayed-incoming\"/>) allows the developer doing the NMU to " "perform all the necessary tasks at the same time. For instance, instead of " "telling the maintainer that you will upload the updated package in 7 days, " "you should upload the package to <literal>DELAYED/7</literal> and tell the " "maintainer that they have 7 days to react. During this time, the maintainer " "can ask you to delay the upload some more, or cancel your upload." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2184 msgid "" "The <literal>DELAYED</literal> queue should not be used to put additional " "pressure on the maintainer. In particular, it's important that you are " "available to cancel or delay the upload before the delay expires since the " "maintainer cannot cancel the upload themselves." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2191 msgid "" "If you make an NMU to <literal>DELAYED</literal> and the maintainer updates " "the package before the delay expires, your upload will be rejected because a " "newer version is already available in the archive. Ideally, the maintainer " "will take care to include your proposed changes (or at least a solution for " "the problems they address) in that upload." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2201 msgid "NMUs from the maintainer's point of view" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2204 msgid "" "When someone NMUs your package, this means they want to help you to keep it " "in good shape. This gives users fixed packages faster. You can consider " "asking the NMUer to become a co-maintainer of the package. Receiving an NMU " "on a package is not a bad thing; it just means that the package is " "interesting enough for other people to work on it." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2213 msgid "" "To acknowledge an NMU, include its changes and changelog entry in your next " "maintainer upload. If you do not acknowledge the NMU by including the NMU " "changelog entry in your changelog, the bugs will remain closed in the BTS " "but will be listed as affecting your maintainer version of the package." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2222 msgid "Source NMUs vs Binary-only NMUs (binNMUs)" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2225 msgid "" "The full name of an NMU is <emphasis>source NMU</emphasis>. There is also " "another type, namely the <emphasis>binary-only NMU</emphasis>, or " "<emphasis>binNMU</emphasis>. A binNMU is also a package upload by someone " "other than the package's maintainer. However, it is a binary-only upload." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2232 msgid "" "When a library (or other dependency) is updated, the packages using it may " "need to be rebuilt. Since no changes to the source are needed, the same " "source package is used." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2238 msgid "" "BinNMUs are usually triggered on the buildds by wanna-build. An entry is " "added to <filename>debian/changelog</filename>, explaining why the upload " "was needed and increasing the version number as described in <xref " "linkend=\"binary-only-nmu\"/>. This entry should not be included in the " "next upload." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2246 msgid "" "Buildds upload packages for their architecture to the archive as binary-only " "uploads. Strictly speaking, these are binNMUs. However, they are not " "normally called NMU, and they don't add an entry to " "<filename>debian/changelog</filename>." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2254 msgid "NMUs vs QA uploads" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2257 msgid "" "NMUs are uploads of packages by somebody else than their assigned " "maintainer. There is another type of upload where the uploaded package is " "not yours: QA uploads. QA uploads are uploads of orphaned packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2264 msgid "" "QA uploads are very much like normal maintainer uploads: they may fix " "anything, even minor issues; the version numbering is normal, and there is " "no need to use a delayed upload. The difference is that you are not listed " "as the <literal>Maintainer</literal> or <literal>Uploader</literal> for the " "package. Also, the changelog entry of a QA upload has a special first line:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: pkgs.dbk:2272 #, no-wrap msgid " * QA upload.\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2276 msgid "" "If you want to do an NMU, and it seems that the maintainer is not active, it " "is wise to check if the package is orphaned (this information is displayed " "on the package's Package Tracking System page). When doing the first QA " "upload to an orphaned package, the maintainer should be set to " "<literal>Debian QA Group <packages@qa.debian.org></literal>. Orphaned " "packages which did not yet have a QA upload still have their old maintainer " "set. There is a list of them at <ulink url=\"&url-orphaned-not-qa;\"/>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2287 msgid "" "Instead of doing a QA upload, you can also consider adopting the package by " "making yourself the maintainer. You don't need permission from anybody to " "adopt an orphaned package, you can just set yourself as maintainer and " "upload the new version (see <xref linkend=\"adopting\"/>)." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2296 msgid "NMUs vs team uploads" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2299 msgid "" "Sometimes you are fixing and/or updating a package because you are member of " "a packaging team (which uses a mailing list as <literal>Maintainer</literal> " "or <literal>Uploader</literal>, see <xref linkend=\"collaborative-maint\"/>) " "but you don't want to add yourself to <literal>Uploaders</literal> because " "you do not plan to contribute regularly to this specific package. If it " "conforms with your team's policy, you can perform a normal upload without " "being listed directly as <literal>Maintainer</literal> or " "<literal>Uploader</literal>. In that case, you should start your changelog " "entry with the following line:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: pkgs.dbk:2309 #, no-wrap msgid " * Team upload.\n" msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:2317 msgid "Collaborative maintenance" msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:2319 msgid "" "Collaborative maintenance is a term describing the sharing of Debian package " "maintenance duties by several people. This collaboration is almost always a " "good idea, since it generally results in higher quality and faster bug fix " "turnaround times. It is strongly recommended that packages with a priority " "of <literal>standard</literal> or which are part of the base set have " "co-maintainers." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:2327 msgid "" "Generally there is a primary maintainer and one or more co-maintainers. The " "primary maintainer is the person whose name is listed in the " "<literal>Maintainer</literal> field of the " "<filename>debian/control</filename> file. Co-maintainers are all the other " "maintainers, usually listed in the <literal>Uploaders</literal> field of the " "<filename>debian/control</filename> file." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:2335 msgid "" "In its most basic form, the process of adding a new co-maintainer is quite " "easy:" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:2341 msgid "" "Setup the co-maintainer with access to the sources you build the package " "from. Generally this implies you are using a network-capable version " "control system, such as <literal>CVS</literal> or " "<literal>Subversion</literal>. Alioth (see <xref linkend=\"alioth\"/>) " "provides such tools, amongst others." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:2349 msgid "" "Add the co-maintainer's correct maintainer name and address to the " "<literal>Uploaders</literal> field in the first paragraph of the " "<filename>debian/control</filename> file." msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><screen> #: pkgs.dbk:2354 #, no-wrap msgid "" "Uploaders: John Buzz <jbuzz@debian.org>, Adam Rex " "<arex@debian.org>\n" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: pkgs.dbk:2359 msgid "" "Using the PTS (<xref linkend=\"pkg-tracking-system\"/>), the co-maintainers " "should subscribe themselves to the appropriate source package." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:2365 msgid "" "Another form of collaborative maintenance is team maintenance, which is " "recommended if you maintain several packages with the same group of " "developers. In that case, the <literal>Maintainer</literal> and " "<literal>Uploaders</literal> field of each package must be managed with " "care. It is recommended to choose between one of the two following schemes:" msgstr "" #. type: Content of: <chapter><section><orderedlist><listitem><para> #: pkgs.dbk:2374 msgid "" "Put the team member mainly responsible for the package in the " "<literal>Maintainer</literal> field. In the <literal>Uploaders</literal>, " "put the mailing list address, and the team members who care for the package." msgstr "" #. type: Content of: <chapter><section><orderedlist><listitem><para> #: pkgs.dbk:2381 msgid "" "Put the mailing list address in the <literal>Maintainer</literal> field. In " "the <literal>Uploaders</literal> field, put the team members who care for " "the package. In this case, you must make sure the mailing list accept bug " "reports without any human interaction (like moderation for non-subscribers)." msgstr "" #. type: Content of: <chapter><section><para> #: pkgs.dbk:2390 msgid "" "In any case, it is a bad idea to automatically put all team members in the " "<literal>Uploaders</literal> field. It clutters the Developer's Package " "Overview listing (see <xref linkend=\"ddpo\"/>) with packages one doesn't " "really care for, and creates a false sense of good maintenance. For the same " "reason, team members do not need to add themselves to the " "<literal>Uploaders</literal> field just because they are uploading the " "package once, they can do a “Team upload” (see <xref " "linkend=\"nmu-team-upload\"/>). Conversely, it is a bad idea to keep a " "package with only the mailing list address as a " "<literal>Maintainer</literal> and no <literal>Uploaders</literal>." msgstr "" #. type: Content of: <chapter><section><title> #: pkgs.dbk:2403 msgid "The testing distribution" msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2405 msgid "Basics" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2407 msgid "" "Packages are usually installed into the <literal>testing</literal> " "distribution after they have undergone some degree of " "<literal>testing</literal> in <literal>unstable</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2412 msgid "" "They must be in sync on all architectures and mustn't have dependencies that " "make them uninstallable; they also have to have generally no known " "release-critical bugs at the time they're installed into " "<literal>testing</literal>. This way, <literal>testing</literal> should " "always be close to being a release candidate. Please see below for details." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2421 msgid "Updates from unstable" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2423 msgid "" "The scripts that update the <literal>testing</literal> distribution are run " "twice each day, right after the installation of the updated packages; these " "scripts are called <literal>britney</literal>. They generate the " "<filename>Packages</filename> files for the <literal>testing</literal> " "distribution, but they do so in an intelligent manner; they try to avoid any " "inconsistency and to use only non-buggy packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2431 msgid "" "The inclusion of a package from <literal>unstable</literal> is conditional " "on the following:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2437 msgid "" "The package must have been available in <literal>unstable</literal> for 2, 5 " "or 10 days, depending on the urgency (high, medium or low). Please note " "that the urgency is sticky, meaning that the highest urgency uploaded since " "the previous <literal>testing</literal> transition is taken into account;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2445 msgid "" "It must not have new release-critical bugs (RC bugs affecting the version " "available in <literal>unstable</literal>, but not affecting the version in " "<literal>testing</literal>);" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2452 msgid "" "It must be available on all architectures on which it has previously been " "built in <literal>unstable</literal>. <link linkend=\"dak-ls\">dak ls</link> " "may be of interest to check that information;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2459 msgid "" "It must not break any dependency of a package which is already available in " "<literal>testing</literal>;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2465 msgid "" "The packages on which it depends must either be available in " "<literal>testing</literal> or they must be accepted into " "<literal>testing</literal> at the same time (and they will be if they " "fulfill all the necessary criteria);" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2473 msgid "" "The phase of the project. I.e. automatic transitions are turned off during " "the <emphasis>freeze</emphasis> of the <literal>testing</literal> " "distribution." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2479 msgid "" "To find out whether a package is progressing into <literal>testing</literal> " "or not, see the <literal>testing</literal> script output on the <ulink " "url=\"&url-testing-maint;\">web page of the testing distribution</ulink>, or " "use the program <command>grep-excuses</command> which is in the <systemitem " "role=\"package\">devscripts</systemitem> package. This utility can easily " "be used in a <citerefentry> <refentrytitle>crontab</refentrytitle> " "<manvolnum>5</manvolnum> </citerefentry> to keep yourself informed of the " "progression of your packages into <literal>testing</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2490 msgid "" "The <filename>update_excuses</filename> file does not always give the " "precise reason why the package is refused; you may have to find it on your " "own by looking for what would break with the inclusion of the package. The " "<ulink url=\"&url-testing-maint;\">testing web page</ulink> gives some more " "information about the usual problems which may be causing such troubles." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2497 msgid "" "Sometimes, some packages never enter <literal>testing</literal> because the " "set of interrelationship is too complicated and cannot be sorted out by the " "scripts. See below for details." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2502 msgid "" "Some further dependency analysis is shown on <ulink " "url=\"https://release.debian.org/migration/\"></ulink> — but be warned, this " "page also shows build dependencies which are not considered by britney." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2507 msgid "Out-of-date" msgstr "" #. FIXME: better rename this file than document rampant professionalism? #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2510 msgid "" "For the <literal>testing</literal> migration script, outdated means: There " "are different versions in <literal>unstable</literal> for the release " "architectures (except for the architectures in fuckedarches; fuckedarches is " "a list of architectures that don't keep up (in " "<filename>update_out.py</filename>), but currently, it's empty). outdated " "has nothing whatsoever to do with the architectures this package has in " "<literal>testing</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2518 msgid "Consider this example:" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry> #: pkgs.dbk:2525 pkgs.dbk:2558 msgid "alpha" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry> #: pkgs.dbk:2526 pkgs.dbk:2559 msgid "arm" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry> #: pkgs.dbk:2531 pkgs.dbk:2565 pkgs.dbk:2627 msgid "testing" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2532 pkgs.dbk:2537 pkgs.dbk:2566 pkgs.dbk:2567 pkgs.dbk:2574 msgid "1" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2533 pkgs.dbk:2568 pkgs.dbk:2573 msgid "-" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry> #: pkgs.dbk:2536 pkgs.dbk:2571 pkgs.dbk:2628 msgid "unstable" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2538 pkgs.dbk:2572 msgid "2" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2544 msgid "" "The package is out of date on <literal>alpha</literal> in " "<literal>unstable</literal>, and will not go to " "<literal>testing</literal>. Removing the package would not help at all, the " "package is still out of date on <literal>alpha</literal>, and will not " "propagate to <literal>testing</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2550 msgid "" "However, if ftp-master removes a package in <literal>unstable</literal> " "(here on <literal>arm</literal>):" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry> #: pkgs.dbk:2560 msgid "hurd-i386" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2580 msgid "" "In this case, the package is up to date on all release architectures in " "<literal>unstable</literal> (and the extra <literal>hurd-i386</literal> " "doesn't matter, as it's not a release architecture)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2585 msgid "" "Sometimes, the question is raised if it is possible to allow packages in " "that are not yet built on all architectures: No. Just plainly no. (Except " "if you maintain glibc or so.)" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2592 msgid "Removals from testing" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2594 msgid "" "Sometimes, a package is removed to allow another package in: This happens " "only to allow <emphasis>another</emphasis> package to go in if it's ready in " "every other sense. Suppose e.g. that <literal>a</literal> cannot be " "installed with the new version of <literal>b</literal>; then " "<literal>a</literal> may be removed to allow <literal>b</literal> in." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2601 msgid "" "Of course, there is another reason to remove a package from " "<literal>testing</literal>: It's just too buggy (and having a single RC-bug " "is enough to be in this state)." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2606 msgid "" "Furthermore, if a package has been removed from <literal>unstable</literal>, " "and no package in <literal>testing</literal> depends on it any more, then it " "will automatically be removed." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2613 msgid "Circular dependencies" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2615 msgid "" "A situation which is not handled very well by britney is if package " "<literal>a</literal> depends on the new version of package " "<literal>b</literal>, and vice versa." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2620 msgid "An example of this is:" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2633 msgid "a" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2634 msgid "1; depends: b=1" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2635 msgid "2; depends: b=2" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2638 msgid "b" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2639 msgid "1; depends: a=1" msgstr "" #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry> #: pkgs.dbk:2640 msgid "2; depends: a=2" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2646 msgid "" "Neither package <literal>a</literal> nor package <literal>b</literal> is " "considered for update." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2650 msgid "" "Currently, this requires some manual hinting from the release team. Please " "contact them by sending mail to &email-debian-release; if this happens to " "one of your packages." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2657 msgid "Influence of package in testing" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2659 msgid "" "Generally, there is nothing that the status of a package in " "<literal>testing</literal> means for transition of the next version from " "<literal>unstable</literal> to <literal>testing</literal>, with two " "exceptions: If the RC-bugginess of the package goes down, it may go in even " "if it is still RC-buggy. The second exception is if the version of the " "package in <literal>testing</literal> is out of sync on the different " "arches: Then any arch might just upgrade to the version of the source " "package; however, this can happen only if the package was previously forced " "through, the arch is in fuckedarches, or there was no binary package of that " "arch present in <literal>unstable</literal> at all during the " "<literal>testing</literal> migration." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2671 msgid "" "In summary this means: The only influence that a package being in " "<literal>testing</literal> has on a new version of the same package is that " "the new version might go in easier." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2678 msgid "Details" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2680 msgid "If you are interested in details, this is how britney works:" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2683 msgid "" "The packages are looked at to determine whether they are valid candidates. " "This gives the update excuses. The most common reasons why a package is not " "considered are too young, RC-bugginess, and out of date on some arches. For " "this part of britney, the release managers have hammers of various sizes, " "called hints (see below), to force britney to consider a package." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2690 msgid "" "Now, the more complex part happens: Britney tries to update " "<literal>testing</literal> with the valid candidates. For that, britney " "tries to add each valid candidate to the testing distribution. If the number " "of uninstallable packages in <literal>testing</literal> doesn't increase, " "the package is accepted. From that point on, the accepted package is " "considered to be part of <literal>testing</literal>, such that all " "subsequent installability tests include this package. Hints from the " "release team are processed before or after this main run, depending on the " "exact type." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2700 msgid "" "If you want to see more details, you can look it up on <ulink " "url=\"https://&ftp-master-host;/testing/update_output/\"></ulink>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2704 msgid "" "The hints are available via <ulink " "url=\"https://&ftp-master-host;/testing/hints/\"></ulink>, where you can find " "the <ulink " "url=\"https://&ftp-master-host;/testing/hints/README\">description</ulink> as " "well. With the hints, the Debian Release team can block or unblock " "packages, ease or force packages into <literal>testing</literal>, remove " "packages from <literal>testing</literal>, approve uploads to <link " "linkend=\"t-p-u\">testing-proposed-updates</link> or override the urgency." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2718 msgid "Direct updates to testing" msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2720 msgid "" "The <literal>testing</literal> distribution is fed with packages from " "<literal>unstable</literal> according to the rules explained above. " "However, in some cases, it is necessary to upload packages built only for " "<literal>testing</literal>. For that, you may want to upload to " "<literal>testing-proposed-updates</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2727 msgid "" "Keep in mind that packages uploaded there are not automatically processed, " "they have to go through the hands of the release manager. So you'd better " "have a good reason to upload there. In order to know what a good reason is " "in the release managers' eyes, you should read the instructions that they " "regularly give on &email-debian-devel-announce;." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2734 msgid "" "You should not upload to <literal>testing-proposed-updates</literal> when " "you can update your packages through <literal>unstable</literal>. If you " "can't (for example because you have a newer development version in " "<literal>unstable</literal>), you may use this facility, but it is " "recommended that you ask for authorization from the release manager first. " "Even if a package is frozen, updates through <literal>unstable</literal> are " "possible, if the upload via <literal>unstable</literal> does not pull in any " "new dependencies." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2743 msgid "" "Version numbers are usually selected by adding the codename of the " "<literal>testing</literal> distribution and a running number, like " "<literal>1.2squeeze1</literal> for the first upload through " "<literal>testing-proposed-updates</literal> of package version " "<literal>1.2</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: pkgs.dbk:2750 msgid "Please make sure you didn't miss any of these items in your upload:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2755 msgid "" "Make sure that your package really needs to go through " "<literal>testing-proposed-updates</literal>, and can't go through " "<literal>unstable</literal>;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2762 msgid "Make sure that you included only the minimal amount of changes;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2767 msgid "Make sure that you included an appropriate explanation in the changelog;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2772 msgid "" "Make sure that you've written <literal>testing</literal> or " "<literal>testing-proposed-updates</literal> into your target distribution;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2778 msgid "" "Make sure that you've built and tested your package in " "<literal>testing</literal>, not in <literal>unstable</literal>;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2784 msgid "" "Make sure that your version number is higher than the version in " "<literal>testing</literal> and <literal>testing-proposed-updates</literal>, " "and lower than in <literal>unstable</literal>;" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: pkgs.dbk:2791 msgid "" "After uploading and successful build on all platforms, contact the release " "team at &email-debian-release; and ask them to approve your upload." msgstr "" #. type: Content of: <chapter><section><section><title> #: pkgs.dbk:2799 msgid "Frequently asked questions" msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2801 msgid "What are release-critical bugs, and how do they get counted?" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2803 msgid "" "All bugs of some higher severities are by default considered " "release-critical; currently, these are <literal>critical</literal>, " "<literal>grave</literal> and <literal>serious</literal> bugs." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2808 msgid "" "Such bugs are presumed to have an impact on the chances that the package " "will be released with the <literal>stable</literal> release of Debian: in " "general, if a package has open release-critical bugs filed on it, it won't " "get into <literal>testing</literal>, and consequently won't be released in " "<literal>stable</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2815 msgid "" "The <literal>unstable</literal> bug count are all release-critical bugs " "which are marked to apply to " "<replaceable>package</replaceable>/<replaceable>version</replaceable> " "combinations that are available in unstable for a release architecture. The " "<literal>testing</literal> bug count is defined analogously." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: pkgs.dbk:2823 msgid "" "How could installing a package into <literal>testing</literal> possibly " "break other packages?" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2826 msgid "" "The structure of the distribution archives is such that they can only " "contain one version of a package; a package is defined by its name. So when " "the source package <literal>acmefoo</literal> is installed into " "<literal>testing</literal>, along with its binary packages " "<literal>acme-foo-bin</literal>, <literal>acme-bar-bin</literal>, " "<literal>libacme-foo1</literal> and <literal>libacme-foo-dev</literal>, the " "old version is removed." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2834 msgid "" "However, the old version may have provided a binary package with an old " "soname of a library, such as <literal>libacme-foo0</literal>. Removing the " "old <literal>acmefoo</literal> will remove <literal>libacme-foo0</literal>, " "which will break any packages which depend on it." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2840 msgid "" "Evidently, this mainly affects packages which provide changing sets of " "binary packages in different versions (in turn, mainly libraries). However, " "it will also affect packages upon which versioned dependencies have been " "declared of the ==, <=, or << varieties." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2846 msgid "" "When the set of binary packages provided by a source package change in this " "way, all the packages that depended on the old binaries will have to be " "updated to depend on the new binaries instead. Because installing such a " "source package into <literal>testing</literal> breaks all the packages that " "depended on it in <literal>testing</literal>, some care has to be taken now: " "all the depending packages must be updated and ready to be installed " "themselves so that they won't be broken, and, once everything is ready, " "manual intervention by the release manager or an assistant is normally " "required." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: pkgs.dbk:2857 msgid "" "If you are having problems with complicated groups of packages like this, " "contact &email-debian-devel; or &email-debian-release; for help." msgstr "" #. type: Content of: <chapter><title> #: resources.dbk:7 msgid "Resources for Debian Developers and Debian Maintainers" msgstr "" #. type: Content of: <chapter><para> #: resources.dbk:9 msgid "" "In this chapter you will find a very brief road map of the Debian mailing " "lists, the Debian machines which may be available to you as a developer, and " "all the other resources that are available to help you in your maintainer " "work." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:14 msgid "Mailing lists" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:16 msgid "" "Much of the conversation between Debian developers (and users) is managed " "through a wide array of mailing lists we host at <literal><ulink " "url=\"https://&lists-host;/\">&lists-host;</ulink></literal>. To find out " "more on how to subscribe or unsubscribe, how to post and how not to post, " "where to find old posts and how to search them, how to contact the list " "maintainers and see various other information about the mailing lists, " "please read <ulink url=\"&url-debian-lists;\"></ulink>. This section will " "only cover aspects of mailing lists that are of particular interest to " "developers." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:27 msgid "Basic rules for use" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:29 msgid "" "When replying to messages on the mailing list, please do not send a carbon " "copy (<literal>CC</literal>) to the original poster unless they explicitly " "request to be copied. Anyone who posts to a mailing list should read it to " "see the responses." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:35 msgid "" "Cross-posting (sending the same message to multiple lists) is discouraged. " "As ever on the net, please trim down the quoting of articles you're replying " "to. In general, please adhere to the usual conventions for posting " "messages." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:40 msgid "" "Please read the <ulink url=\"&url-debian-lists;#codeofconduct\">code of " "conduct</ulink> for more information. The <ulink url=\"&url-dcg;\">Debian " "Community Guidelines</ulink> are also worth reading." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:48 msgid "Core development mailing lists" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:50 msgid "The core Debian mailing lists that developers should use are:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:55 msgid "" "&email-debian-devel-announce;, used to announce important things to " "developers. All developers are expected to be subscribed to this list." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:62 msgid "" "&email-debian-devel;, used to discuss various development related technical " "issues." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:68 msgid "&email-debian-policy;, where the Debian Policy is discussed and voted on." msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:74 msgid "" "&email-debian-project;, used to discuss various non-technical issues related " "to the project." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:80 msgid "" "There are other mailing lists available for a variety of special topics; see " "<ulink url=\"https://&lists-host;/\"></ulink> for a list." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:86 msgid "Special lists" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:88 msgid "" "&email-debian-private; is a special mailing list for private discussions " "amongst Debian developers. It is meant to be used for posts which for " "whatever reason should not be published publicly. As such, it is a low " "volume list, and users are urged not to use &email-debian-private; unless it " "is really necessary. Moreover, do <emphasis>not</emphasis> forward email " "from that list to anyone. Archives of this list are not available on the " "web for obvious reasons, but you can see them using your shell account on " "<literal>&master-host;</literal> and looking in the " "<filename>&file-debian-private-archive;</filename> directory." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:100 msgid "" "&email-debian-email; is a special mailing list used as a grab-bag for Debian " "related correspondence such as contacting upstream authors about licenses, " "bugs, etc. or discussing the project with others where it might be useful " "to have the discussion archived somewhere." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:108 msgid "Requesting new development-related lists" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:110 msgid "" "Before requesting a mailing list that relates to the development of a " "package (or a small group of related packages), please consider if using an " "alias (via a .forward-aliasname file on master.debian.org, which translates " "into a reasonably nice <replaceable>you-aliasname@debian.org</replaceable> " "address) or a self-managed mailing list on <link " "linkend=\"alioth\">Alioth</link> is more appropriate." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:118 msgid "" "If you decide that a regular mailing list on &lists-host; is really what you " "want, go ahead and fill in a request, following <ulink " "url=\"&url-debian-lists-new;\">the HOWTO</ulink>." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:127 msgid "IRC channels" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:129 msgid "" "Several IRC channels are dedicated to Debian's development. They are mainly " "hosted on the <ulink url=\"&url-oftc;\">Open and free technology community " "(OFTC)</ulink> network. The <literal>irc.debian.org</literal> DNS entry is " "an alias to <literal>irc.oftc.net</literal>." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:135 msgid "" "The main channel for Debian in general is <literal>#debian</literal>. This " "is a large, general-purpose channel where users can find recent news in the " "topic and served by bots. <literal>#debian</literal> is for English " "speakers; there are also <literal>#debian.de</literal>, " "<literal>#debian-fr</literal>, <literal>#debian-br</literal> and other " "similarly named channels for speakers of other languages." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:143 msgid "" "The main channel for Debian development is " "<literal>#debian-devel</literal>. It is a very active channel; it will " "typically have a minimum of 150 people at any time of day. It's a channel " "for people who work on Debian, it's not a support channel (there's " "<literal>#debian</literal> for that). It is however open to anyone who " "wants to lurk (and learn). Its topic is commonly full of interesting " "information for developers." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:152 msgid "" "Since <literal>#debian-devel</literal> is an open channel, you should not " "speak there of issues that are discussed in &email-debian-private;. There's " "another channel for this purpose, it's called " "<literal>#debian-private</literal> and it's protected by a key. This key is " "available at " "<filename>master.debian.org:&file-debian-private-key;</filename>." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:160 msgid "" "There are other additional channels dedicated to specific subjects. " "<literal>#debian-bugs</literal> is used for coordinating bug squashing " "parties. <literal>#debian-boot</literal> is used to coordinate the work on " "the debian-installer. <literal>#debian-doc</literal> is occasionally used " "to talk about documentation, like the document you are reading. Other " "channels are dedicated to an architecture or a set of packages: " "<literal>#debian-kde</literal>, <literal>#debian-dpkg</literal>, " "<literal>#debian-jr</literal>, <literal>#debian-edu</literal>, " "<literal>#debian-oo</literal> (OpenOffice.org package)..." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:171 msgid "" "Some non-English developers' channels exist as well, for example " "<literal>#debian-devel-fr</literal> for French speaking people interested in " "Debian's development." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:176 msgid "" "Channels dedicated to Debian also exist on other IRC networks, notably on " "the <ulink url=\"&url-openprojects;\">freenode</ulink> IRC network, which " "was pointed at by the <literal>irc.debian.org</literal> alias until 4th June " "2006." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:182 msgid "" "To get a cloak on freenode, you send Jörg Jaspert <joerg@debian.org> a " "signed mail where you tell what your nick is. Put cloak somewhere in the " "Subject: header. The nick should be registered: <ulink " "url=\"https://freenode.net/faq.shtml#nicksetup\">Nick Setup Page</ulink>. " "The mail needs to be signed by a key in the Debian keyring. Please see " "<ulink url=\"https://freenode.net/faq.shtml#projectcloak\">Freenode " "documentation</ulink> for more information about cloaks." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:195 msgid "" "This document contains a lot of information which is useful to Debian " "developers, but it cannot contain everything. Most of the other interesting " "documents are linked from <ulink url=\"&url-devel-docs;\">The Developers' " "Corner</ulink>. Take the time to browse all the links, you will learn many " "more things." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:204 msgid "Debian machines" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:206 msgid "" "Debian has several computers working as servers, most of which serve " "critical functions in the Debian project. Most of the machines are used for " "porting activities, and they all have a permanent connection to the " "Internet." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:211 msgid "" "Some of the machines are available for individual developers to use, as long " "as the developers follow the rules set forth in the <ulink " "url=\"&url-dmup;\">Debian Machine Usage Policies</ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:216 msgid "" "Generally speaking, you can use these machines for Debian-related purposes " "as you see fit. Please be kind to system administrators, and do not use up " "tons and tons of disk space, network bandwidth, or CPU without first getting " "the approval of the system administrators. Usually these machines are run " "by volunteers." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:223 msgid "" "Please take care to protect your Debian passwords and SSH keys installed on " "Debian machines. Avoid login or upload methods which send passwords over " "the Internet in the clear, such as Telnet, FTP, POP etc." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:228 msgid "" "Please do not put any material that doesn't relate to Debian on the Debian " "servers, unless you have prior permission." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:232 msgid "" "The current list of Debian machines is available at <ulink " "url=\"&url-devel-machines;\"></ulink>. That web page contains machine " "names, contact information, information about who can log in, SSH keys etc." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:238 msgid "" "If you have a problem with the operation of a Debian server, and you think " "that the system operators need to be notified of this problem, you can check " "the list of open issues in the DSA queue of our request tracker at <ulink " "url=\"&url-rt;\" /> (you can login with user \"debian\", its password is " "available at " "<filename>master.debian.org:&file-debian-rt-password;</filename>). To " "report a new problem, simply send a mail to &email-rt-dsa; and make sure to " "put the string \"Debian RT\" somewhere in the subject." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:247 msgid "" "If you have a problem with a certain service, not related to the system " "administration (such as packages to be removed from the archive, suggestions " "for the web site, etc.), generally you'll report a bug against a " "``pseudo-package''. See <xref linkend=\"submit-bug\"/> for information on " "how to submit bugs." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:254 msgid "" "Some of the core servers are restricted, but the information from there is " "mirrored to another server." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:258 msgid "The bugs server" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:260 msgid "" "<literal>&bugs-host;</literal> is the canonical location for the Bug " "Tracking System (BTS)." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:264 msgid "" "If you plan on doing some statistical analysis or processing of Debian bugs, " "this would be the place to do it. Please describe your plans on " "&email-debian-devel; before implementing anything, however, to reduce " "unnecessary duplication of effort or wasted processing time." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:272 msgid "The ftp-master server" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:274 msgid "" "The <literal>&ftp-master-host;</literal> server holds the canonical copy of " "the Debian archive. Generally, package uploaded to &ftp-upload-host; end up " "on this server, see <xref linkend=\"upload\"/>." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:279 msgid "" "It is restricted; a mirror is available on " "<literal>&ftp-master-mirror;</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:282 msgid "" "Problems with the Debian FTP archive generally need to be reported as bugs " "against the <systemitem role=\"package\">&ftp-debian-org;</systemitem> " "pseudo-package or an email to &email-ftpmaster;, but also see the procedures " "in <xref linkend=\"archive-manip\"/>." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:290 msgid "The www-master server" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:292 msgid "" "The main web server is <literal>www-master.debian.org</literal>. It holds " "the official web pages, the face of Debian for most newbies." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:296 msgid "" "If you find a problem with the Debian web server, you should generally " "submit a bug against the pseudo-package, <systemitem " "role=\"package\">www.debian.org</systemitem>. Remember to check whether or " "not someone else has already reported the problem to the <ulink " "url=\"https://&bugs-host;/&www-debian-org;\">Bug Tracking System</ulink>." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:305 msgid "The people web server" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:307 msgid "" "<literal>people.debian.org</literal> is the server used for developers' own " "web pages about anything related to Debian." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:311 msgid "" "If you have some Debian-specific information which you want to serve on the " "web, you can do this by putting material in the " "<filename>public_html</filename> directory under your home directory on " "<literal>people.debian.org</literal>. This will be accessible at the URL " "<literal>https://people.debian.org/~<replaceable>your-user-id</replaceable>/</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:318 msgid "" "You should only use this particular location because it will be backed up, " "whereas on other hosts it won't." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:322 msgid "" "Usually the only reason to use a different host is when you need to publish " "materials subject to the U.S. export restrictions, in which case you can " "use one of the other servers located outside the United States." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:327 msgid "Send mail to &email-debian-devel; if you have any questions." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:332 msgid "The VCS servers" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:334 msgid "" "If you need to use a Version Control System for any of your Debian work, you " "can use one of the existing repositories hosted on Alioth or you can request " "a new project and ask for the VCS repository of your choice. Alioth " "supports CVS (cvs.alioth.debian.org/cvs.debian.org), Subversion " "(svn.debian.org), Arch (tla/baz, both on arch.debian.org), Bazaar " "(bzr.debian.org), Darcs (darcs.debian.org), Mercurial (hg.debian.org) and " "Git (git.debian.org). Checkout <ulink url=\"&url-alioth-pkg;\" /> if you " "plan to maintain packages in a VCS repository. See <xref " "linkend=\"alioth\"/> for information on the services provided by Alioth." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:347 msgid "chroots to different distributions" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:349 msgid "" "On some machines, there are chroots to different distributions available. " "You can use them like this:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: resources.dbk:353 #, no-wrap msgid "" "vore$ dchroot unstable\n" "Executing shell in chroot: /org/vore.debian.org/chroots/user/unstable\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:357 msgid "" "In all chroots, the normal user home directories are available. You can " "find out which chroots are available via <ulink " "url=\"&url-devel-machines;\"></ulink>." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:366 msgid "The Developers Database" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:368 msgid "" "The Developers Database, at <ulink url=\"&url-debian-db;\"></ulink>, is an " "LDAP directory for managing Debian developer attributes. You can use this " "resource to search the list of Debian developers. Part of this information " "is also available through the finger service on Debian servers, try " "<command>finger yourlogin@db.debian.org</command> to see what it reports." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:376 msgid "" "Developers can <ulink url=\"&url-debian-db-login;\">log into the " "database</ulink> to change various information about themselves, such as:" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:382 msgid "forwarding address for your debian.org email" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:387 msgid "subscription to debian-private" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:392 msgid "whether you are on vacation" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:397 msgid "" "personal information such as your address, country, the latitude and " "longitude of the place where you live for use in <ulink " "url=\"&url-worldmap;\">the world map of Debian developers</ulink>, phone and " "fax numbers, IRC nickname and web page" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:405 msgid "password and preferred shell on Debian Project machines" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:410 msgid "" "Most of the information is not accessible to the public, naturally. For " "more information please read the online documentation that you can find at " "<ulink url=\"&url-debian-db-doc;\"></ulink>." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:415 msgid "" "Developers can also submit their SSH keys to be used for authorization on " "the official Debian machines, and even add new *.debian.net DNS entries. " "Those features are documented at <ulink " "url=\"&url-debian-db-mail-gw;\"></ulink>." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:423 msgid "The Debian archive" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:425 msgid "" "The &debian-formal; distribution consists of a lot of packages (currently " "around &number-of-pkgs; source packages) and a few additional files (such as " "documentation and installation disk images)." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:430 msgid "Here is an example directory tree of a complete Debian archive:" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:434 msgid "" "As you can see, the top-level directory contains two directories, " "<filename>dists/</filename> and <filename>pool/</filename>. The latter is a " "“pool” in which the packages actually are, and which is handled by the " "archive maintenance database and the accompanying programs. The former " "contains the distributions, <literal>stable</literal>, " "<literal>testing</literal> and <literal>unstable</literal>. The " "<filename>Packages</filename> and <filename>Sources</filename> files in the " "distribution subdirectories can reference files in the " "<filename>pool/</filename> directory. The directory tree below each of the " "distributions is arranged in an identical manner. What we describe below " "for <literal>stable</literal> is equally applicable to the " "<literal>unstable</literal> and <literal>testing</literal> distributions." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:448 msgid "" "<filename>dists/stable</filename> contains three directories, namely " "<filename>main</filename>, <filename>contrib</filename>, and " "<filename>non-free</filename>." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:453 msgid "" "In each of the areas, there is a directory for the source packages " "(<filename>source</filename>) and a directory for each supported " "architecture (<filename>binary-i386</filename>, " "<filename>binary-amd64</filename>, etc.)." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:458 msgid "" "The <filename>main</filename> area contains additional directories which " "hold the disk images and some essential pieces of documentation required for " "installing the Debian distribution on a specific architecture " "(<filename>disks-i386</filename>, <filename>disks-amd64</filename>, etc.)." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:464 msgid "Sections" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:466 msgid "" "The <literal>main</literal> section of the Debian archive is what makes up " "the <emphasis role=\"strong\">official &debian-formal; " "distribution</emphasis>. The <literal>main</literal> section is official " "because it fully complies with all our guidelines. The other two sections " "do not, to different degrees; as such, they are <emphasis " "role=\"strong\">not</emphasis> officially part of &debian-formal;." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:474 msgid "" "Every package in the main section must fully comply with the <ulink " "url=\"&url-dfsg;\">Debian Free Software Guidelines</ulink> (DFSG) and with " "all other policy requirements as described in the <ulink " "url=\"&url-debian-policy;\">Debian Policy Manual</ulink>. The DFSG is our " "definition of “free software.” Check out the Debian Policy Manual for " "details." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:482 msgid "" "Packages in the <literal>contrib</literal> section have to comply with the " "DFSG, but may fail other requirements. For instance, they may depend on " "non-free packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:487 msgid "" "Packages which do not conform to the DFSG are placed in the " "<literal>non-free</literal> section. These packages are not considered as " "part of the Debian distribution, though we enable their use, and we provide " "infrastructure (such as our bug-tracking system and mailing lists) for " "non-free software packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:494 msgid "" "The <ulink url=\"&url-debian-policy;\">Debian Policy Manual</ulink> contains " "a more exact definition of the three sections. The above discussion is just " "an introduction." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:499 msgid "" "The separation of the three sections at the top-level of the archive is " "important for all people who want to distribute Debian, either via FTP " "servers on the Internet or on CD-ROMs: by distributing only the " "<literal>main</literal> and <literal>contrib</literal> sections, one can " "avoid any legal risks. Some packages in the <literal>non-free</literal> " "section do not allow commercial distribution, for example." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:507 msgid "" "On the other hand, a CD-ROM vendor could easily check the individual package " "licenses of the packages in <literal>non-free</literal> and include as many " "on the CD-ROMs as it's allowed to. (Since this varies greatly from vendor " "to vendor, this job can't be done by the Debian developers.)" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:513 msgid "" "Note that the term section is also used to refer to categories which " "simplify the organization and browsing of available packages, e.g. " "<literal>admin</literal>, <literal>net</literal>, <literal>utils</literal> " "etc. Once upon a time, these sections (subsections, rather) existed in the " "form of subdirectories within the Debian archive. Nowadays, these exist " "only in the Section header fields of packages." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:523 msgid "Architectures" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:525 msgid "" "In the first days, the Linux kernel was only available for Intel i386 (or " "greater) platforms, and so was Debian. But as Linux became more and more " "popular, the kernel was ported to other architectures and Debian started to " "support them. And as if supporting so much hardware was not enough, Debian " "decided to build some ports based on other Unix kernels, like " "<literal>hurd</literal> and <literal>kfreebsd</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:533 msgid "" "Debian GNU/Linux 1.3 was only available as <literal>i386</literal>. Debian " "2.0 shipped for <literal>i386</literal> and <literal>m68k</literal> " "architectures. Debian 2.1 shipped for the <literal>i386</literal>, " "<literal>m68k</literal>, <literal>alpha</literal>, and " "<literal>sparc</literal> architectures. Since then Debian has grown " "hugely. Debian 6 supports a total of nine Linux architectures " "(<literal>amd64</literal>, <literal>armel</literal>, " "<literal>i386</literal>, <literal>ia64</literal>, <literal>mips</literal>, " "<literal>mipsel</literal>, <literal>powerpc</literal>, " "<literal>s390</literal>, <literal>sparc</literal>) and two kFreeBSD " "architectures (<literal>kfreebsd-i386</literal> and " "<literal>kfreebsd-amd64</literal>)." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:546 msgid "" "Information for developers and users about the specific ports are available " "at the <ulink url=\"&url-debian-ports;\">Debian Ports web pages</ulink>." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:552 msgid "Packages" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:554 msgid "" "There are two types of Debian packages, namely <literal>source</literal> and " "<literal>binary</literal> packages." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:558 msgid "" "Depending on the format of the source package, it will consist of one or " "more files in addition to the mandatory <filename>.dsc</filename> file:" msgstr "" #. type: Content of: <chapter><section><section><para><itemizedlist><listitem><para> #: resources.dbk:562 msgid "" "with format “1.0”, it has either a <filename>.tar.gz</filename> file or both " "an <filename>.orig.tar.gz</filename> and a <filename>.diff.gz</filename> " "file;" msgstr "" #. type: Content of: <chapter><section><section><para><itemizedlist><listitem><para> #: resources.dbk:565 msgid "" "with format “3.0 (quilt)”, it has a mandatory " "<filename>.orig.tar.{gz,bz2,xz}</filename> upstream tarball, multiple " "optional " "<filename>.orig-<replaceable>component</replaceable>.tar.{gz,bz2,xz}</filename> " "additional upstream tarballs and a mandatory " "<filename>debian.tar.{gz,bz2,xz}</filename> debian tarball;" msgstr "" #. type: Content of: <chapter><section><section><para><itemizedlist><listitem><para> #: resources.dbk:571 msgid "" "with format “3.0 (native)”, it has only a single " "<filename>.tar.{gz,bz2,xz}</filename> tarball." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:576 msgid "" "If a package is developed specially for Debian and is not distributed " "outside of Debian, there is just one <filename>.tar.{gz,bz2,xz}</filename> " "file which contains the sources of the program, it's called a “native” " "source package. If a package is distributed elsewhere too, the " "<filename>.orig.tar.{gz,bz2,xz}</filename> file stores the so-called " "<literal>upstream source code</literal>, that is the source code that's " "distributed by the <literal>upstream maintainer</literal> (often the author " "of the software). In this case, the <filename>.diff.gz</filename> or the " "<filename>debian.tar.{gz,bz2,xz}</filename> contains the changes made by the " "Debian maintainer." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:589 msgid "" "The <filename>.dsc</filename> file lists all the files in the source package " "together with checksums (<command>md5sums</command>) and some additional " "info about the package (maintainer, version, etc.)." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:596 msgid "Distributions" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:598 msgid "" "The directory system described in the previous chapter is itself contained " "within <literal>distribution directories</literal>. Each distribution is " "actually contained in the <filename>pool</filename> directory in the " "top-level of the Debian archive itself." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:604 msgid "" "To summarize, the Debian archive has a root directory within an FTP server. " "For instance, at the mirror site, <literal>ftp.us.debian.org</literal>, the " "Debian archive itself is contained in <ulink " "url=\"ftp://ftp.us.debian.org/debian\">/debian</ulink>, which is a common " "location (another is <filename>/pub/debian</filename>)." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:611 msgid "" "A distribution comprises Debian source and binary packages, and the " "respective <filename>Sources</filename> and <filename>Packages</filename> " "index files, containing the header information from all those packages. The " "former are kept in the <filename>pool/</filename> directory, while the " "latter are kept in the <filename>dists/</filename> directory of the archive " "(for backwards compatibility)." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: resources.dbk:619 msgid "Stable, testing, and unstable" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:621 msgid "" "There are always distributions called <literal>stable</literal> (residing in " "<filename>dists/stable</filename>), <literal>testing</literal> (residing in " "<filename>dists/testing</filename>), and <literal>unstable</literal> " "(residing in <filename>dists/unstable</filename>). This reflects the " "development process of the Debian project." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:628 msgid "" "Active development is done in the <literal>unstable</literal> distribution " "(that's why this distribution is sometimes called the <literal>development " "distribution</literal>). Every Debian developer can update their packages " "in this distribution at any time. Thus, the contents of this distribution " "change from day to day. Since no special effort is made to make sure " "everything in this distribution is working properly, it is sometimes " "literally unstable." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:637 msgid "" "The <link linkend=\"testing\">testing</link> distribution is generated " "automatically by taking packages from <literal>unstable</literal> if they " "satisfy certain criteria. Those criteria should ensure a good quality for " "packages within <literal>testing</literal>. The update to " "<literal>testing</literal> is launched twice each day, right after the new " "packages have been installed. See <xref linkend=\"testing\"/>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:645 msgid "" "After a period of development, once the release manager deems fit, the " "<literal>testing</literal> distribution is frozen, meaning that the policies " "which control how packages move from <literal>unstable</literal> to " "<literal>testing</literal> are tightened. Packages which are too buggy are " "removed. No changes are allowed into <literal>testing</literal> except for " "bug fixes. After some time has elapsed, depending on progress, the " "<literal>testing</literal> distribution is frozen even further. Details of " "the handling of the testing distribution are published by the Release Team " "on debian-devel-announce. After the open issues are solved to the " "satisfaction of the Release Team, the distribution is released. Releasing " "means that <literal>testing</literal> is renamed to " "<literal>stable</literal>, and a new copy is created for the new " "<literal>testing</literal>, and the previous <literal>stable</literal> is " "renamed to <literal>oldstable</literal> and stays there until it is finally " "archived. On archiving, the contents are moved to " "<literal>&archive-host;</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:662 msgid "" "This development cycle is based on the assumption that the " "<literal>unstable</literal> distribution becomes <literal>stable</literal> " "after passing a period of being in <literal>testing</literal>. Even once a " "distribution is considered stable, a few bugs inevitably remain — that's why " "the stable distribution is updated every now and then. However, these " "updates are tested very carefully and have to be introduced into the archive " "individually to reduce the risk of introducing new bugs. You can find " "proposed additions to <literal>stable</literal> in the " "<filename>proposed-updates</filename> directory. Those packages in " "<filename>proposed-updates</filename> that pass muster are periodically " "moved as a batch into the stable distribution and the revision level of the " "stable distribution is incremented (e.g., ‘6.0’ becomes ‘6.0.1’, ‘5.0.7’ " "becomes ‘5.0.8’, and so forth). Please refer to <link " "linkend=\"upload-stable\">uploads to the <literal>stable</literal> " "distribution</link> for details." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:679 msgid "" "Note that development under <literal>unstable</literal> continues during the " "freeze period, since the <literal>unstable</literal> distribution remains in " "place in parallel with <literal>testing</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: resources.dbk:686 msgid "More information about the testing distribution" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:688 msgid "" "Packages are usually installed into the <literal>testing</literal> " "distribution after they have undergone some degree of testing in " "<literal>unstable</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:692 msgid "" "For more details, please see the <link linkend=\"testing\">information about " "the testing distribution</link>." msgstr "" #. type: Content of: <chapter><section><section><section><title> #: resources.dbk:698 msgid "Experimental" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:700 msgid "" "The <literal>experimental</literal> distribution is a special distribution. " "It is not a full distribution in the same sense as " "<literal>stable</literal>, <literal>testing</literal> and " "<literal>unstable</literal> are. Instead, it is meant to be a temporary " "staging area for highly experimental software where there's a good chance " "that the software could break your system, or software that's just too " "unstable even for the <literal>unstable</literal> distribution (but there is " "a reason to package it nevertheless). Users who download and install " "packages from <literal>experimental</literal> are expected to have been duly " "warned. In short, all bets are off for the <literal>experimental</literal> " "distribution." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:712 msgid "" "These are the <citerefentry> <refentrytitle>sources.list</refentrytitle> " "<manvolnum>5</manvolnum> </citerefentry> lines for " "<literal>experimental</literal>:" msgstr "" #. type: Content of: <chapter><section><section><section><programlisting> #: resources.dbk:717 #, no-wrap msgid "" "deb http://ftp.<replaceable>xy</replaceable>.debian.org/debian/ experimental " "main\n" "deb-src http://ftp.<replaceable>xy</replaceable>.debian.org/debian/ " "experimental main\n" msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:721 msgid "" "If there is a chance that the software could do grave damage to a system, it " "is likely to be better to put it into <literal>experimental</literal>. For " "instance, an experimental compressed file system should probably go into " "<literal>experimental</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:727 msgid "" "Whenever there is a new upstream version of a package that introduces new " "features but breaks a lot of old ones, it should either not be uploaded, or " "be uploaded to <literal>experimental</literal>. A new, beta, version of " "some software which uses a completely different configuration can go into " "<literal>experimental</literal>, at the maintainer's discretion. If you are " "working on an incompatible or complex upgrade situation, you can also use " "<literal>experimental</literal> as a staging area, so that testers can get " "early access." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:737 msgid "" "Some experimental software can still go into <literal>unstable</literal>, " "with a few warnings in the description, but that isn't recommended because " "packages from <literal>unstable</literal> are expected to propagate to " "<literal>testing</literal> and thus to <literal>stable</literal>. You " "should not be afraid to use <literal>experimental</literal> since it does " "not cause any pain to the ftpmasters, the experimental packages are " "periodically removed once you upload the package in " "<literal>unstable</literal> with a higher version number." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:747 msgid "" "New software which isn't likely to damage your system can go directly into " "<literal>unstable</literal>." msgstr "" #. type: Content of: <chapter><section><section><section><para> #: resources.dbk:751 msgid "" "An alternative to <literal>experimental</literal> is to use your personal " "web space on <literal>people.debian.org</literal>." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:759 msgid "Release code names" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:761 msgid "" "Every released Debian distribution has a <literal>code name</literal>: " "Debian 1.1 is called <literal>buzz</literal>; Debian 1.2, " "<literal>rex</literal>; Debian 1.3, <literal>bo</literal>; Debian 2.0, " "<literal>hamm</literal>; Debian 2.1, <literal>slink</literal>; Debian 2.2, " "<literal>potato</literal>; Debian 3.0, <literal>woody</literal>; Debian 3.1, " "<literal>sarge</literal>; Debian 4.0, <literal>etch</literal>; Debian 5.0, " "<literal>lenny</literal>; Debian 6.0, <literal>squeeze</literal>; Debian " "7.0, <literal>wheezy</literal>; and the next release will be called " "<literal>jessie</literal>. There is also a ``pseudo-distribution'', called " "<literal>sid</literal>, which is the current <literal>unstable</literal> " "distribution; since packages are moved from <literal>unstable</literal> to " "<literal>testing</literal> as they approach stability, " "<literal>sid</literal> itself is never released. As well as the usual " "contents of a Debian distribution, <literal>sid</literal> contains packages " "for architectures which are not yet officially supported or released by " "Debian. These architectures are planned to be integrated into the " "mainstream distribution at some future date." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:780 msgid "" "Since Debian has an open development model (i.e., everyone can participate " "and follow the development) even the <literal>unstable</literal> and " "<literal> testing</literal> distributions are distributed to the Internet " "through the Debian FTP and HTTP server network. Thus, if we had called the " "directory which contains the release candidate version " "<literal>testing</literal>, then we would have to rename it to " "<literal>stable</literal> when the version is released, which would cause " "all FTP mirrors to re-retrieve the whole distribution (which is quite " "large)." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:790 msgid "" "On the other hand, if we called the distribution directories " "<literal>Debian-x.y</literal> from the beginning, people would think that " "Debian release <literal>x.y</literal> is available. (This happened in the " "past, where a CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0 " "development version. That's the reason why the first official Debian " "release was 1.1, and not 1.0.)" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:798 msgid "" "Thus, the names of the distribution directories in the archive are " "determined by their code names and not their release status (e.g., " "`squeeze'). These names stay the same during the development period and " "after the release; symbolic links, which can be changed easily, indicate the " "currently released stable distribution. That's why the real distribution " "directories use the <literal>code names</literal>, while symbolic links for " "<literal>stable</literal>, <literal>testing</literal>, and " "<literal>unstable</literal> point to the appropriate release directories." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:812 msgid "Debian mirrors" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:814 msgid "" "The various download archives and the web site have several mirrors " "available in order to relieve our canonical servers from heavy load. In " "fact, some of the canonical servers aren't public — a first tier of mirrors " "balances the load instead. That way, users always access the mirrors and " "get used to using them, which allows Debian to better spread its bandwidth " "requirements over several servers and networks, and basically makes users " "avoid hammering on one primary location. Note that the first tier of " "mirrors is as up-to-date as it can be since they update when triggered from " "the internal sites (we call this push mirroring)." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:825 msgid "" "All the information on Debian mirrors, including a list of the available " "public FTP/HTTP servers, can be found at <ulink " "url=\"&url-debian-mirrors;\"></ulink>. This useful page also includes " "information and tools which can be helpful if you are interested in setting " "up your own mirror, either for internal or public access." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:832 msgid "" "Note that mirrors are generally run by third-parties who are interested in " "helping Debian. As such, developers generally do not have accounts on these " "machines." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:839 msgid "The Incoming system" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:841 msgid "" "The Incoming system is responsible for collecting updated packages and " "installing them in the Debian archive. It consists of a set of directories " "and scripts that are installed on <literal>&ftp-master-host;</literal>." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:846 msgid "" "Packages are uploaded by all the maintainers into a directory called " "<filename>UploadQueue</filename>. This directory is scanned every few " "minutes by a daemon called <command>queued</command>, " "<filename>*.command</filename>-files are executed, and remaining and " "correctly signed <filename>*.changes</filename>-files are moved together " "with their corresponding files to the <filename>unchecked</filename> " "directory. This directory is not visible for most Developers, as ftp-master " "is restricted; it is scanned every 15 minutes by the <command>dak " "process-upload</command> script, which verifies the integrity of the " "uploaded packages and their cryptographic signatures. If the package is " "considered ready to be installed, it is moved into the " "<filename>done</filename> directory. If this is the first upload of the " "package (or it has new binary packages), it is moved to the " "<filename>new</filename> directory, where it waits for approval by the " "ftpmasters. If the package contains files to be installed by hand it is " "moved to the <filename>byhand</filename> directory, where it waits for " "manual installation by the ftpmasters. Otherwise, if any error has been " "detected, the package is refused and is moved to the " "<filename>reject</filename> directory." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:865 msgid "" "Once the package is accepted, the system sends a confirmation mail to the " "maintainer and closes all the bugs marked as fixed by the upload, and the " "auto-builders may start recompiling it. The package is now publicly " "accessible at <ulink url=\"&url-incoming;\"></ulink> until it is really " "installed in the Debian archive. This happens four times a day (and is also " "called the `dinstall run' for historical reasons); the package is then " "removed from incoming and installed in the pool along with all the other " "packages. Once all the other updates (generating new " "<filename>Packages</filename> and <filename>Sources</filename> index files " "for example) have been made, a special script is called to ask all the " "primary mirrors to update themselves." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:877 msgid "" "The archive maintenance software will also send the OpenPGP/GnuPG signed " "<filename>.changes</filename> file that you uploaded to the appropriate " "mailing lists. If a package is released with the " "<literal>Distribution</literal> set to <literal>stable</literal>, the " "announcement is sent to &email-debian-changes;. If a package is released " "with <literal>Distribution</literal> set to <literal>unstable</literal> or " "<literal>experimental</literal>, the announcement will be posted to " "&email-debian-devel-changes; or &email-debian-experimental-changes; instead." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:887 msgid "" "Though ftp-master is restricted, a copy of the installation is available to " "all developers on <literal>&ftp-master-mirror;</literal>." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:950 msgid "Package information" msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:952 msgid "On the web" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:954 msgid "" "Each package has several dedicated web pages. " "<literal>https://&packages-host;/<replaceable>package-name</replaceable></literal> " "displays each version of the package available in the various " "distributions. Each version links to a page which provides information, " "including the package description, the dependencies, and package download " "links." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:961 msgid "" "The bug tracking system tracks bugs for each package. You can view the bugs " "of a given package at the URL " "<literal>https://&bugs-host;/<replaceable>package-name</replaceable></literal>." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:968 msgid "The <command>dak ls</command> utility" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:970 msgid "" "<command>dak ls</command> is part of the dak suite of tools, listing " "available package versions for all known distributions and architectures. " "The <command>dak</command> tool is available on " "<literal>&ftp-master-host;</literal>, and on the mirror on " "<literal>&ftp-master-mirror;</literal>. It uses a single argument " "corresponding to a package name. An example will explain it better:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: resources.dbk:978 #, no-wrap msgid "" "$ dak ls evince\n" "evince | 0.1.5-2sarge1 | oldstable | source, alpha, arm, hppa, i386, " "ia64, m68k, mips, mipsel, powerpc, s390, sparc\n" "evince | 0.4.0-5 | etch-m68k | source, m68k\n" "evince | 0.4.0-5 | stable | source, alpha, amd64, arm, hppa, i386, " "ia64, mips, mipsel, powerpc, s390, sparc\n" "evince | 2.20.2-1 | testing | source\n" "evince | 2.20.2-1+b1 | testing | alpha, amd64, arm, armel, hppa, i386, " "ia64, mips, mipsel, powerpc, s390, sparc\n" "evince | 2.22.2-1 | unstable | source, alpha, amd64, arm, armel, " "hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:987 msgid "" "In this example, you can see that the version in <literal>unstable</literal> " "differs from the version in <literal>testing</literal> and that there has " "been a binary-only NMU of the package for all architectures. Each version " "of the package has been recompiled on all architectures." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:997 msgid "The Package Tracking System" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:999 msgid "" "The Package Tracking System (PTS) is an email-based tool to track the " "activity of a source package. This really means that you can get the same " "emails that the package maintainer gets, simply by subscribing to the " "package in the PTS." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1004 msgid "" "Each email sent through the PTS is classified under one of the keywords " "listed below. This will let you select the mails that you want to receive." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1008 msgid "By default you will get:" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1012 msgid "<literal>bts</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1015 msgid "All the bug reports and following discussions." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1020 msgid "<literal>bts-control</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1023 msgid "" "The email notifications from <email>control@&bugs-host;</email> about bug " "report status changes." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1029 msgid "<literal>upload-source</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1032 msgid "" "The email notification from <command>dak</command> when an uploaded source " "package is accepted." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1038 msgid "<literal>katie-other</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1041 msgid "" "Other warning and error emails from <command>dak</command> (such as an " "override disparity for the section and/or the priority field)." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1047 msgid "<literal>buildd</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1050 msgid "" "Build failures notifications sent by the network of build daemons, they " "contain a pointer to the build logs for analysis." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1056 msgid "<literal>default</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1059 msgid "" "Any non-automatic email sent to the PTS by people who wanted to contact the " "subscribers of the package. This can be done by sending mail to " "<literal><replaceable>sourcepackage</replaceable>@&pts-host;</literal>. In " "order to prevent spam, all messages sent to these addresses must contain the " "<literal>X-PTS-Approved</literal> header with a non-empty value." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1068 msgid "<literal>contact</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1071 msgid "" "Mails sent to the maintainer through the *@packages.debian.org email " "aliases." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1077 msgid "<literal>summary</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1080 msgid "" "Regular summary emails about the package's status, including progression " "into <literal>testing</literal>, <ulink url=\"&url-dehs;\">DEHS</ulink> " "notifications of new upstream versions, and a notification if the package is " "removed or orphaned." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1090 msgid "You can also decide to receive additional information:" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1094 msgid "<literal>upload-binary</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1097 msgid "" "The email notification from <command>katie</command> when an uploaded binary " "package is accepted. In other words, whenever a build daemon or a porter " "uploads your package for another architecture, you can get an email to track " "how your package gets recompiled for all architectures." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1105 msgid "<literal>cvs</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1108 msgid "" "VCS commit notifications, if the package has a VCS repository and the " "maintainer has set up forwarding of commit notifications to the PTS. The " "\"cvs\" name is historic, in most cases commit notifications will come from " "some other VCS like subversion or git." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1116 msgid "<literal>ddtp</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1119 msgid "" "Translations of descriptions or debconf templates submitted to the Debian " "Description Translation Project." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1125 msgid "<literal>derivatives</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1128 msgid "" "Information about changes made to the package in derivative distributions " "(for example Ubuntu)." msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><term> #: resources.dbk:1134 msgid "<literal>derivatives-bugs</literal>" msgstr "" #. type: Content of: <chapter><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1137 msgid "" "Bugs reports and comments from derivative distributions (for example " "Ubuntu)." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:1143 msgid "The PTS email interface" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1145 msgid "" "You can control your subscription(s) to the PTS by sending various commands " "to <email>pts@qa.debian.org</email>." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1150 msgid "<literal>subscribe <sourcepackage> [<email>]</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1153 msgid "" "Subscribes <replaceable>email</replaceable> to communications related to the " "source package <replaceable>sourcepackage</replaceable>. Sender address is " "used if the second argument is not present. If " "<replaceable>sourcepackage</replaceable> is not a valid source package, " "you'll get a warning. However if it's a valid binary package, the PTS will " "subscribe you to the corresponding source package." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1163 msgid "<literal>unsubscribe <sourcepackage> [<email>]</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1166 msgid "" "Removes a previous subscription to the source package " "<replaceable>sourcepackage</replaceable> using the specified email address " "or the sender address if the second argument is left out." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1173 msgid "<literal>unsubscribeall [<email>]</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1176 msgid "" "Removes all subscriptions of the specified email address or the sender " "address if the second argument is left out." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1182 msgid "<literal>which [<email>]</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1185 msgid "" "Lists all subscriptions for the sender or the email address optionally " "specified." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1191 msgid "<literal>keyword [<email>]</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1194 msgid "" "Tells you the keywords that you are accepting. For an explanation of " "keywords, <link linkend=\"pkg-tracking-system\">see above</link>. Here's a " "quick summary:" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1201 msgid "<literal>bts</literal>: mails coming from the Debian Bug Tracking System" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1206 msgid "<literal>bts-control</literal>: reply to mails sent to &email-bts-control;" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1212 msgid "" "<literal>summary</literal>: automatic summary mails about the state of a " "package" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1218 msgid "" "<literal>contact</literal>: mails sent to the maintainer through the " "*@packages.debian.org aliases" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1224 msgid "<literal>cvs</literal>: notification of VCS commits" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1229 msgid "<literal>ddtp</literal>: translations of descriptions and debconf templates" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1234 msgid "" "<literal>derivatives</literal>: changes made on the package by derivative " "distributions" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1240 msgid "" "<literal>derivatives-bugs</literal>: bugs reports and comments from " "derivative distributions" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1246 msgid "" "<literal>upload-source</literal>: announce of a new source upload that has " "been accepted" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1252 msgid "" "<literal>upload-binary</literal>: announce of a new binary-only upload " "(porting)" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1258 msgid "" "<literal>katie-other</literal>: other mails from ftpmasters (override " "disparity, etc.)" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1264 msgid "<literal>buildd</literal>: build failures notifications from build daemons" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><itemizedlist><listitem><para> #: resources.dbk:1269 msgid "" "<literal>default</literal>: all the other mails (those which aren't " "automatic)" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1276 msgid "<literal>keyword <sourcepackage> [<email>]</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1279 msgid "" "Same as the previous item but for the given source package, since you may " "select a different set of keywords for each source package." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1285 msgid "<literal>keyword [<email>] {+|-|=} <list of keywords></literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1288 msgid "" "Accept (+) or refuse (-) mails classified under the given keyword(s). " "Define the list (=) of accepted keywords. This changes the default set of " "keywords accepted by a user." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1295 msgid "" "<literal>keywordall [<email>] {+|-|=} <list of " "keywords></literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1298 msgid "" "Accept (+) or refuse (-) mails classified under the given keyword(s). " "Define the list (=) of accepted keywords. This changes the set of accepted " "keywords of all the currently active subscriptions of a user." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1305 msgid "" "<literal>keyword <sourcepackage> [<email>] {+|-|=} <list of " "keywords></literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1308 msgid "" "Same as previous item but overrides the keywords list for the indicated " "source package." msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><term> #: resources.dbk:1314 msgid "<literal>quit | thanks | --</literal>" msgstr "" #. type: Content of: <chapter><section><section><variablelist><varlistentry><listitem><para> #: resources.dbk:1317 msgid "Stops processing commands. All following lines are ignored by the bot." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1323 msgid "" "The <command>pts-subscribe</command> command-line utility (from the " "<systemitem role=\"package\">devscripts</systemitem> package) can be handy " "to temporarily subscribe to some packages, for example after having made an " "non-maintainer upload." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:1331 msgid "Filtering PTS mails" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1333 msgid "" "Once you are subscribed to a package, you will get the mails sent to " "<literal><replaceable>sourcepackage</replaceable>@&pts-host;</literal>. " "Those mails have special headers appended to let you filter them in a " "special mailbox (e.g. with <command>procmail</command>). The added headers " "are <literal>X-Loop</literal>, <literal>X-PTS-Package</literal>, " "<literal>X-PTS-Keyword</literal> and <literal>X-Unsubscribe</literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1341 msgid "" "Here is an example of added headers for a source upload notification on the " "<systemitem role=\"package\">dpkg</systemitem> package:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: resources.dbk:1345 #, no-wrap msgid "" "X-Loop: dpkg@&pts-host;\n" "X-PTS-Package: dpkg\n" "X-PTS-Keyword: upload-source\n" "List-Unsubscribe: <mailto:pts@qa.debian.org?body=unsubscribe+dpkg>\n" msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:1353 msgid "Forwarding VCS commits in the PTS" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1355 msgid "" "If you use a publicly accessible VCS repository for maintaining your Debian " "package, you may want to forward the commit notification to the PTS so that " "the subscribers (and possible co-maintainers) can closely follow the " "package's evolution." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1361 msgid "" "Once you set up the VCS repository to generate commit notifications, you " "just have to make sure it sends a copy of those mails to " "<literal><replaceable>sourcepackage</replaceable>_cvs@&pts-host;</literal>. " "Only the people who accept the <literal>cvs</literal> keyword will receive " "these notifications. Note that the mail needs to be sent from a " "<literal>debian.org</literal> machine, otherwise you'll have to add the " "<literal>X-PTS-Approved: 1</literal> header." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1370 msgid "" "For Subversion repositories, the usage of svnmailer is recommended. See " "<ulink url=\"&url-alioth-pkg;\" /> for an example on how to do it." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:1376 msgid "The PTS web interface" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1378 msgid "" "The PTS has a web interface at <ulink url=\"https://&pts-host;/\"></ulink> " "that puts together a lot of information about each source package. It " "features many useful links (BTS, QA stats, contact information, DDTP " "translation status, buildd logs) and gathers much more information from " "various places (30 latest changelog entries, testing status, etc.). It's a " "very useful tool if you want to know what's going on with a specific source " "package. Furthermore there's a form that allows easy subscription to the " "PTS via email." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1388 msgid "" "You can jump directly to the web page concerning a specific source package " "with a URL like " "<literal>https://&pts-host;/<replaceable>sourcepackage</replaceable></literal>." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1393 msgid "" "This web interface has been designed like a portal for the development of " "packages: you can add custom content on your packages' pages. You can add " "static information (news items that are meant to stay available " "indefinitely) and news items in the latest news section." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1399 msgid "Static news items can be used to indicate:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1404 msgid "" "the availability of a project hosted on <link " "linkend=\"alioth\">Alioth</link> for co-maintaining the package" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1410 msgid "a link to the upstream web site" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1415 msgid "a link to the upstream bug tracker" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1420 msgid "the existence of an IRC channel dedicated to the software" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1425 msgid "" "any other available resource that could be useful in the maintenance of the " "package" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1431 msgid "Usual news items may be used to announce that:" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1436 msgid "beta packages are available for testing" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1441 msgid "final packages are expected for next week" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1446 msgid "the packaging is about to be redone from scratch" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1451 msgid "backports are available" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1456 msgid "the maintainer is on vacation (if they wish to publish this information)" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1461 msgid "a NMU is being worked on" msgstr "" #. type: Content of: <chapter><section><section><itemizedlist><listitem><para> #: resources.dbk:1466 msgid "something important will affect the package" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1471 msgid "" "Both kinds of news are generated in a similar manner: you just have to send " "an email either to <email>pts-static-news@qa.debian.org</email> or to " "<email>pts-news@qa.debian.org</email>. The mail should indicate which " "package is concerned by having the name of the source package in a " "<literal>X-PTS-Package</literal> mail header or in a " "<literal>Package</literal> pseudo-header (like the BTS reports). If a URL " "is available in the <literal>X-PTS-Url</literal> mail header or in the " "<literal>Url</literal> pseudo-header, then the result is a link to that URL " "instead of a complete news item." msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1482 msgid "" "Here are a few examples of valid mails used to generate news items in the " "PTS. The first one adds a link to the viewsvn interface of debian-cd in the " "Static information section:" msgstr "" #. type: Content of: <chapter><section><section><screen> #: resources.dbk:1487 #, no-wrap msgid "" "From: Raphael Hertzog <hertzog@debian.org>\n" "To: pts-static-news@qa.debian.org\n" "Subject: Browse debian-cd SVN repository\n" "\n" "Package: debian-cd\n" "Url: http://svn.debian.org/viewsvn/debian-cd/trunk/\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1495 msgid "" "The second one is an announcement sent to a mailing list which is also sent " "to the PTS so that it is published on the PTS web page of the package. Note " "the use of the BCC field to avoid answers sent to the PTS by mistake." msgstr "" #. type: Content of: <chapter><section><section><screen> #: resources.dbk:1500 #, no-wrap msgid "" "From: Raphael Hertzog <hertzog@debian.org>\n" "To: debian-gtk-gnome@&lists-host;\n" "Bcc: pts-news@qa.debian.org\n" "Subject: Galeon 2.0 backported for woody\n" "X-PTS-Package: galeon\n" "\n" "Hello gnomers!\n" "\n" "I'm glad to announce that galeon has been backported for woody. You'll " "find\n" "everything here:\n" "...\n" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1513 msgid "" "Think twice before adding a news item to the PTS because you won't be able " "to remove it later and you won't be able to edit it either. The only thing " "that you can do is send a second news item that will deprecate the " "information contained in the previous one." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:1523 msgid "Developer's packages overview" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1525 msgid "" "A QA (quality assurance) web portal is available at <ulink " "url=\"&url-ddpo;\"></ulink> which displays a table listing all the packages " "of a single developer (including those where the party is listed as a " "co-maintainer). The table gives a good summary about the developer's " "packages: number of bugs by severity, list of available versions in each " "distribution, testing status and much more including links to any other " "useful information." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1534 msgid "" "It is a good idea to look up your own data regularly so that you don't " "forget any open bugs, and so that you don't forget which packages are your " "responsibility." msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:1541 msgid "Debian's FusionForge installation: Alioth" msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1543 msgid "" "Alioth is a Debian service based on a slightly modified version of the " "FusionForge software (which evolved from SourceForge and GForge). This " "software offers developers access to easy-to-use tools such as bug trackers, " "patch manager, project/task managers, file hosting services, mailing lists, " "VCS repositories etc. All these tools are managed via a web interface." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1550 msgid "" "It is intended to provide facilities to free software projects backed or led " "by Debian, facilitate contributions from external developers to projects " "started by Debian, and help projects whose goals are the promotion of Debian " "or its derivatives. It's heavily used by many Debian teams and provides " "hosting for all sorts of VCS repositories." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1557 msgid "" "All Debian developers automatically have an account on Alioth. They can " "activate it by using the recover password facility. External developers can " "request guest accounts on Alioth." msgstr "" #. type: Content of: <chapter><section><para> #: resources.dbk:1562 msgid "For more information please visit the following links:" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:1565 msgid "<ulink url=\"&url-alioth-wiki;\" />" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:1566 msgid "<ulink url=\"&url-alioth-faq;\" />" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:1567 msgid "<ulink url=\"&url-alioth-pkg;\" />" msgstr "" #. type: Content of: <chapter><section><itemizedlist><listitem><para> #: resources.dbk:1568 msgid "<ulink url=\"&url-alioth;\" />" msgstr "" #. type: Content of: <chapter><section><title> #: resources.dbk:1573 msgid "Goodies for Debian Developers and Debian Maintainers" msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:1575 msgid "LWN Subscriptions" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1577 msgid "" "Since October of 2002, HP has sponsored a subscription to LWN for all " "interested Debian Developers and Debian Maintainers. Details on how to get " "access to this benefit are in <ulink " "url=\"https://&lists-host;/debian-devel-announce/2002/10/msg00018.html\"></ulink>." msgstr "" #. type: Content of: <chapter><section><section><title> #: resources.dbk:1585 msgid "Valve games on Steam" msgstr "" #. type: Content of: <chapter><section><section><para> #: resources.dbk:1587 msgid "" "Since January 2014, Valve has sponsored free subscribtions to all past and " "present Valve games on the Steam game distribution service for all " "interested Debian Developers and Debian Maintainers. Since Steam and Valve " "games are not Free Software, please avoid using your Debian development " "machines for using Steam and playing games from Steam. See <ulink " "url=\"https://&lists-host;/debian-devel-announce/2014/01/msg00006.html\"></ulink>." msgstr "" #. type: Content of: <chapter><title> #: scope.dbk:7 msgid "Scope of This Document" msgstr "" #. type: Content of: <chapter><para> #: scope.dbk:9 msgid "" "The purpose of this document is to provide an overview of the recommended " "procedures and the available resources for Debian developers." msgstr "" #. type: Content of: <chapter><para> #: scope.dbk:14 msgid "" "The procedures discussed within include how to become a maintainer (<xref " "linkend=\"new-maintainer\"/>); how to create new packages (<xref " "linkend=\"newpackage\"/>) and how to upload packages (<xref " "linkend=\"upload\"/>); how to handle bug reports (<xref " "linkend=\"bug-handling\"/>); how to move, remove, or orphan packages (<xref " "linkend=\"archive-manip\"/>); how to port packages (<xref " "linkend=\"porting\"/>); and how and when to do interim releases of other " "maintainers' packages (<xref linkend=\"nmu\"/>)." msgstr "" #. type: Content of: <chapter><para> #: scope.dbk:23 msgid "" "The resources discussed in this reference include the mailing lists (<xref " "linkend=\"mailing-lists\"/>) and servers (<xref " "linkend=\"server-machines\"/>); a discussion of the structure of the Debian " "archive (<xref linkend=\"archive\"/>); explanation of the different servers " "which accept package uploads (<xref linkend=\"upload-ftp-master\"/>); and a " "discussion of resources which can help maintainers with the quality of their " "packages (<xref linkend=\"tools\"/>)." msgstr "" #. type: Content of: <chapter><para> #: scope.dbk:31 msgid "" "It should be clear that this reference does not discuss the technical " "details of Debian packages nor how to generate them. Nor does this " "reference detail the standards to which Debian software must comply. All of " "such information can be found in the <ulink " "url=\"&url-debian-policy;\">Debian Policy Manual</ulink>." msgstr "" #. type: Content of: <chapter><para> #: scope.dbk:38 msgid "" "Furthermore, this document is <emphasis>not an expression of formal " "policy</emphasis>. It contains documentation for the Debian system and " "generally agreed-upon best practices. Thus, it is not what is called a " "``normative'' document." msgstr "" #. type: Content of: <appendix><title> #: tools.dbk:7 msgid "Overview of Debian Maintainer Tools" msgstr "" #. type: Content of: <appendix><para> #: tools.dbk:9 msgid "" "This section contains a rough overview of the tools available to " "maintainers. The following is by no means complete or definitive, but just " "a guide to some of the more popular tools." msgstr "" #. type: Content of: <appendix><para> #: tools.dbk:14 msgid "" "Debian maintainer tools are meant to aid developers and free their time for " "critical tasks. As Larry Wall says, there's more than one way to do it." msgstr "" #. type: Content of: <appendix><para> #: tools.dbk:18 msgid "" "Some people prefer to use high-level package maintenance tools and some do " "not. Debian is officially agnostic on this issue; any tool which gets the " "job done is fine. Therefore, this section is not meant to stipulate to " "anyone which tools they should use or how they should go about their duties " "of maintainership. Nor is it meant to endorse any particular tool to the " "exclusion of a competing tool." msgstr "" #. type: Content of: <appendix><para> #: tools.dbk:26 msgid "" "Most of the descriptions of these packages come from the actual package " "descriptions themselves. Further information can be found in the package " "documentation itself. You can also see more info with the command " "<command>apt-cache show <replaceable>package-name</replaceable></command>." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:32 msgid "Core tools" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:34 msgid "The following tools are pretty much required for any maintainer." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:37 msgid "<systemitem role=\"package\">dpkg-dev</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:39 msgid "" "<systemitem role=\"package\">dpkg-dev</systemitem> contains the tools " "(including <command>dpkg-source</command>) required to unpack, build, and " "upload Debian source packages. These utilities contain the fundamental, " "low-level functionality required to create and manipulate packages; as such, " "they are essential for any Debian maintainer." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:48 msgid "<systemitem role=\"package\">debconf</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:50 msgid "" "<systemitem role=\"package\">debconf</systemitem> provides a consistent " "interface to configuring packages interactively. It is user interface " "independent, allowing end-users to configure packages with a text-only " "interface, an HTML interface, or a dialog interface. New interfaces can be " "added as modules." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:56 msgid "" "You can find documentation for this package in the <systemitem " "role=\"package\">debconf-doc</systemitem> package." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:60 msgid "" "Many feel that this system should be used for all packages which require " "interactive configuration; see <xref linkend=\"bpp-config-mgmt\"/>. " "<systemitem role=\"package\">debconf</systemitem> is not currently required " "by Debian Policy, but that may change in the future." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:68 msgid "<systemitem role=\"package\">fakeroot</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:70 msgid "" "<systemitem role=\"package\">fakeroot</systemitem> simulates root " "privileges. This enables you to build packages without being root (packages " "usually want to install files with root ownership). If you have <systemitem " "role=\"package\">fakeroot</systemitem> installed, you can build packages as " "a regular user: <literal>dpkg-buildpackage -rfakeroot</literal>." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:81 msgid "Package lint tools" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:83 msgid "" "According to the Free On-line Dictionary of Computing (FOLDOC), `lint' is a " "Unix C language processor which carries out more thorough checks on the code " "than is usual with C compilers. Package lint tools help package maintainers " "by automatically finding common problems and policy violations in their " "packages." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:89 msgid "<systemitem role=\"package\">lintian</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:91 msgid "" "<systemitem role=\"package\">lintian</systemitem> dissects Debian packages " "and emits information about bugs and policy violations. It contains " "automated checks for many aspects of Debian policy as well as some checks " "for common errors." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:97 msgid "" "You should periodically get the newest <systemitem " "role=\"package\">lintian</systemitem> from <literal>unstable</literal> and " "check over all your packages. Notice that the <literal>-i</literal> option " "provides detailed explanations of what each error or warning means, what its " "basis in Policy is, and commonly how you can fix the problem." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:104 msgid "" "Refer to <xref linkend=\"sanitycheck\"/> for more information on how and " "when to use Lintian." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:108 msgid "" "You can also see a summary of all problems reported by Lintian on your " "packages at <ulink url=\"&url-lintian;\"></ulink>. These reports contain " "the latest <command>lintian</command> output for the whole development " "distribution (<literal>unstable</literal>)." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:116 msgid "<command>debdiff</command>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:118 msgid "" "<command>debdiff</command> (from the <systemitem " "role=\"package\">devscripts</systemitem> package, <xref " "linkend=\"devscripts\"/>) compares file lists and control files of two " "packages. It is a simple regression test, as it will help you notice if the " "number of binary packages has changed since the last upload, or if something " "has changed in the control file. Of course, some of the changes it reports " "will be all right, but it can help you prevent various accidents." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:127 msgid "You can run it over a pair of binary packages:" msgstr "" #. type: Content of: <appendix><section><section><screen> #: tools.dbk:130 #, no-wrap msgid "debdiff package_1-1_arch.deb package_2-1_arch.deb\n" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:133 msgid "Or even a pair of changes files:" msgstr "" #. type: Content of: <appendix><section><section><screen> #: tools.dbk:136 #, no-wrap msgid "debdiff package_1-1_arch.changes package_2-1_arch.changes\n" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:139 msgid "" "For more information please see <citerefentry> " "<refentrytitle>debdiff</refentrytitle> <manvolnum>1</manvolnum> " "</citerefentry>." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:148 msgid "Helpers for <filename>debian/rules</filename>" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:150 msgid "" "Package building tools make the process of writing " "<filename>debian/rules</filename> files easier. See <xref " "linkend=\"helper-scripts\"/> for more information about why these might or " "might not be desired." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:156 msgid "<systemitem role=\"package\">debhelper</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:158 msgid "" "<systemitem role=\"package\">debhelper</systemitem> is a collection of " "programs which can be used in <filename>debian/rules</filename> to automate " "common tasks related to building binary Debian packages. <systemitem " "role=\"package\">debhelper</systemitem> includes programs to install various " "files into your package, compress files, fix file permissions, and integrate " "your package with the Debian menu system." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:166 msgid "" "Unlike some approaches, <systemitem role=\"package\">debhelper</systemitem> " "is broken into several small, simple commands which act in a consistent " "manner. As such, it allows more fine-grained control than some of the other " "debian/rules tools." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:172 msgid "" "There are a number of little <systemitem " "role=\"package\">debhelper</systemitem> add-on packages, too transient to " "document. You can see the list of most of them by doing <literal>apt-cache " "search ^dh-</literal>." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:179 msgid "<systemitem role=\"package\">dh-make</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:181 msgid "" "The <systemitem role=\"package\">dh-make</systemitem> package contains " "<command>dh_make</command>, a program that creates a skeleton of files " "necessary to build a Debian package out of a source tree. As the name " "suggests, <command>dh_make</command> is a rewrite of <systemitem " "role=\"package\">debmake</systemitem> and its template files use " "<command>dh_*</command> programs from <systemitem " "role=\"package\">debhelper</systemitem>." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:189 msgid "" "While the rules files generated by <command>dh_make</command> are in general " "a sufficient basis for a working package, they are still just the " "groundwork: the burden still lies on the maintainer to finely tune the " "generated files and make the package entirely functional and " "Policy-compliant." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:197 msgid "<systemitem role=\"package\">equivs</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:199 msgid "" "<systemitem role=\"package\">equivs</systemitem> is another package for " "making packages. It is often suggested for local use if you need to make a " "package simply to fulfill dependencies. It is also sometimes used when " "making ``meta-packages'', which are packages whose only purpose is to depend " "on other packages." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:210 msgid "Package builders" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:212 msgid "" "The following packages help with the package building process, general " "driving <command>dpkg-buildpackage</command> as well as handling supporting " "tasks." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:216 msgid "<systemitem role=\"package\">git-buildpackage</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:218 msgid "" "<systemitem role=\"package\">git-buildpackage</systemitem> provides the " "capability to inject or import Debian source packages into a Git repository, " "build a Debian package from the Git repository, and helps in integrating " "upstream changes into the repository." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:224 msgid "" "These utilities provide an infrastructure to facilitate the use of Git by " "Debian maintainers. This allows one to keep separate Git branches of a " "package for <literal>stable</literal>, <literal>unstable</literal> and " "possibly <literal>experimental</literal> distributions, along with the other " "benefits of a version control system." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:233 msgid "<systemitem role=\"package\">debootstrap</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:235 msgid "" "The <systemitem role=\"package\">debootstrap</systemitem> package and script " "allows you to bootstrap a Debian base system into any part of your " "filesystem. By base system, we mean the bare minimum of packages required " "to operate and install the rest of the system." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:241 msgid "" "Having a system like this can be useful in many ways. For instance, you can " "<command>chroot</command> into it if you want to test your build " "dependencies. Or you can test how your package behaves when installed into " "a bare base system. Chroot builders use this package; see below." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:249 msgid "<systemitem role=\"package\">pbuilder</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:251 msgid "" "<systemitem role=\"package\">pbuilder</systemitem> constructs a chrooted " "system, and builds a package inside the chroot. It is very useful to check " "that a package's build-dependencies are correct, and to be sure that " "unnecessary and wrong build dependencies will not exist in the resulting " "package." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:257 msgid "" "A related package is <systemitem role=\"package\">cowbuilder</systemitem>, " "which speeds up the build process using COW filesystem on any standard Linux " "filesystem." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:263 msgid "<systemitem role=\"package\">sbuild</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:265 msgid "" "<systemitem role=\"package\">sbuild</systemitem> is another automated " "builder. It can use chrooted environments as well. It can be used " "stand-alone, or as part of a networked, distributed build environment. As " "the latter, it is part of the system used by porters to build binary " "packages for all the available architectures. See <xref " "linkend=\"wanna-build\"/> for more information, and <ulink " "url=\"&url-buildd;\"></ulink> to see the system in action." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:277 msgid "Package uploaders" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:279 msgid "" "The following packages help automate or simplify the process of uploading " "packages into the official archive." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:283 msgid "<systemitem role=\"package\">dupload</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:285 msgid "" "<systemitem role=\"package\">dupload</systemitem> is a package and a script " "to automatically upload Debian packages to the Debian archive, to log the " "upload, and to send mail about the upload of a package. You can configure " "it for new upload locations or methods." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:293 msgid "<systemitem role=\"package\">dput</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:295 msgid "" "The <systemitem role=\"package\">dput</systemitem> package and script does " "much the same thing as <systemitem role=\"package\">dupload</systemitem>, " "but in a different way. It has some features over <systemitem " "role=\"package\">dupload</systemitem>, such as the ability to check the " "GnuPG signature and checksums before uploading, and the possibility of " "running <command>dinstall</command> in dry-run mode after the upload." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:305 msgid "<command>dcut</command>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:307 msgid "" "The <command>dcut</command> script (part of the package <systemitem " "role=\"package\">dput</systemitem>, <xref linkend=\"dput\"/>) helps in " "removing files from the ftp upload directory." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:315 msgid "Maintenance automation" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:317 msgid "" "The following tools help automate different maintenance tasks, from adding " "changelog entries or signature lines and looking up bugs in Emacs to making " "use of the newest and official <filename>config.sub</filename>." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:322 msgid "<systemitem role=\"package\">devscripts</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:324 msgid "" "<systemitem role=\"package\">devscripts</systemitem> is a package containing " "wrappers and tools which are very helpful for maintaining your Debian " "packages. Example scripts include <command>debchange</command> and " "<command>dch</command>, which manipulate your " "<filename>debian/changelog</filename> file from the command-line, and " "<command>debuild</command>, which is a wrapper around " "<command>dpkg-buildpackage</command>. The <command>bts</command> utility is " "also very helpful to update the state of bug reports on the command line. " "<command>uscan</command> can be used to watch for new upstream versions of " "your packages. <command>debrsign</command> can be used to remotely sign a " "package prior to upload, which is nice when the machine you build the " "package on is different from where your GPG keys are." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:338 msgid "" "See the <citerefentry> <refentrytitle>devscripts</refentrytitle> " "<manvolnum>1</manvolnum> </citerefentry> manual page for a complete list of " "available scripts." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:345 msgid "<systemitem role=\"package\">autotools-dev</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:347 msgid "" "<systemitem role=\"package\">autotools-dev</systemitem> contains best " "practices for people who maintain packages which use " "<command>autoconf</command> and/or <command>automake</command>. Also " "contains canonical <filename>config.sub</filename> and " "<filename>config.guess</filename> files which are known to work on all " "Debian ports." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:356 msgid "<systemitem role=\"package\">dpkg-repack</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:358 msgid "" "<command>dpkg-repack</command> creates Debian package file out of a package " "that has already been installed. If any changes have been made to the " "package while it was unpacked (e.g., files in <filename>/etc</filename> were " "modified), the new package will inherit the changes." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:364 msgid "" "This utility can make it easy to copy packages from one computer to another, " "or to recreate packages which are installed on your system but no longer " "available elsewhere, or to save the current state of a package before you " "upgrade it." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:371 msgid "<systemitem role=\"package\">alien</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:373 msgid "" "<command>alien</command> converts binary packages between various packaging " "formats, including Debian, RPM (RedHat), LSB (Linux Standard Base), Solaris, " "and Slackware packages." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:380 msgid "<systemitem role=\"package\">debsums</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:382 msgid "" "<command>debsums</command> checks installed packages against their MD5 " "sums. Note that not all packages have MD5 sums, since they aren't required " "by Policy." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:388 msgid "<systemitem role=\"package\">dpkg-dev-el</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:390 msgid "" "<systemitem role=\"package\">dpkg-dev-el</systemitem> is an Emacs lisp " "package which provides assistance when editing some of the files in the " "<filename>debian</filename> directory of your package. For instance, there " "are handy functions for listing a package's current bugs, and for finalizing " "the latest entry in a <filename>debian/changelog</filename> file." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:399 msgid "<command>dpkg-depcheck</command>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:401 msgid "" "<command>dpkg-depcheck</command> (from the <systemitem " "role=\"package\">devscripts</systemitem> package, <xref " "linkend=\"devscripts\"/>) runs a command under <command>strace</command> to " "determine all the packages that were used by the said command." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:407 msgid "" "For Debian packages, this is useful when you have to compose a " "<literal>Build-Depends</literal> line for your new package: running the " "build process through <command>dpkg-depcheck</command> will provide you with " "a good first approximation of the build-dependencies. For example:" msgstr "" #. type: Content of: <appendix><section><section><screen> #: tools.dbk:413 #, no-wrap msgid "dpkg-depcheck -b debian/rules build\n" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:416 msgid "" "<command>dpkg-depcheck</command> can also be used to check for run-time " "dependencies, especially if your package uses <citerefentry> " "<refentrytitle>exec</refentrytitle> <manvolnum>2</manvolnum> </citerefentry> " "to run other programs." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:422 msgid "" "For more information please see <citerefentry> " "<refentrytitle>dpkg-depcheck</refentrytitle> <manvolnum>1</manvolnum> " "</citerefentry>." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:431 msgid "Porting tools" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:433 msgid "The following tools are helpful for porters and for cross-compilation." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:436 msgid "<systemitem role=\"package\">quinn-diff</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:438 msgid "" "<systemitem role=\"package\">quinn-diff</systemitem> is used to locate the " "differences from one architecture to another. For instance, it could tell " "you which packages need to be ported for architecture " "<replaceable>Y</replaceable>, based on architecture " "<replaceable>X</replaceable>." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:446 msgid "<systemitem role=\"package\">dpkg-cross</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:448 msgid "" "<systemitem role=\"package\">dpkg-cross</systemitem> is a tool for " "installing libraries and headers for cross-compiling in a way similar to " "<systemitem role=\"package\">dpkg</systemitem>. Furthermore, the " "functionality of <command>dpkg-buildpackage</command> and " "<command>dpkg-shlibdeps</command> is enhanced to support cross-compiling." msgstr "" #. type: Content of: <appendix><section><title> #: tools.dbk:459 msgid "Documentation and information" msgstr "" #. type: Content of: <appendix><section><para> #: tools.dbk:461 msgid "" "The following packages provide information for maintainers or help with " "building documentation." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:466 msgid "<systemitem role=\"package\">docbook-xml</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:468 msgid "" "<systemitem role=\"package\">docbook-xml</systemitem> provides the DocBook " "XML DTDs, which are commonly used for Debian documentation (as is the older " "debiandoc SGML DTD). This manual, for instance, is written in DocBook XML." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:474 msgid "" "The <systemitem role=\"package\">docbook-xsl</systemitem> package provides " "the XSL files for building and styling the source to various output " "formats. You will need an XSLT processor, such as <systemitem " "role=\"package\">xsltproc</systemitem>, to use the XSL stylesheets. " "Documentation for the stylesheets can be found in the various <systemitem " "role=\"package\">docbook-xsl-doc-*</systemitem> packages." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:482 msgid "" "To produce PDF from FO, you need an FO processor, such as <systemitem " "role=\"package\">xmlroff</systemitem> or <systemitem " "role=\"package\">fop</systemitem>. Another tool to generate PDF from DocBook " "XML is <systemitem role=\"package\">dblatex</systemitem>." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:490 msgid "<systemitem role=\"package\">debiandoc-sgml</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:492 msgid "" "<systemitem role=\"package\">debiandoc-sgml</systemitem> provides the " "DebianDoc SGML DTD, which is commonly used for Debian documentation, but is " "now deprecated (<systemitem role=\"package\">docbook-xml</systemitem> should " "be used instead). It also provides scripts for building and styling the " "source to various output formats." msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:501 msgid "" "Documentation for the DTD can be found in the <systemitem " "role=\"package\">debiandoc-sgml-doc</systemitem> package." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:507 msgid "<systemitem role=\"package\">debian-keyring</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:509 msgid "" "Contains the public GPG and PGP keys of Debian developers. See <xref " "linkend=\"key-maint\"/> and the package documentation for more information." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:515 msgid "<systemitem role=\"package\">debian-maintainers</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:517 msgid "" "Contains the public GPG keys of Debian Maintainers. See <ulink " "url=\"&url-wiki-dm;\"></ulink> for more information." msgstr "" #. type: Content of: <appendix><section><section><title> #: tools.dbk:523 msgid "<systemitem role=\"package\">debview</systemitem>" msgstr "" #. type: Content of: <appendix><section><section><para> #: tools.dbk:525 msgid "" "<systemitem role=\"package\">debview</systemitem> provides an Emacs mode for " "viewing Debian binary packages. This lets you examine a package without " "unpacking it." msgstr ""