Dear Debian I18N people, I would like to know if some of you would be interested in translating packaging-tutorial.
packaging-tutorial already includes de.po es.po fr.po ja.po nl.po pt.po pt_BR.po ru.po zh_TW.po. So do not translate it to these languages (the translators will be contacted separately). language translated fuzzy untranslated ----------------------------------------------------- de 643 3 2 es 436 121 91 fr 648 ja 522 76 50 nl 642 4 2 pt 642 4 2 pt_BR 642 4 2 ru 605 15 28 zh_TW 642 4 2 Please send the updated file to me, or submit it as a wishlist bug against packaging-tutorial, or commit it to git directly (but in that last case, please also send me an email). The deadline for receiving the updated translation is Fri, 12 Mar 2021 14:02:05 +0100. If you have read so far, please find the POT file in attachment. Thanks in advance,
# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2021-02-26 13:54+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. type: Plain text #: packaging-tutorial.tex:4 msgid "\\mode<presentation> \\usetheme{debian}" msgstr "" #. Translators: #. change debiantutorial to debiantutorial.$lang to use translated file, and #. append to this string all commands to load localisation packages, e.g.: #. \\usepackage{debiantutorial.fr} \\usepackage[french]{babel} \\frenchsetup{...} #. type: Plain text #: packaging-tutorial.tex:10 msgid "\\usepackage{debiantutorial}" msgstr "" #. type: title{#2} #: packaging-tutorial.tex:14 msgid "Debian Packaging Tutorial" msgstr "" #. type: author{#2} #: packaging-tutorial.tex:14 msgid "Lucas Nussbaum\\\\{\\small\\texttt{packaging-tutor...@packages.debian.org}}" msgstr "" #. Translators: #. leave \\version unchanged: this will a variable containing the actual version #. To translate the date, use \\today or a string containing \\year, \\month, \\day #. (numeric values). #. DATE - use debian/rules update-version-date #. type: date{#1} #: packaging-tutorial.tex:20 msgid "version 0.27 -- 2021-01-08" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:52 msgid "About this tutorial" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Goal: \\textbf{tell you what you really need to know about Debian packaging}" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Modify existing packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Create your own packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Interact with the Debian community" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Become a Debian power-user" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Covers the most important points, but is not complete" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "You will need to read more documentation" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "Most of the content also applies to Debian derivative distributions" msgstr "" #. type: itemize #: packaging-tutorial.tex:52 msgid "That includes Ubuntu" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:56 debiantutorial.sty:45 msgid "Outline" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:58 msgid "Introduction" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:60 packaging-tutorial.tex:84 msgid "Debian" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:84 msgid "GNU/Linux distribution" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "1st major distro developed ``openly in the spirit of GNU''" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "\\textbf{Non-commercial}, built collaboratively by over 1,000 volunteers" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "3 main features:" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "" "\\textbf{Quality} -- culture of technical excellence\\\\ {\\small\\sl We " "release when it's ready}" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "" "\\textbf{Freedom} -- devs and users bound by the \\textsl{Social " "Contract}\\\\ Promoting the culture of Free Software since 1993" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "" "\\textbf{Independence} -- no (single) company babysitting Debian\\\\ And " "open decision-making process (\\textsl{do-ocracy} + \\textsl{democracy})" msgstr "" #. type: itemize #: packaging-tutorial.tex:84 msgid "\\textbf{Amateur} in the best sense: done for the love of it" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:105 msgid "Debian packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "\\textbf{.deb} files (binary packages)" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "A very powerful and convenient way to distribute software to users" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "One of the two most common package formats (with RPM)" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "Universal:" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "" "30,000 binary packages in Debian\\\\ $\\rightarrow$ most of the available " "free software is packaged in Debian!" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "For 12 ports (architectures), including 2 non-Linux (Hurd; KFreeBSD)" msgstr "" #. type: itemize #: packaging-tutorial.tex:105 msgid "Also used by 120 Debian derivative distributions" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:108 packaging-tutorial.tex:133 msgid "The Deb package format" msgstr "" #. type: itemize #: packaging-tutorial.tex:133 msgid "\\texttt{.deb} file: an \\texttt{ar} archive" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:133 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "$ ar tv wget_1.12-2.1_i386.deb\n" "rw-r--r-- 0/0 4 Sep 5 15:43 2010 debian-binary\n" "rw-r--r-- 0/0 2403 Sep 5 15:43 2010 control.tar.gz\n" "rw-r--r-- 0/0 751613 Sep 5 15:43 2010 data.tar.gz\n" " " msgstr "" #. $ #. type: itemize #: packaging-tutorial.tex:133 msgid "" "\\texttt{debian-binary}: version of the deb file format, " "\\texttt{\"2.0\\textbackslash{}n\"}" msgstr "" #. type: itemize #: packaging-tutorial.tex:133 msgid "" "\\texttt{control.tar.gz}: metadata about the package\\\\ {\\small " "\\texttt{\\textbf{control}, md5sums, (pre|post)(rm|inst), triggers, shlibs}, " "\\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:133 msgid "\\texttt{data.tar.gz}: data files of the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:133 msgid "" "You could create your \\texttt{.deb} files manually\\\\ {\\footnotesize " "\\url{http://tldp.org/HOWTO/html\\_single/Debian-Binary-Package-Building-HOWTO/}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:133 msgid "But most people don't do it that way" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:133 msgid "This tutorial: create Debian packages, the Debian way" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:153 msgid "Tools you will need" msgstr "" #. type: itemize #: packaging-tutorial.tex:153 msgid "A Debian (or Ubuntu) system (with root access)" msgstr "" #. type: itemize #: packaging-tutorial.tex:153 msgid "Some packages:" msgstr "" #. type: itemize #: packaging-tutorial.tex:153 msgid "" "\\textbf{build-essential}: has dependencies on the packages that will be " "assumed to be available on the developer's machine (no need to specify them " "in the \\texttt{Build-Depends:} control field of your package)" msgstr "" #. type: itemize #: packaging-tutorial.tex:153 msgid "" "includes a dependency on \\textbf{dpkg-dev}, which contains basic " "Debian-specific tools to create packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:153 msgid "\\textbf{devscripts}: contains many useful scripts for Debian maintainers" msgstr "" #. type: frame #: packaging-tutorial.tex:161 msgid "" "Many other tools will also be mentioned later, such as \\textbf{debhelper}, " "\\textbf{cdbs}, \\textbf{quilt}, \\textbf{pbuilder}, \\textbf{sbuild}, " "\\textbf{lintian}, \\textbf{svn-buildpackage}, \\textbf{git-buildpackage}, " "\\ldots\\\\ Install them when you need them." msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:168 msgid "General packaging workflow" msgstr "" #. \draw[arr,->] (bin) -- (-1,-6) node[pos=0.5,left] {upload (\textttc{dput})}; #. hack hack hack #. type: tikzpicture #: packaging-tutorial.tex:188 msgid "" "\\node[node1] (www) at (0, 0) {Web}; \\node[node1] (us) at (2.5, 0) " "{upstream source}; \\node[node1] (da) at (-2.5, 0) {Debian mirror}; " "\\node[node1] (sp) at (0, -2) {source package}; \\draw[arr,<-,dashed,thick] " "(sp) -- (2.5,-2) node[right=0cm,text width=2.98cm,text " "centered,font=\\small\\sl] {where most of the manual work is done}; " "\\node[node1] (bin) at (0, -4) {one or several binary packages}; " "\\draw[arr,<-,dashed,thick] (bin) -- (3.5,-4) node[right,text " "centered,font=\\small\\ttfamily\\sl] {.deb\\normalfont}; \\draw[arr,->] (us) " "-- (sp) node[pos=0.5,right,command] {dh\\_make}; \\draw[arr,->] (da) -- (sp) " "node[pos=0.5,left,command] {apt-get source}; \\draw[arr,->] (www) -- (sp) " "node[pos=0.5,left,command] {dget}; \\draw[arr,->] (sp) -- (bin) " "node[pos=0.5,right,text width=6cm] {\\textttc{debuild} (build and test with " "\\textttc{lintian}) or \\textttc{dpkg-buildpackage}}; \\draw[arr,->] (bin) " "-- (1,-6) node[pos=0.5,right] {install (\\textttc{debi})}; " "\\draw[transparent] (bin) -- (-1,-6) node[pos=0.5,left,opaque] {upload " "(\\textttc{dput})}; \\draw[arr,->,rounded corners] (bin) -- (-1,-6) -- " "(-4.5,-6) -- (-4.5,0) -- (da); \\useasboundingbox (-4,-6) rectangle (6,0);" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:205 msgid "Rebuilding dash" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:205 msgid "Example: rebuilding dash" msgstr "" #. type: enumerate #: packaging-tutorial.tex:205 msgid "" "Install packages needed to build dash, and devscripts\\\\ {\\texttt{sudo " "apt-get build-dep dash}\\\\ (requires \\texttt{deb-src} lines in " "\\texttt{/etc/apt/sources.list})}\\\\ {\\texttt{sudo apt-get install " "-{}-no-install-recommends devscripts fakeroot}}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:205 msgid "" "Create a working directory, and get in it:\\\\ \\texttt{mkdir " "/tmp/debian-tutorial ; cd /tmp/debian-tutorial}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:205 msgid "" "Grab the \\texttt{dash} source package\\\\ \\texttt{apt-get source dash}\\\\ " "{\\small (This needs you to have \\texttt{deb-src} lines in your " "\\texttt{/etc/apt/sources.list})}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:205 msgid "" "Build the package\\\\ {\\texttt{cd dash-*\\\\ debuild -us -uc}} " "~~~(\\texttt{-us -uc} disables signing the package with GPG)" msgstr "" #. type: enumerate #: packaging-tutorial.tex:218 msgid "Check that it worked" msgstr "" #. type: itemize #: packaging-tutorial.tex:218 msgid "There are some new \\texttt{.deb} files in the parent directory" msgstr "" #. type: enumerate #: packaging-tutorial.tex:218 msgid "Look at the \\texttt{debian/} directory" msgstr "" #. type: itemize #: packaging-tutorial.tex:218 msgid "That's where the packaging work is done" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:256 msgid "Creating source packages" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:256 msgid "Source packages basics" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:256 msgid "Source package" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "" "One source package can generate several binary packages\\\\ {\\small " "e.g. the \\texttt{\\bfseries libtar} source generates the " "\\texttt{\\bfseries libtar0} and \\texttt{\\bfseries libtar-dev} binary " "packages}" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "Two kinds of packages: (if unsure, use non-native)" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "" "Native packages: normally for Debian specific software (\\textsl{dpkg}, " "\\textsl{apt})" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "Non-native packages: software developed outside Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "Main file: \\texttt{.dsc} (meta-data)" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "Other files depending on the version of the source format" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "1.0 or 3.0 (native): \\texttt{package\\_version.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "1.0 (non-native):" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "\\texttt{pkg\\_ver.orig.tar.gz}: upstream source" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "\\texttt{pkg\\_debver.diff.gz}: patch to add Debian-specific changes" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "3.0 (quilt):" msgstr "" #. type: itemize #: packaging-tutorial.tex:256 msgid "\\texttt{pkg\\_debver.debian.tar.gz}: tarball with the Debian changes" msgstr "" #. type: frame #: packaging-tutorial.tex:256 msgid "(See \\texttt{dpkg-source(1)} for exact details)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:280 msgid "Source package example (wget\\_1.12-2.1.dsc)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:280 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\small]\n" "Format: 3.0 (quilt)\n" "Source: wget\n" "Binary: wget\n" "Architecture: any\n" "Version: 1.12-2.1\n" "Maintainer: Noel Kothe <n...@debian.org>\n" "Homepage: http://www.gnu.org/software/wget/\n" "Standards-Version: 3.8.4\n" "Build-Depends: debhelper (>> 5.0.0), gettext, texinfo,\n" " libssl-dev (>= 0.9.8), dpatch, info2man\n" "Checksums-Sha1: \n" " 50d4ed2441e67[..]1ee0e94248 2464747 wget_1.12.orig.tar.gz\n" " d4c1c8bbe431d[..]dd7cef3611 48308 wget_1.12-2.1.debian.tar.gz\n" "Checksums-Sha256: \n" " 7578ed0974e12[..]dcba65b572 2464747 wget_1.12.orig.tar.gz\n" " 1e9b0c4c00eae[..]89c402ad78 48308 wget_1.12-2.1.debian.tar.gz\n" "Files: \n" " 141461b9c04e4[..]9d1f2abf83 2464747 wget_1.12.orig.tar.gz\n" " e93123c934e3c[..]2f380278c2 48308 wget_1.12-2.1.debian.tar.gz" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:308 msgid "Retrieving source packages" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:308 msgid "Retrieving an existing source package" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "From the Debian archive:" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "\\texttt{apt-get source \\textsl{package}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "\\texttt{apt-get source \\textsl{package=version}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "\\texttt{apt-get source \\textsl{package/release}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "(You need \\texttt{deb-src} lines in \\texttt{sources.list})" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "From the Internet:" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "\\texttt{dget \\textsl{url-to.dsc}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "" "\\texttt{dget " "http://snapshot.debian.org/archive/debian-archive/\\\\20090802T004153Z/debian/dists/bo/main/source/web/\\\\ " "wget\\_1.4.4-6.dsc}\\\\ (\\href{http://snapshot.debian.org/}{\\ttfamily " "snapshot.d.o} provides all packages from Debian since 2005)" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "From the (declared) version control system:" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "\\texttt{debcheckout \\textsl{package}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:308 msgid "Once downloaded, extract with \\texttt{dpkg-source -x \\textsl{file.dsc}}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:331 msgid "Creating a basic source package" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "" "Download the upstream source\\\\ (\\textsl{upstream source} = the one from " "the software's original developers)" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "" "Rename to " "\\texttt{<\\textsl{source\\_package}>\\_<\\textsl{upstream\\_version}>.orig.tar.gz}\\\\ " "(example: \\texttt{simgrid\\_3.6.orig.tar.gz})" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "Untar it" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "" "Rename the directory to " "\\texttt{<\\textsl{source\\_package}>-<\\textsl{upstream\\_version}>}\\\\ " "(example: \\texttt{simgrid-3.6})" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "" "\\texttt{cd " "\\texttt{<\\textsl{source\\_package}>-<\\textsl{upstream\\_version}>} \\&\\& " "dh\\_make}\\\\ (from the \\textbf{dh-make} package)" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "" "There are some alternatives to \\texttt{dh\\_make} for specific sets of " "packages: \\textbf{dh-make-perl}, \\textbf{dh-make-php}, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:331 msgid "\\texttt{debian/} directory created, with a lot of files in it" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:360 msgid "Files in debian/" msgstr "" #. type: frame #: packaging-tutorial.tex:360 msgid "" "All the packaging work should be made by modifying files in " "\\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "Main files:" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "\\textbf{control} -- meta-data about the package (dependencies, etc.)" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "\\textbf{rules} -- specifies how to build the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "\\textbf{copyright} -- copyright information for the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "\\textbf{changelog} -- history of the Debian package" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "Other files:" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "compat" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "watch" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "dh\\_install* targets\\\\ {\\small *.dirs, *.docs, *.manpages, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "maintainer scripts\\\\ {\\small *.postinst, *.prerm, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "source/format" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "patches/ -- if you need to modify the upstream sources" msgstr "" #. type: itemize #: packaging-tutorial.tex:360 msgid "Several files use a format based on RFC 822 (mail headers)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:372 msgid "debian/changelog" msgstr "" #. type: itemize #: packaging-tutorial.tex:372 msgid "Lists the Debian packaging changes" msgstr "" #. type: itemize #: packaging-tutorial.tex:372 msgid "Gives the current version of the package" msgstr "" #. type: tikzpicture #: packaging-tutorial.tex:372 msgid "" "\\draw (0,0) node[above right] {\\large 1.2.1.1-5}; \\draw " "[decorate,decoration={brace}] (2,0) -- (1.45,0) node[at start,below,text " "width=1.6cm,text centered] {\\small Debian revision}; \\draw " "[decorate,decoration={brace}] (1.4,0) -- (0,0) node[midway,below,text " "width=1.6cm,text centered] { \\small Upstream version};" msgstr "" #. % #. type: itemize #: packaging-tutorial.tex:386 msgid "Edited manually or with \\textttc{dch}" msgstr "" #. type: itemize #: packaging-tutorial.tex:386 msgid "Create a changelog entry for a new release: \\textttc{dch -i}" msgstr "" #. type: itemize #: packaging-tutorial.tex:386 msgid "" "Special format to automatically close Debian or Ubuntu bugs\\\\ Debian: " "\\texttt{Closes:~\\#595268}; Ubuntu: \\texttt{LP:~\\#616929}" msgstr "" #. type: itemize #: packaging-tutorial.tex:386 msgid "Installed as \\texttt{/usr/share/doc/\\textit{package}/changelog.Debian.gz}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:386 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "mpich2 (1.2.1.1-5) unstable; urgency=low\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:392 #, no-wrap msgid "" " * Use /usr/bin/python instead of /usr/bin/python2.5. Allow\n" " to drop dependency on python2.5. Closes: #595268\n" " * Make /usr/bin/mpdroot setuid. This is the default after\n" " the installation of mpich2 from source, too. LP: #616929\n" " + Add corresponding lintian override.\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:394 #, no-wrap msgid " -- Lucas Nussbaum <lu...@debian.org> Wed, 15 Sep 2010 18:13:44 +0200" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:421 msgid "debian/control" msgstr "" #. type: itemize #: packaging-tutorial.tex:421 msgid "Package metadata" msgstr "" #. type: itemize #: packaging-tutorial.tex:421 msgid "For the source package itself" msgstr "" #. type: itemize #: packaging-tutorial.tex:421 msgid "For each binary package built from this source" msgstr "" #. type: itemize #: packaging-tutorial.tex:421 msgid "" "Package name, section, priority, maintainer, uploaders, build-dependencies, " "dependencies, description, homepage, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:421 msgid "" "Documentation: Debian Policy chapter 5\\\\ " "\\url{https://www.debian.org/doc/debian-policy/ch-controlfields}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:421 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "Source: wget\n" "Section: web\n" "Priority: important\n" "Maintainer: Noel Kothe <n...@debian.org>\n" "Build-Depends: debhelper (>> 5.0.0), gettext, texinfo,\n" " libssl-dev (>= 0.9.8), dpatch, info2man\n" "Standards-Version: 3.8.4\n" "Homepage: http://www.gnu.org/software/wget/\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:427 #, no-wrap msgid "" "Package: wget\n" "Architecture: any\n" "Depends: ${shlibs:Depends}, ${misc:Depends}\n" "Description: retrieves files from the web\n" " Wget is a network utility to retrieve files from the Web" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:456 msgid "Architecture: all or any" msgstr "" #. type: frame #: packaging-tutorial.tex:456 msgid "Two kinds of binary packages:" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "Packages with different contents on each Debian architecture" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "Example: C program" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "\\texttt{Architecture:\\ any} in \\texttt{debian/control}" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "" "Or, if it only works on a subset of architectures:\\\\ " "\\texttt{Architecture:\\ amd64 i386 ia64 hurd-i386}" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "buildd.debian.org: builds all the other architectures for you on upload" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "" "Named " "\\texttt{\\textsl{package}\\_\\textsl{version}\\_\\textsl{architecture}.deb}" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "Packages with the same content on all architectures" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "Example: Perl library" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "\\texttt{Architecture:\\ all} in \\texttt{debian/control}" msgstr "" #. type: itemize #: packaging-tutorial.tex:456 msgid "Named \\texttt{\\textsl{package}\\_\\textsl{version}\\_\\textbf{all}.deb}" msgstr "" #. type: frame #: packaging-tutorial.tex:456 msgid "" "A source package can generate a mix of \\texttt{Architecture:\\ any} and " "\\texttt{Architecture:\\ all} binary packages" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:482 msgid "debian/rules" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "Makefile" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "Interface used to build Debian packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "" "Documented in Debian Policy, chapter 4.8\\\\ {\\small " "\\url{https://www.debian.org/doc/debian-policy/ch-source\\#s-debianrules}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "Required targets:" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "" "\\texttt{build, build-arch, build-indep}: should perform all the " "configuration and compilation" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "\\texttt{binary, binary-arch, binary-indep}: build the binary packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "" "\\texttt{dpkg-buildpackage} will call \\texttt{binary} to build all the " "packages, or \\texttt{binary-arch} to build only the " "\\texttt{Architecture:~any} packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:482 msgid "\\texttt{clean}: clean up the source directory" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:514 msgid "Packaging helpers" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:514 msgid "Packaging helpers -- debhelper" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "You could write shell code in \\texttt{debian/rules} directly" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Better practice (used by most packages): use a \\textsl{Packaging helper}" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Most popular one: \\textbf{debhelper} (used by 98\\% of packages)" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Goals:" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Factor the common tasks in standard tools used by all packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Fix some packaging bugs once for all packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "" "{\\footnotesize dh\\_installdirs, dh\\_installchangelogs, dh\\_installdocs, " "dh\\_install, dh\\_installdebconf, dh\\_installinit, dh\\_link, dh\\_strip, " "dh\\_compress, dh\\_fixperms, dh\\_perl, dh\\_makeshlibs, dh\\_installdeb, " "dh\\_shlibdeps, dh\\_gencontrol, dh\\_md5sums, dh\\_builddeb, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Called from \\texttt{debian/rules}" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Configurable using command parameters or files in \\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "" "{\\footnotesize \\ttfamily \\textsl{package}.docs, " "\\textsl{package}.examples, \\textsl{package}.install, " "\\textsl{package}.manpages, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "" "Third-party helpers for sets of packages: \\textbf{python-support}, " "\\textbf{dh\\_ocaml}, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "\\texttt{debian/compat}: Debhelper compatibility version" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "Defines precise behaviour of dh\\_*" msgstr "" #. type: itemize #: packaging-tutorial.tex:514 msgid "New syntax: \\texttt{Build-Depends: debhelper-compat (= 13)}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:518 msgid "debian/rules using debhelper (1/2)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:518 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize,escapeinside=\\{\\}]\n" "#!/usr/bin/make -f\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:521 #, no-wrap msgid "" "# Uncomment this to turn on verbose mode.\n" "#export DH_VERBOSE=1\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:525 #, no-wrap msgid "" "build: \n" " $(MAKE)\n" " #docbook-to-man debian/packagename.sgml > packagename.1\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:532 #, no-wrap msgid "" "clean: \n" " dh_testdir\n" " dh_testroot\n" " rm -f build-stamp configure-stamp\n" " $(MAKE) clean\n" " dh_clean \n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:540 #, no-wrap msgid "" "install: build\n" " dh_testdir\n" " dh_testroot\n" " dh_clean -k \n" " dh_installdirs\n" " # Add here commands to install the package into " "debian/packagename.\n" " $(MAKE) DESTDIR=$(CURDIR)/debian/packagename install" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:545 msgid "debian/rules using debhelper (2/2)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:545 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize,escapeinside=\\{\\}]\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:548 #, no-wrap msgid "" "# Build architecture-independent files here.\n" "binary-indep: build install\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:567 #, no-wrap msgid "" "# Build architecture-dependent files here.\n" "binary-arch: build install\n" " dh_testdir\n" " dh_testroot\n" " dh_installchangelogs \n" " dh_installdocs\n" " dh_installexamples\n" " dh_install\n" " dh_installman\n" " dh_link\n" " dh_strip\n" " dh_compress\n" " dh_fixperms\n" " dh_installdeb\n" " dh_shlibdeps\n" " dh_gencontrol\n" " dh_md5sums\n" " dh_builddeb\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:570 #, no-wrap msgid "" "binary: binary-indep binary-arch\n" ".PHONY: build clean binary-indep binary-arch binary install configure" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:601 msgid "CDBS" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "With debhelper, still a lot of redundancy between packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "Second-level helpers that factor common functionality" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "" "E.g. building with \\texttt{./configure \\&\\& make \\&\\& make install} or " "CMake" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "CDBS:" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "Introduced in 2005, based on advanced \\textsl{GNU make} magic" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "Documentation: \\texttt{/usr/share/doc/cdbs/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "Support for Perl, Python, Ruby, GNOME, KDE, Java, Haskell, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "But some people hate it:" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "" "Sometimes difficult to customize package builds:\\\\ \"\\textsl{twisty maze " "of makefiles and environment variables}\"" msgstr "" #. type: itemize #: packaging-tutorial.tex:601 msgid "Slower than plain debhelper (many useless calls to \\texttt{dh\\_*})" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:601 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize,escapeinside=\\{\\}]\n" "#!/usr/bin/make -f\n" "include /usr/share/cdbs/1/rules/debhelper.mk\n" "include /usr/share/cdbs/1/class/autotools.mk\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:605 #, no-wrap msgid "" "# add an action after the build\n" "build/mypackage::\n" " /bin/bash debian/scripts/foo.sh\n" " " msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:626 msgid "Dh (aka Debhelper 7, or dh7)" msgstr "" #. type: itemize #: packaging-tutorial.tex:626 msgid "Introduced in 2008 as a \\textsl{CDBS killer}" msgstr "" #. type: itemize #: packaging-tutorial.tex:626 msgid "\\textbf{dh} command that calls \\texttt{dh\\_*}" msgstr "" #. type: itemize #: packaging-tutorial.tex:626 msgid "Simple \\textsl{debian/rules}, listing only overrides" msgstr "" #. type: itemize #: packaging-tutorial.tex:626 msgid "Easier to customize than CDBS" msgstr "" #. type: itemize #: packaging-tutorial.tex:626 msgid "" "Doc: manpages (\\texttt{debhelper(7)}, \\texttt{dh(1)}) + slides from " "DebConf9 talk\\\\ " "\\url{http://kitenet.net/~joey/talks/debhelper/debhelper-slides.pdf}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:626 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "#!/usr/bin/make -f\n" "%:\n" " dh $@\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:629 #, no-wrap msgid "" "override_dh_auto_configure:\n" " dh_auto_configure -- --with-kitchen-sink\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:632 #, no-wrap msgid "" "override_dh_auto_build:\n" " make world\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:633 #, no-wrap msgid " " msgstr "" #. source for stats: https://anonscm.debian.org/cgit/collab-qa/dhistory.git/ #. type: frame{#2} #: packaging-tutorial.tex:656 msgid "Classic debhelper vs CDBS vs dh" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "" "Mind shares:\\\\ Classic debhelper: 15\\% \\hskip 1em CDBS: 15\\% \\hskip " "1em dh: 68\\%" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "Which one should I learn?" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "Probably a bit of all of them" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "You need to know debhelper to use dh and CDBS" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "You might have to modify CDBS packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "Which one should I use for a new package?" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "\\textbf{dh} (only solution with an increasing mind share)" msgstr "" #. type: itemize #: packaging-tutorial.tex:656 msgid "See \\url{https://trends.debian.net/\\#build-systems}" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:669 msgid "Building and testing packages" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:669 msgid "Building packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:669 msgid "" "\\textttc{apt-get build-dep mypackage}\\\\ Installs the " "\\textsl{build-dependencies} (for a package already in Debian)\\\\ Or " "\\textttc{mk-build-deps -ir} (for a package not uploaded yet)" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "\\textttc{debuild}: build, test with \\texttt{lintian}, sign with GPG" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "Also possible to call \\textttc{dpkg-buildpackage} directly" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "Usually with \\texttt{dpkg-buildpackage -us -uc}" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "It is better to build packages in a clean \\& minimal environment" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "\\textttc{pbuilder} -- helper to build packages in a \\textsl{chroot}\\\\ " "Good documentation: \\url{https://wiki.ubuntu.com/PbuilderHowto}\\\\ " "(optimization: \\textttc{cowbuilder} \\textttc{ccache} \\textttc{distcc})" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "\\textttc{schroot} and \\textttc{sbuild}: used on the Debian build " "daemons\\\\ (not as simple as \\texttt{pbuilder}, but allows LVM " "snapshots\\\\ see: \\url{https://help.ubuntu.com/community/SbuildLVMHowto} )" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "Generates \\texttt{.deb} files and a \\texttt{.changes} file" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "\\texttt{.changes}: describes what was built; used to upload the package" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:725 msgid "Installing and testing packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "Install the package locally: \\textttc{debi} (will use \\texttt{.changes} to " "know what to install)" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "List the content of the package: \\texttt{{\\color{rouge}debc} " "../mypackage<TAB>.changes}" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "Compare the package with a previous version:\\\\ " "\\texttt{{\\color{rouge}debdiff} ../mypackage\\_1\\_*.changes " "../mypackage\\_2\\_*.changes}\\\\ or to compare the sources:\\\\ " "\\texttt{{\\color{rouge}debdiff} ../mypackage\\_1\\_*.dsc " "../mypackage\\_2\\_*.dsc}\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "Check the package with \\texttt{lintian} (static analyzer):\\\\ " "\\texttt{{\\color{rouge}lintian} ../mypackage<TAB>.changes}\\\\ " "\\texttt{lintian -i}: gives more information about the errors \\\\ " "\\texttt{lintian -EviIL +pedantic}: shows more problems" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "Upload the package to Debian (\\textttc{dput}) (needs configuration)" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "Manage a private Debian archive with \\textttc{reprepro} or " "\\textttc{aptly}\\\\ Documentation: " "\\url{https://wiki.debian.org/HowToSetupADebianRepository}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:725 packaging-tutorial.tex:1608 packaging-tutorial.tex:1613 msgid "Practical session 1: modifying the grep package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:725 packaging-tutorial.tex:1613 packaging-tutorial.tex:1660 msgid "" "Go to \\url{http://ftp.debian.org/debian/pool/main/g/grep/} and download " "version 2.12-2 of the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:725 msgid "" "If the source package is not unpacked automatically, unpack it with " "\\texttt{dpkg-source~-x~grep\\_*.dsc}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 msgid "Look at the files in \\texttt{debian/}." msgstr "" #. type: itemize #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1679 msgid "How many binary packages are generated by this source package?" msgstr "" #. type: itemize #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1679 msgid "Which packaging helper does this package use?" msgstr "" #. type: itemize #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1688 packaging-tutorial.tex:2027 msgid "Build the package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1709 msgid "" "We are now going to modify the package. Add a changelog entry and increase " "the version number." msgstr "" #. type: enumerate #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1729 msgid "Now disable perl-regexp support (it is a \\texttt{./configure} option)" msgstr "" #. type: enumerate #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1729 msgid "Rebuild the package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1754 msgid "Compare the original and the new package with debdiff" msgstr "" #. type: enumerate #: packaging-tutorial.tex:745 packaging-tutorial.tex:1633 packaging-tutorial.tex:1754 msgid "Install the newly built package" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:761 msgid "Advanced packaging topics" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:761 msgid "debian/copyright" msgstr "" #. type: itemize #: packaging-tutorial.tex:761 msgid "Copyright and license information for the source and the packaging" msgstr "" #. type: itemize #: packaging-tutorial.tex:761 msgid "Traditionally written as a text file" msgstr "" #. type: itemize #: packaging-tutorial.tex:761 msgid "" "New machine-readable format: " "{\\small\\url{https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/}}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:761 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\scriptsize]\n" "Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\n" "Upstream-Name: X Solitaire\n" "Source: ftp://ftp.example.com/pub/games\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:771 #, no-wrap msgid "" "Files: *\n" "Copyright: Copyright 1998 John Doe <j...@example.com>\n" "License: GPL-2+\n" " This program is free software; you can redistribute it\n" " [...]\n" " .\n" " On Debian systems, the full text of the GNU General Public\n" " License version 2 can be found in the file\n" " `/usr/share/common-licenses/GPL-2'.\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:776 #, no-wrap msgid "" "Files: debian/*\n" "Copyright: Copyright 1998 Jane Smith <jsm...@example.net>\n" "License:\n" " [LICENSE TEXT]" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:807 msgid "Modifying the upstream source" msgstr "" #. type: frame #: packaging-tutorial.tex:807 msgid "Often needed:" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Fix bugs or add customizations that are specific to Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Backport fixes from a newer upstream release" msgstr "" #. type: frame #: packaging-tutorial.tex:807 msgid "Several methods to do it:" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Modifying the files directly" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Simple" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "But no way to track and document the changes" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Using patch systems" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Eases contributing your changes to upstream" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "Helps sharing the fixes with derivatives" msgstr "" #. type: itemize #: packaging-tutorial.tex:807 msgid "" "Gives more exposure to the changes\\\\ " "\\url{http://patch-tracker.debian.org/} (down currently)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:837 msgid "Patch systems" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "Principle: changes are stored as patches in \\texttt{debian/patches/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "Applied and unapplied during build" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "" "Past: several implementations -- \\textsl{simple-patchsys} (\\textsl{cdbs}), " "\\textsl{dpatch}, \\textbf{\\textsl{quilt}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "Each supports two \\texttt{debian/rules} targets:" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "\\texttt{debian/rules patch}: apply all patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "\\texttt{debian/rules unpatch}: de-apply all patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "More documentation: \\url{https://wiki.debian.org/debian/patches}" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:837 msgid "New source package format with built-in patch system: 3.0 (quilt)" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "Recommended solution" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "" "You need to learn \\textsl{quilt}\\\\ " "\\url{https://perl-team.pages.debian.net/howto/quilt.html}" msgstr "" #. type: itemize #: packaging-tutorial.tex:837 msgid "Patch-system-agnostic tool in \\texttt{devscripts}: \\texttt{edit-patch}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:854 msgid "Documentation of patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:854 msgid "Standard headers at the beginning of the patch" msgstr "" #. type: itemize #: packaging-tutorial.tex:854 msgid "" "Documented in DEP-3 - Patch Tagging Guidelines\\\\ " "\\url{http://dep.debian.net/deps/dep3/}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:854 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "Description: Fix widget frobnication speeds\n" " Frobnicating widgets too quickly tended to cause explosions.\n" "Forwarded: http://lists.example.com/2010/03/1234.html\n" "Author: John Doe <johndoe-gu...@users.alioth.debian.org>\n" "Applied-Upstream: 1.2, http://bzr.foo.com/frobnicator/revision/123\n" "Last-Update: 2010-03-29\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:858 #, no-wrap msgid "" "--- a/src/widgets.c\n" "+++ b/src/widgets.c\n" "@@ -101,9 +101,6 @@ struct {" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:878 msgid "Doing things during installation and removal" msgstr "" #. type: itemize #: packaging-tutorial.tex:878 msgid "Decompressing the package is sometimes not enough" msgstr "" #. type: itemize #: packaging-tutorial.tex:878 msgid "" "Create/remove system users, start/stop services, manage " "\\textsl{alternatives}" msgstr "" #. type: itemize #: packaging-tutorial.tex:878 msgid "" "Done in \\textsl{maintainer scripts}\\\\ \\texttt{preinst, postinst, prerm, " "postrm}" msgstr "" #. type: itemize #: packaging-tutorial.tex:878 msgid "Snippets for common actions can be generated by debhelper" msgstr "" #. type: itemize #: packaging-tutorial.tex:878 msgid "Documentation:" msgstr "" #. type: itemize #: packaging-tutorial.tex:878 msgid "" "Debian Policy Manual, chapter 6\\\\ {\\footnotesize " "\\url{https://www.debian.org/doc/debian-policy/ch-maintainerscripts}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:894 msgid "" "Debian Developer's Reference, chapter 6.4\\\\ {\\scriptsize " "\\url{https://www.debian.org/doc/developers-reference/best-pkging-practices.html}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:894 msgid "" "{\\footnotesize " "\\url{https://people.debian.org/~srivasta/MaintainerScripts.html}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:894 msgid "Prompting the user" msgstr "" #. type: itemize #: packaging-tutorial.tex:894 msgid "Must be done with \\textbf{debconf}" msgstr "" #. type: itemize #: packaging-tutorial.tex:894 msgid "Documentation: \\texttt{debconf-devel(7)} (\\texttt{debconf-doc} package)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:900 msgid "Monitoring upstream versions" msgstr "" #. type: itemize #: packaging-tutorial.tex:900 msgid "Specify where to look in \\texttt{debian/watch} (see \\texttt{uscan(1)})" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:900 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "version=3\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:903 #, no-wrap msgid "" "http://tmrc.mit.edu/mirror/twisted/Twisted/(\\d\\.\\d)/ \\\n" " Twisted-([\\d\\.]*)\\.tar\\.bz2\n" " " msgstr "" #. type: itemize #: packaging-tutorial.tex:912 msgid "" "There are automated trackers of new upstream versions, that notify the " "maintainer on various dashboards including " "\\url{https://tracker.debian.org/} and \\url{https://udd.debian.org/dmd/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:912 msgid "\\texttt{uscan}: run a manual check" msgstr "" #. type: itemize #: packaging-tutorial.tex:912 msgid "\\texttt{uupdate}: try to update your package to the latest upstream version" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:950 msgid "Packaging with a Version Control System (SVN, Git)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:950 msgid "Packaging with a Version Control System" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "" "Several tools to help manage branches and tags for your packaging work:\\\\ " "\\texttt{svn-buildpackage}, \\texttt{git-buildpackage}" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "Example: \\texttt{git-buildpackage}" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "" "\\texttt{upstream} branch to track upstream with " "\\texttt{upstream/\\textsl{version}} tags" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "\\texttt{master} branch tracks the Debian package" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "\\texttt{debian/\\textsl{version}} tags for each upload" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "\\texttt{pristine-tar} branch to be able to rebuild the upstream tarball" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "" "Doc: " "\\url{http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html}" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "\\texttt{Vcs-*} fields in \\texttt{debian/control} to locate the repository" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "\\url{https://wiki.debian.org/Salsa}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:950 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\scriptsize]\n" "Vcs-Browser: https://salsa.debian.org/debian/devscripts\n" "Vcs-Git: https://salsa.debian.org/debian/devscripts.git\n" " " msgstr "" #. type: lstlisting #: packaging-tutorial.tex:950 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\scriptsize]\n" "Vcs-Browser: " "https://salsa.debian.org/perl-team/modules/packages/libwww-perl\n" "Vcs-Git: " "https://salsa.debian.org/perl-team/modules/packages/libwww-perl.git\n" " " msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "" "VCS-agnostic interface: \\texttt{debcheckout}, \\texttt{debcommit}, " "\\texttt{debrelease}\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:950 msgid "" "\\texttt{debcheckout grep} $\\rightarrow$ checks out the source package from " "Git" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:973 msgid "Backporting packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "" "Goal: use a newer version of a package on an older system\\\\ e.g. use " "\\textsl{mutt} from Debian \\textsl{unstable} on Debian \\textsl{stable}" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "General idea:" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "Take the source package from Debian unstable" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "Modify it so that it builds and works fine on Debian stable" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "Sometimes trivial (no changes needed)" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "Sometimes difficult" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "Sometimes impossible (many unavailable dependencies)" msgstr "" #. type: itemize #: packaging-tutorial.tex:973 msgid "" "Some backports are provided and supported by the Debian project\\\\ " "\\url{http://backports.debian.org/}" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:1063 msgid "Maintaining packages in Debian" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1063 msgid "Debian archive and suites" msgstr "" #. type: tikzpicture #: packaging-tutorial.tex:1063 msgid "" "\\draw node[suite,prod] (sec) {security}; \\draw node[suite,prod,right=of " "sec] (su) {stable-updates}; \\draw node[suite,prod,right=of su] (st) " "{stable}; \\draw node[suite,old,node distance=0.3cm,below=of st] (os) " "{oldstable}; \\draw node[suite,veryold,node distance=0.3cm,below=of os] (ar) " "{archive.d.o}; \\draw node[suite,prod,right=of st] (bp) {backports}; \\draw " "node[suite,test] (spu) at ($(su) + (-0.6,2.5)$) {stable-proposed-updates}; " "\\draw node[suite,internal] (sn) at ($(st) + (-1.8,1.4)$) {stable-new}; " "\\draw node[suite,test,node distance=1.5cm,above=of st] (te) {testing}; " "\\draw node[suite,devel,above=of te] (sid) {unstable}; \\draw " "node[suite,devel] (exp) at ($(sid) + (2.5,0.5)$) {experimental}; \\draw " "node[suite,devel] (tpu) at ($(te)!0.5!(sid) + (2.5,0)$) " "{testing-proposed-updates}; \\draw node[people,above=of sid] (dd) " "{developer}; \\draw node[people,node distance=3cm,left=of dd] (secteam) " "{security team}; \\draw[arr,uploads,->] (dd) -- (sid); " "\\draw[arr,uploads,->] (dd) -- (exp); \\draw[arr,uploads,->,bend right=8] " "(dd) to (tpu); \\draw[arr,uploads,->] (secteam) -- (sid); " "\\draw[arr,uploads,->] (secteam) -- (sec); \\draw[arr,uploads,->] (dd) to " "(spu); \\draw[arr,uploads,->] plot [smooth, tension=0.75] coordinates { " "(dd.east) ($(exp.north east)+(0.1,0.1)$) ($(tpu.east)+(0.2,0)$) ($(bp.north " "east) + (-0.4,0)$) }; \\draw[arr,migrations,->] (tpu) -- (te); " "\\draw[arr,migrations,->] (sid) -- (te); \\draw[arr,migrations,->] (te) -- " "(st) node [midway,align=left,midway,right,font=\\footnotesize] {stable\\\\ " "release}; \\draw[arr,migrations,->] (sec) -- (sn); \\draw[arr,migrations,->] " "(sn) to node [pos=0.2] (spulabel) {} (st); \\draw " "node[font=\\footnotesize,align=right] at ($(spulabel) + (-0.4,-0.45)$) " "{stable \\\\ point \\\\ release}; \\draw[arr,migrations,->] (spu) to (sn); " "\\draw[arr,migrations,->] (spu) -- (su); \\draw[arr,migrations,->] (st) -- " "(os); \\draw[arr,migrations,->] (os) -- (ar); \\coordinate (legend) at " "(-2,-1); \\draw[arr,uploads,->] (legend) -- ($(legend) + (0.7,0)$) node " "[right,legend] {package uploads}; \\coordinate[node distance=1.1em,below=of " "legend] (legend2); \\draw[arr,migrations,->] (legend2) -- ($(legend2) + " "(0.7,0)$) node [right,legend] {package migrations between suites}; " "\\coordinate[node distance=1.5em,below=of legend2] (legend3); \\draw " "node[right,suite,devel,legend] (ldev) at (legend3) {development}; \\draw " "node[node distance=0.1cm,right=of ldev,suite,test,legend] (ltest) {test}; " "\\draw node[node distance=0.1cm,right=of ltest,suite,internal,legend] (lint) " "{internal}; \\draw node[node distance=0.1cm,right=of lint,suite,prod,legend] " "(lprod) {production}; \\draw ($(legend.north west) + (-0.1,0.25)$) rectangle " "($(lprod.south east) + (0.1,-0.1)$); \\draw " "node[font=\\bf,red!70!white,align=center] (tnext) at ($(te.east) + " "(2,-0.1)$) {preparation of \\\\ next release}; \\draw " "node[font=\\bf,green!70!black,align=center] (tsrm) at ($(sec.north east) + " "(1,1)$) {stable\\\\release\\\\management}; \\pgfdeclarelayer{background} " "\\pgfdeclarelayer{foreground} \\pgfsetlayers{background,main,foreground}" msgstr "" #. type: pgfonlayer{#2} #: packaging-tutorial.tex:1063 msgid "background" msgstr "" #. type: pgfonlayer #: packaging-tutorial.tex:1063 msgid "" "\\fill[red!10!white] plot [smooth cycle,tension=0.55] coordinates { " "($(sid.north west) + (-0.1,0.1)$) ($(exp.north east)+(0.1,0.1)$) " "($(tpu.south east)+(0.1,-0.1)$) ($(tnext.south) + (0.6,0)$) ($(te.south " "west) + (0.1,-0.1)$) }; \\fill[green!10!white] plot [smooth " "cycle,tension=0.55] coordinates { ($(spu.north west) + (-0.1,0.1)$) " "($(spu.north east)+(0.1,0.1)$) ($(sn.north east)+(0.1,0.1)$) ($(st.north " "east) + (0.1,0.5)$) ($(bp.north east) + (0.1,0.1)$) ($(bp.south east) + " "(0.1,-0.1)$) ($(sec.south west) + (-0.1,-0.1)$) };" msgstr "" #. type: flushright #: packaging-tutorial.tex:1063 msgid "" "\\tiny Based on graph by Antoine " "Beaupr\\'e. \\url{https://salsa.debian.org/debian/package-cycle}~~~~~~~~~~~~" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1078 msgid "Suites for development" msgstr "" #. type: itemize #: packaging-tutorial.tex:1078 msgid "New versions of packages are uploaded to \\textbf{unstable} (\\textbf{sid})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1078 msgid "" "Packages migrate from \\textbf{unstable} to \\textbf{testing} based on " "several criterias (e.g. has been in unstable for 10 days, and no " "regressions)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1078 msgid "New packages can also be uploaded to:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1078 msgid "" "\\textbf{experimental} (for more \\textsl{experimental} packages, such as " "when the new version is not ready to replace the one currently in unstable)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1078 msgid "" "\\textbf{testing-proposed-updates}, to update the version in " "\\textbf{testing} without going through \\textbf{unstable} (this is rarely " "used)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1095 msgid "Freezing and releasing" msgstr "" #. type: itemize #: packaging-tutorial.tex:1095 msgid "" "At some point during the release cycle, the release team decides to " "\\textsl{freeze} testing: automatic migrations from \\textbf{unstable} to " "\\textbf{testing} are stopped, and replaced by manual review" msgstr "" #. type: itemize #: packaging-tutorial.tex:1095 msgid "When the release team considers \\textbf{testing} to be ready for release:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1095 msgid "The \\textbf{testing} suite becomes the new \\textbf{stable} suite" msgstr "" #. type: itemize #: packaging-tutorial.tex:1095 msgid "Similarly, the old \\textbf{stable} becomes \\textbf{oldstable}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1095 msgid "Unsupported releases are moved to \\texttt{archive.debian.org}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1095 msgid "See \\url{https://release.debian.org/}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1119 msgid "Stable release suites and management" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "Several suites are used to provide stable release packages:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "\\textbf{stable}: the main suite" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "" "\\textbf{security} updates suite provided on \\texttt{security.debian.org}, " "used by the security team. Updates are announced on the " "\\texttt{debian-security-announce} mailing list" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "" "\\textbf{stable-updates}: updates that are not security related, but that " "should urgently be installed (without waiting for the next point release): " "antivirus databases, timezone-related packages, etc. Announced on the " "\\texttt{debian-stable-announce} mailing list" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "" "\\textbf{backports}: new upstream versions, based on the version in " "\\textbf{testing}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "" "The \\textbf{stable} suite is updated every few months by \\textsl{stable " "point releases} (that include only bug fixes)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "" "Packages targetting the next stable point release are uploaded to " "\\textbf{stable-proposed-updates} and reviewed by the release team" msgstr "" #. type: itemize #: packaging-tutorial.tex:1119 msgid "The \\textbf{oldstable} release has the same set of suites" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1147 msgid "Several ways to contribute to Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "\\textbf{Worst} way to contribute:" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1147 msgid "Package your own application" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1147 msgid "Get it into Debian" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1147 msgid "Disappear" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "\\textbf{Better} ways to contribute:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "Get involved in packaging teams" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "Many teams that focus on set of packages, and need help" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "List available at \\url{https://wiki.debian.org/Teams}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "An excellent way to learn from more experienced contributors" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "Adopt existing unmaintained packages (\\textsl{orphaned packages})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "Bring new software to Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "Only if it's interesting/useful enough, please" msgstr "" #. type: itemize #: packaging-tutorial.tex:1147 msgid "Are there alternatives already packaged in Debian?" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1186 msgid "Adopting orphaned packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "Many unmaintained packages in Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "Full list + process: \\url{https://www.debian.org/devel/wnpp/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "" "Installed on your machine: \\texttt{wnpp-alert}\\\\ Or better: " "\\texttt{how-can-i-help}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "Different states:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "\\textbf{O}rphaned: the package is unmaintained\\\\ Feel free to adopt it" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "" "\\textbf{RFA}: \\textbf{R}equest \\textbf{F}or \\textbf{A}dopter\\\\ " "Maintainer looking for adopter, but continues work in the meantime\\\\ Feel " "free to adopt it. A mail to the current maintainer is polite" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "" "\\textbf{ITA}: \\textbf{I}ntent \\textbf{T}o \\textbf{A}dopt\\\\ Someone " "intends to adopt the package\\\\ You could propose your help!" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "" "\\textbf{RFH}: \\textbf{R}equest \\textbf{F}or \\textbf{H}elp\\\\ The " "maintainer is looking for help" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "Some unmaintained packages not detected \\arr not orphaned yet" msgstr "" #. type: itemize #: packaging-tutorial.tex:1186 msgid "" "When in doubt, ask \\texttt{debian...@lists.debian.org} \\\\ or " "\\texttt{\\#debian-qa} on \\texttt{irc.debian.org}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1193 msgid "Adopting a package: example" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1193 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "From: You <you@yourdomain>\n" "To: 640...@bugs.debian.org, cont...@bugs.debian.org\n" "Cc: Francois Marier <franc...@debian.org>\n" "Subject: ITA: verbiste -- French conjugator\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1197 #, no-wrap msgid "" "retitle 640454 ITA: verbiste -- French conjugator\n" "owner 640454 !\n" "thanks\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1199 #, no-wrap msgid "" "Hi,\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1201 #, no-wrap msgid "" "I am using verbiste and I am willing to take care of the package.\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1203 #, no-wrap msgid "" "Cheers,\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1205 #, no-wrap msgid "You" msgstr "" #. type: itemize #: packaging-tutorial.tex:1212 msgid "" "Polite to contact the previous maintainer (especially if the package was " "RFAed, not orphaned)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1212 msgid "Very good idea to contact the upstream project" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1236 msgid "Getting your package in Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1236 msgid "You do not need any official status to get your package into Debian" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1236 msgid "" "Submit an \\textbf{ITP} bug (\\textbf{I}ntent \\textbf{T}o " "\\textbf{P}ackage) using \\texttt{reportbug wnpp}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1236 msgid "Prepare a source package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1236 msgid "Find a Debian Developer that will sponsor your package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1236 msgid "Official status (when you are an experienced package maintainer):" msgstr "" #. type: itemize #: packaging-tutorial.tex:1236 msgid "" "\\textbf{Debian Maintainer (DM):}\\\\ Permission to upload your own " "packages\\\\ See \\url{https://wiki.debian.org/DebianMaintainer}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1236 msgid "" "\\textbf{Debian Developer (DD):}\\\\ Debian project member; can vote and " "upload any package" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1264 msgid "Things to check before asking for sponsorship" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Debian puts \\textbf{a lot of focus on quality}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Generally, \\textbf{sponsors are hard to find and busy}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Make sure your package is ready before asking for sponsorship" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Things to check:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "" "Avoid missing build-dependencies: make sure that your package build fine in " "a clean \\textsl{sid} \\textsl{chroot}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Using \\texttt{pbuilder} is recommended" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Run \\texttt{lintian -EviIL +pedantic} on your package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Errors must be fixed, all other problems should be fixed" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "Do extensive testing of your package, of course" msgstr "" #. type: itemize #: packaging-tutorial.tex:1264 msgid "In doubt, ask for help" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1299 msgid "Where to find help?" msgstr "" #. type: frame #: packaging-tutorial.tex:1299 msgid "Help you will need:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "Advice and answers to your questions, code reviews" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "Sponsorship for your uploads, once your package is ready" msgstr "" #. type: frame #: packaging-tutorial.tex:1299 msgid "You can get help from:" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:1299 msgid "Other members of a packaging team" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "List of teams: \\url{https://wiki.debian.org/Teams}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "The \\textbf{Debian Mentors group} (if your package does not fit in a team)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "\\url{https://wiki.debian.org/DebianMentorsFaq}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "" "Mailing list: \\url{debian-ment...@lists.debian.org}\\\\ {\\small (also a " "good way to learn by accident)}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "IRC: \\texttt{\\#debian-mentors} on \\texttt{irc.debian.org}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "\\url{http://mentors.debian.net/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "Documentation: \\url{http://mentors.debian.net/intro-maintainers}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "\\textbf{Localized mailing lists} (get help in your language)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "\\texttt{debian-devel-\\{french,italian,portuguese,spanish\\}@lists.d.o}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "Full list: \\url{https://lists.debian.org/devel.html}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1299 msgid "Or users lists: \\url{https://lists.debian.org/users.html}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1316 msgid "More documentation" msgstr "" #. type: itemize #: packaging-tutorial.tex:1316 msgid "" "Debian Developers' Corner\\\\ \\url{https://www.debian.org/devel/}\\\\ " "{\\small Links to many resources about Debian development}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1316 msgid "" "Guide for Debian Maintainers\\\\ " "\\url{https://www.debian.org/doc/manuals/debmake-doc/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1316 msgid "" "Debian Developer's Reference\\\\ " "\\url{https://www.debian.org/doc/developers-reference/}\\\\ {\\small Mostly " "about Debian procedures, but also some best packaging practices (part 6)}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1316 msgid "Debian Policy\\\\ \\url{https://www.debian.org/doc/debian-policy/}\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1322 msgid "" "{\\small \\begin{itemize} \\item \\small All the requirements that every " "package must satisfy \\item \\small Specific policies for Perl, Java, " "Python, \\ldots \\end{itemize}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1327 msgid "" "Ubuntu Packaging Guide\\\\ " "\\url{http://developer.ubuntu.com/resources/tools/packaging/}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1341 msgid "Debian dashboards for maintainers" msgstr "" #. type: itemize #: packaging-tutorial.tex:1341 msgid "\\textbf{Source package centric}:\\\\ \\url{https://tracker.debian.org/dpkg}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1341 msgid "" "\\textbf{Maintainer/team centric}: Developer's Packages Overview (DDPO)\\\\ " "\\url{https://qa.debian.org/developer.php?login=pkg-ruby-extras-maintain...@lists.alioth.debian.org}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1341 msgid "" "\\textbf{TODO-list oriented}: Debian Maintainer Dashboard (DMD)\\\\ " "\\url{https://udd.debian.org/dmd/}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1369 msgid "Using the Debian Bug Tracking System (BTS)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "A quite unique way to manage bugs" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Web interface to view bugs" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Email interface to make changes to bugs" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Adding information to bugs:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "" "Write to \\texttt{123...@bugs.debian.org} (does not include the submitter, " "you need to add \\texttt{123456-submit...@bugs.debian.org})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Changing bug status:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Send commands to \\texttt{cont...@bugs.debian.org}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Command-line interface: \\texttt{bts} command in \\texttt{devscripts}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Documentation: \\url{https://www.debian.org/Bugs/server-control}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "Reporting bugs: use \\texttt{reportbug}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "" "Normally used with a local mail server: install \\texttt{ssmtp} or " "\\texttt{nullmailer}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1369 msgid "" "Or use \\texttt{reportbug -\\@-template}, then send (manually) to " "\\texttt{sub...@bugs.debian.org}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1395 msgid "Using the BTS: examples" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "" "Sending an email to the bug and the submitter:\\\\ " "\\url{https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680822\\#10}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "" "Tagging and changing the severity:\\\\ " "\\url{https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680227\\#10}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "" "Reassigning, changing the severity, retitling \\ldots: \\\\ " "\\url{https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680822\\#93}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "" "\\texttt{notfound}, \\texttt{found}, \\texttt{notfixed}, \\texttt{fixed} are " "for \\textbf{version-tracking} \\\\ See " "\\url{https://wiki.debian.org/HowtoUseBTS\\#Version\\_tracking}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "" "Using usertags: " "\\url{https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=42;bug=642267}\\\\ " "See \\url{https://wiki.debian.org/bugs.debian.org/usertags}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "BTS Documentation:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "\\url{https://www.debian.org/Bugs/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1395 msgid "\\url{https://wiki.debian.org/HowtoUseBTS}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1422 msgid "More interested in Ubuntu?" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Ubuntu mainly manages the divergence with Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "" "No real focus on specific packages\\\\ Instead, collaboration with Debian " "teams" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "" "Usually recommend uploading new packages to Debian first\\\\ " "\\url{https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Possibly a better plan:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Get involved in a Debian team and act as a bridge with Ubuntu" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Help reduce divergence, triage bugs in Launchpad" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Many Debian tools can help:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Ubuntu column on the Developer's packages overview" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Ubuntu box on the Package Tracking System" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Receive launchpad bugmail via the PTS" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1439 msgid "Conclusions" msgstr "" #. type: itemize #: packaging-tutorial.tex:1439 msgid "You now have a full overview of Debian packaging" msgstr "" #. type: itemize #: packaging-tutorial.tex:1439 msgid "But you will need to read more documentation" msgstr "" #. type: itemize #: packaging-tutorial.tex:1439 msgid "Best practices have evolved over the years" msgstr "" #. type: itemize #: packaging-tutorial.tex:1439 msgid "" "If not sure, use the \\textbf{dh} packaging helper, and the \\textbf{3.0 " "(quilt)} format" msgstr "" #. type: centerline{#1} #: packaging-tutorial.tex:1439 msgid "\\large Feedback: \\textbf{packaging-tutor...@packages.debian.org}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1442 msgid "Legal stuff" msgstr "" #. type: frame #: packaging-tutorial.tex:1445 msgid "Copyright \\copyright 2011--2019 Lucas Nussbaum -- lu...@debian.org" msgstr "" #. type: frame #: packaging-tutorial.tex:1461 msgid "" "{\\small \\textbf{This document is free software}: you can redistribute it " "and/or modify it under either (at your option): \\hbr \\begin{itemize} " "\\item The terms of the GNU General Public License as published by the Free " "Software Foundation, either version 3 of the License, or (at your option) " "any later version.\\\\ \\url{http://www.gnu.org/licenses/gpl.html} \\br " "\\item The terms of the Creative Commons Attribution-ShareAlike 3.0 Unported " "License.\\\\ \\url{http://creativecommons.org/licenses/by-sa/3.0/} " "\\end{itemize} }" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1490 msgid "Contribute to this tutorial" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "Contribute:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small \\texttt{apt-get source packaging-tutorial}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small \\texttt{debcheckout packaging-tutorial}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "" "{\\small \\texttt{git clone\\\\ " "https://salsa.debian.org/debian/packaging-tutorial.git}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small \\url{https://salsa.debian.org/debian/packaging-tutorial}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small Open bugs: \\url{bugs.debian.org/src:packaging-tutorial}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "Provide feedback:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "\\href{mailto:packaging-tutor...@packages.debian.org}{\\textbf{\\texttt{mailto:packaging-tutor...@packages.debian.org}}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small What should be added to this tutorial?}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small What should be improved?}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1490 msgid "{\\small \\texttt{reportbug packaging-tutorial}}" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:1492 msgid "Additional practical sessions" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "Practical session 2: packaging GNUjump" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "" "Download GNUjump 1.0.8 from " "\\url{http://ftp.gnu.org/gnu/gnujump/gnujump-1.0.8.tar.gz}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "Create a Debian package for it" msgstr "" #. type: itemize #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "Install build-dependencies so that you can build the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1511 msgid "Fix bugs" msgstr "" #. type: itemize #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "Get a basic working package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "Finish filling \\texttt{debian/control} and other files" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1511 packaging-tutorial.tex:1772 msgid "Enjoy" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1537 msgid "Practical session 2: packaging GNUjump (tips)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 msgid "To get a basic working package, use \\texttt{dh\\_make}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 msgid "" "To start with, creating a \\textsl{1.0} source package is easier than " "\\textsl{3.0 (quilt)} (change that in \\texttt{debian/source/format})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 msgid "" "To search for missing build-dependencies, find a missing file, and use " "\\texttt{apt-file} to find the missing package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 msgid "If you encounter that error:" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1537 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\tiny]\n" "/usr/bin/ld: SDL_rotozoom.o: undefined reference to symbol " "'ceil@@GLIBC_2.2.5'\n" "//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from " "command line\n" "collect2: error: ld returned 1 exit status\n" "Makefile:376: recipe for target 'gnujump' failed" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 msgid "" "You need to add \\texttt{-lm} to the linker command line:\\\\ Edit " "\\texttt{src/Makefile.am} and replace" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1537 packaging-tutorial.tex:1858 packaging-tutorial.tex:1887 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "gnujump_LDFLAGS = $(all_libraries)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 packaging-tutorial.tex:1858 packaging-tutorial.tex:1887 msgid "by" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1537 packaging-tutorial.tex:1858 packaging-tutorial.tex:1887 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "gnujump_LDFLAGS = -Wl,--as-needed\n" "gnujump_LDADD = $(all_libraries) -lm" msgstr "" #. type: itemize #: packaging-tutorial.tex:1537 packaging-tutorial.tex:1858 msgid "Then run \\texttt{autoreconf -i}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "Practical session 3: packaging a Java library" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "Take a quick look at some documentation about Java packaging:\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "\\url{https://wiki.debian.org/Java}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "\\url{https://wiki.debian.org/Java/Packaging}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "\\url{https://www.debian.org/doc/packaging-manuals/java-policy/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "\\texttt{/usr/share/doc/javahelper/tutorial.txt.gz}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "Download IRClib from \\url{http://moepii.sourceforge.net/}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1557 packaging-tutorial.tex:1947 msgid "Package it" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "Practical session 4: packaging a Ruby gem" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "Take a quick look at some documentation about Ruby packaging:\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "\\url{https://wiki.debian.org/Ruby}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "\\url{https://wiki.debian.org/Teams/Ruby}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "\\url{https://wiki.debian.org/Teams/Ruby/Packaging}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "" "\\texttt{gem2deb(1)}, \\texttt{dh\\_ruby(1)} (in the \\texttt{gem2deb} " "package)" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1989 msgid "" "Create a basic Debian source package from the \\texttt{peach} gem:\\\\ " "\\texttt{gem2deb peach}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1578 packaging-tutorial.tex:1597 packaging-tutorial.tex:1989 packaging-tutorial.tex:2046 msgid "Improve it so that it becomes a proper Debian package" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1597 packaging-tutorial.tex:2046 msgid "Practical session 5: packaging a Perl module" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1597 packaging-tutorial.tex:2046 msgid "Take a quick look at some documentation about Perl packaging:\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1597 packaging-tutorial.tex:2046 msgid "\\url{https://perl-team.pages.debian.net}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1597 packaging-tutorial.tex:2046 msgid "\\url{https://wiki.debian.org/Teams/DebianPerlGroup}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1597 packaging-tutorial.tex:2046 msgid "" "\\texttt{dh-make-perl(1)}, \\texttt{dpt(1)} (in the \\texttt{pkg-perl-tools} " "package)" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1597 packaging-tutorial.tex:2046 msgid "" "Create a basic Debian source package from the \\texttt{Acme} CPAN " "distribution:\\\\ \\verb|dh-make-perl --cpan Acme|" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:1599 msgid "Answers to practical sessions" msgstr "" #. type: center #: packaging-tutorial.tex:1605 msgid "\\LARGE Answers to" msgstr "" #. type: center #: packaging-tutorial.tex:1605 msgid "[0.5em] practical sessions" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1660 msgid "Fetching the source" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "" "Use dget to download the \\texttt{.dsc} file:\\\\ {\\small \\texttt{dget " "http://cdn.debian.net/debian/pool/main/g/grep/grep\\_2.12-2.dsc}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "" "If you have \\texttt{deb-src} for a Debian release that has \\texttt{grep} " "version 2.12-2 (find out on \\url{https://tracker.debian.org/grep}), you can " "use: \\texttt{apt-get source grep=2.12-2}\\\\ or \\texttt{apt-get source " "grep/release} (e.g. \\texttt{grep/stable})\\\\ or, if you feel lucky: " "\\texttt{apt-get source grep}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "The \\texttt{grep} source package is composed of three files:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "\\texttt{grep\\_2.12-2.dsc}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "\\texttt{grep\\_2.12-2.debian.tar.bz2}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "\\texttt{grep\\_2.12.orig.tar.bz2}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "This is typical of the \"3.0 (quilt)\" format." msgstr "" #. type: itemize #: packaging-tutorial.tex:1660 msgid "" "If needed, uncompress the source with\\\\ \\texttt{dpkg-source -x " "grep\\_2.12-2.dsc}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1679 msgid "Looking around and building the package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1679 msgid "Look at the files in \\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1679 msgid "" "According to \\texttt{debian/control}, this package only generates one " "binary package, named \\texttt{grep}." msgstr "" #. type: itemize #: packaging-tutorial.tex:1679 msgid "" "According to \\texttt{debian/rules}, this package is typical of " "\\textsl{classic} debhelper packaging, without using \\textsl{CDBS} or " "\\textsl{dh}. One can see the various calls to \\texttt{dh\\_*} commands in " "\\texttt{debian/rules}." msgstr "" #. type: itemize #: packaging-tutorial.tex:1688 msgid "Use \\texttt{apt-get build-dep grep} to fetch the build-dependencies" msgstr "" #. type: itemize #: packaging-tutorial.tex:1688 msgid "" "Then \\texttt{debuild} or \\texttt{dpkg-buildpackage -us -uc} (Takes about 1 " "min)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1692 msgid "Editing the changelog" msgstr "" #. type: itemize #: packaging-tutorial.tex:1709 msgid "" "\\texttt{debian/changelog} is a text file. You could edit it and add a new " "entry manually." msgstr "" #. type: itemize #: packaging-tutorial.tex:1709 msgid "Or you can use \\texttt{dch -i}, which will add an entry and open the editor" msgstr "" #. type: itemize #: packaging-tutorial.tex:1709 msgid "" "The name and email can be defined using the \\texttt{DEBFULLNAME} and " "\\texttt{DEBEMAIL} environment variables" msgstr "" #. type: itemize #: packaging-tutorial.tex:1709 msgid "After that, rebuild the package: a new version of the package is built" msgstr "" #. type: itemize #: packaging-tutorial.tex:1709 msgid "" "Package versioning is detailed in section 5.6.12 of the Debian policy\\\\ " "\\url{https://www.debian.org/doc/debian-policy/ch-controlfields}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1713 msgid "Disabling Perl regexp support and rebuilding" msgstr "" #. type: itemize #: packaging-tutorial.tex:1729 msgid "" "Check with \\texttt{./configure -{}-help}: the option to disable Perl regexp " "is \\texttt{-{}-disable-perl-regexp}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1729 msgid "Edit \\texttt{debian/rules} and find the \\texttt{./configure} line" msgstr "" #. type: itemize #: packaging-tutorial.tex:1729 msgid "Add \\texttt{-{}-disable-perl-regexp}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1729 msgid "Rebuild with \\texttt{debuild} or \\texttt{dpkg-buildpackage -us -uc}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1733 msgid "Comparing and testing the packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:1754 msgid "Compare the binary packages: \\texttt{debdiff ../*changes}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1754 msgid "Compare the source packages: \\texttt{debdiff ../*dsc}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1754 msgid "" "Install the newly built package: \\texttt{debi}\\\\ Or \\texttt{dpkg -i " "../grep\\_<TAB>}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1754 msgid "\\texttt{grep -P foo} no longer works!" msgstr "" #. type: frame #: packaging-tutorial.tex:1754 msgid "Reinstall the previous version of the package:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1754 msgid "" "\\texttt{apt-get install -{}-reinstall grep=2.6.3-3} \\textit{(= previous " "version)}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1801 packaging-tutorial.tex:1968 packaging-tutorial.tex:2010 packaging-tutorial.tex:2058 msgid "Step by step\\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:1801 msgid "\\texttt{wget http://ftp.gnu.org/gnu/gnujump/gnujump-1.0.8.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1801 msgid "\\texttt{mv gnujump-1.0.8.tar.gz gnujump\\_1.0.8.orig.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1801 msgid "\\texttt{tar xf gnujump\\_1.0.8.orig.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1801 msgid "\\texttt{cd gnujump-1.0.8/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1801 msgid "\\texttt{dh\\_make -f ../gnujump-1.0.8.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1801 msgid "Type of package: single binary (for now)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1801 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\small]\n" "gnujump-1.0.8$ ls debian/\n" "changelog gnujump.default.ex preinst.ex\n" "compat gnujump.doc-base.EX prerm.ex\n" "control init.d.ex README.Debian\n" "copyright manpage.1.ex README.source\n" "docs manpage.sgml.ex rules\n" "emacsen-install.ex manpage.xml.ex source\n" "emacsen-remove.ex menu.ex watch.ex\n" "emacsen-startup.ex postinst.ex\n" "gnujump.cron.d.ex postrm.ex" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1828 packaging-tutorial.tex:2027 packaging-tutorial.tex:2069 msgid "Step by step\\ldots (2)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "" "Look at \\texttt{debian/changelog}, \\texttt{debian/rules}, " "\\texttt{debian/control}\\\\ (auto-filled by \\textbf{dh\\_make})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "" "In \\texttt{debian/control}:\\\\ \\texttt{Build-Depends: debhelper (>= " "7.0.50~), autotools-dev}\\\\ Lists the \\textsl{build-dependencies} = " "packages needed to build the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "" "Try to build the package as-is with \\texttt{debuild} (thanks to " "\\textbf{dh} magic)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "And add build-dependencies, until it builds" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "" "Hint: use \\texttt{apt-cache search} and \\texttt{apt-file} to find the " "packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "Example:" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1828 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "checking for sdl-config... no\n" "checking for SDL - version >= 1.2.0... no\n" "[...]\n" "configure: error: *** SDL version 1.2.0 not found!" msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "$\\rightarrow$ Add \\textbf{libsdl1.2-dev} to Build-Depends and install it." msgstr "" #. type: itemize #: packaging-tutorial.tex:1828 msgid "Better: use \\textbf{pbuilder} to build in a clean environment" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1832 msgid "Step by step\\ldots (3)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1832 msgid "" "Required build-dependencies are \\texttt{libsdl1.2-dev, libsdl-image1.2-dev, " "libsdl-mixer1.2-dev}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1858 msgid "Then, you will probably run into another error:" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1858 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\tiny]\n" "\t/usr/bin/ld: SDL_rotozoom.o: undefined reference to symbol " "'ceil@@GLIBC_2.2.5'\n" "\t//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from " "command line\n" "\tcollect2: error: ld returned 1 exit status\n" "\tMakefile:376: recipe for target 'gnujump' failed\n" "\t" msgstr "" #. type: itemize #: packaging-tutorial.tex:1858 msgid "" "This problem is caused by bitrot: gnujump has not been adjusted following " "linker changes." msgstr "" #. type: itemize #: packaging-tutorial.tex:1858 msgid "" "If you are using source format version \\textbf{1.0}, you can directly " "change upstream sources." msgstr "" #. type: itemize #: packaging-tutorial.tex:1858 packaging-tutorial.tex:1887 msgid "Edit \\texttt{src/Makefile.am} and replace" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1887 msgid "Step by step\\ldots (4)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1887 msgid "" "If you are using source format version \\textbf{3.0 (quilt)}, use " "\\texttt{quilt} to prepare a patch. (see " "\\url{https://wiki.debian.org/UsingQuilt})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1887 msgid "\\texttt{export QUILT\\_PATCHES=debian/patches}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1887 msgid "" "\\texttt{mkdir debian/patches}\\\\ \\texttt{quilt new " "linker-fixes.patch}\\\\ \\texttt{quilt add src/Makefile.am}\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1887 msgid "\\texttt{quilt refresh}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1887 msgid "" "Since \\texttt{src/Makefile.am} was changed, autoreconf must be called " "during the build. To do that automatically with \\texttt{dh}, change the " "\\texttt{dh} call in \\texttt{debian/rules} from: \\texttt{dh \\$\\@ " "-{}-with autotools-dev}\\\\ to: \\texttt{dh \\$\\@ -{}-with autotools-dev " "-{}-with autoreconf}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1914 msgid "Step by step\\ldots (5)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "The package should now build fine." msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "" "Use \\texttt{debc} to list the content of the generated package, and " "\\texttt{debi} to install it and test it." msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "Test the package with \\texttt{lintian}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "" "While not a strict requirement, it is recommended that packages uploaded to " "Debian are \\textsl{lintian-clean}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "More problems can be listed using \\texttt{lintian -EviIL +pedantic}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "Some hints:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "Remove the files that you don't need in \\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "Fill in \\texttt{debian/control}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "" "Install the executable to \\texttt{/usr/games} by overriding " "\\texttt{dh\\_auto\\_configure}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1914 msgid "" "Use \\textsl{hardening} compiler flags to increase security.\\\\ See " "\\url{https://wiki.debian.org/Hardening}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1927 msgid "Step by step\\ldots (6)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1927 msgid "Compare your package with the one already packaged in Debian:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1927 msgid "" "It splits the data files to a second package, that is the same across all " "architectures ($\\rightarrow$ saves space in the Debian archive)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1927 msgid "" "It installs a .desktop file (for the GNOME/KDE menus) and also integrates " "into the Debian menu" msgstr "" #. type: itemize #: packaging-tutorial.tex:1927 msgid "It fixes a few minor problems using patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "\\texttt{apt-get install javahelper}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "Create a basic source package: \\texttt{jh\\_makepkg}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "Library" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "None" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "Default Free compiler/runtime" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "Look at and fix \\texttt{debian/*}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "\\texttt{dpkg-buildpackage -us -uc} or \\texttt{debuild}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "\\texttt{lintian}, \\texttt{debc}, etc." msgstr "" #. type: itemize #: packaging-tutorial.tex:1968 msgid "Compare your result with the \\texttt{libirclib-java} source package" msgstr "" #. type: frame #: packaging-tutorial.tex:2010 msgid "\\texttt{gem2deb peach}:" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Downloads the gem from rubygems.org" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Creates a suitable .orig.tar.gz archive, and untar it" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Initializes a Debian source package based on the gem's metadata" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Named \\texttt{ruby-\\textsl{gemname}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Tries to build the Debian binary package (this might fail)" msgstr "" #. type: frame #: packaging-tutorial.tex:2010 msgid "" "\\texttt{dh\\_ruby} (included in \\textsl{gem2deb}) does the Ruby-specific " "tasks:" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Build C extensions for each Ruby version" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Copy files to their destination directory" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "Update shebangs in executable scripts" msgstr "" #. type: itemize #: packaging-tutorial.tex:2010 msgid "" "Run tests defined in \\texttt{debian/ruby-tests.rb}, " "\\texttt{debian/ruby-tests.rake}, or \\texttt{debian/ruby-test-files.yaml}, " "as well as various other checks" msgstr "" #. type: frame #: packaging-tutorial.tex:2027 packaging-tutorial.tex:2069 msgid "Improve the generated package:" msgstr "" #. type: itemize #: packaging-tutorial.tex:2027 msgid "Run \\texttt{debclean} to clean the source tree. Look at \\texttt{debian/}." msgstr "" #. type: itemize #: packaging-tutorial.tex:2027 msgid "\\texttt{changelog} and \\texttt{compat} should be correct" msgstr "" #. type: itemize #: packaging-tutorial.tex:2027 msgid "Edit \\texttt{debian/control}: improve \\texttt{Description}" msgstr "" #. type: itemize #: packaging-tutorial.tex:2027 msgid "Write a proper \\texttt{copyright} file based on the upstream files" msgstr "" #. type: itemize #: packaging-tutorial.tex:2027 msgid "" "Compare your package with the \\texttt{ruby-peach} package in the Debian " "archive" msgstr "" #. type: frame #: packaging-tutorial.tex:2058 msgid "\\verb|dh-make-perl --cpan Acme|:" msgstr "" #. type: itemize #: packaging-tutorial.tex:2058 msgid "Downloads the tarball from the CPAN" msgstr "" #. type: itemize #: packaging-tutorial.tex:2058 msgid "Creates a suitable .orig.tar.gz archive, and untars it" msgstr "" #. type: itemize #: packaging-tutorial.tex:2058 msgid "Initializes a Debian source package based on the distribution's metadata" msgstr "" #. type: itemize #: packaging-tutorial.tex:2058 msgid "Named \\texttt{lib\\textsl{distname}-perl}" msgstr "" #. type: itemize #: packaging-tutorial.tex:2069 msgid "" "\\texttt{debian/changelog}, \\texttt{debian/compat}, " "\\texttt{debian/libacme-perl.docs}, and \\texttt{debian/watch} should be " "correct" msgstr "" #. type: itemize #: packaging-tutorial.tex:2069 msgid "" "Edit \\texttt{debian/control}: improve \\texttt{Description}, and remove " "boilerplate at the bottom" msgstr "" #. type: itemize #: packaging-tutorial.tex:2069 msgid "" "Edit \\texttt{debian/copyright}: remove boilerplate paragraph at the top, " "add years of copyright to the \\texttt{Files:\\hspace{0.3em}*} stanza" msgstr ""