Dear Debian I18N people, I would like to know if some of you would be interested in translating packaging-tutorial. packaging-tutorial already includes fr.po. So do not translate it to these languages (the translators will be contacted separately). language translated fuzzy untranslated ----------------------------------------------------- fr 495 Please send the updated file to me, or submit it as a wishlist bug against packaging-tutorial. If you have read so far, please find the POT file in attachment. Thanks in advance, Cédric
# 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: 2011-10-19 01:23+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@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:20 msgid "Debian Packaging Tutorial" 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). #. type: date{#1} #: packaging-tutorial.tex:26 msgid "version \\version{} -- \\year-\\month-\\day" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:58 msgid "About this tutorial" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Goal: \\textbf{tell you what you really need to know about Debian packaging}" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Modify existing packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Create your own packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Interact with the Debian community" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Become a Debian power-user" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Covers the most important points, but is not complete" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "You will need to read more documentation" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "Most of the content also applies to Debian derivatives distributions" msgstr "" #. type: itemize #: packaging-tutorial.tex:58 msgid "That includes Ubuntu" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:62 debiantutorial.sty:41 msgid "Outline" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:64 msgid "Introduction" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:66 packaging-tutorial.tex:90 msgid "Debian" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:90 msgid "GNU/Linux distribution" msgstr "" #. type: itemize #: packaging-tutorial.tex:90 msgid "1st major distro developed ``openly in the spirit of GNU''" msgstr "" #. type: itemize #: packaging-tutorial.tex:90 msgid "\\textbf{Non-commercial}, built collaboratively by over 1,000 volunteers" msgstr "" #. type: itemize #: packaging-tutorial.tex:90 msgid "3 main features:" msgstr "" #. type: itemize #: packaging-tutorial.tex:90 msgid "" "\\textbf{Quality} -- culture of technical excellence\\\\ {\\small\\sl We " "release when it's ready}" msgstr "" #. type: itemize #: packaging-tutorial.tex:90 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:90 msgid "" "\\textbf{Independence} -- no (single) company babysitting Debian\\\\ And " "open decision-making process (\\textsl{do-ocracy} + \\textsl{democracy})" msgstr "" #. type: itemize #: packaging-tutorial.tex:90 msgid "\\textbf{Amateur} in the best sense: done for the love of it" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:111 packaging-tutorial.tex:111 msgid "Debian packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "\\textbf{.deb} files (binary packages)" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "A very powerful and convenient way to distribute software to users" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "One of the two most common packages format (with RPM)" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "Universal:" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "" "30,000 binary packages in Debian\\\\ $\\rightarrow$ most of the available " "free software is packaged in Debian!" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "For 12 ports (architectures), including 2 non-Linux (Hurd; KFreeBSD)" msgstr "" #. type: itemize #: packaging-tutorial.tex:111 msgid "Also used by 120 Debian derivatives distributions" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:114 packaging-tutorial.tex:139 msgid "The Deb package format" msgstr "" #. type: itemize #: packaging-tutorial.tex:139 msgid "\\texttt{.deb} file: an \\texttt{ar} archive" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:139 #, 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:139 msgid "" "\\texttt{debian-binary}: version of the deb file format, " "\\texttt{\"2.0\\textbackslash{}n\"}" msgstr "" #. type: itemize #: packaging-tutorial.tex:139 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:139 msgid "\\texttt{data.tar.gz}: data files of the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:139 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:139 msgid "But most people don't do it that way" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:139 msgid "This tutorial: create Debian packages, the Debian way" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:159 packaging-tutorial.tex:159 msgid "Tools you will need" msgstr "" #. type: itemize #: packaging-tutorial.tex:159 msgid "A Debian (or Ubuntu) system (with root access)" msgstr "" #. type: itemize #: packaging-tutorial.tex:159 msgid "Some packages:" msgstr "" #. type: itemize #: packaging-tutorial.tex:159 msgid "" "\\textbf{build-essential}: has dependencies on the packages that will be " "assumed to be available on the developers' machine (no need to specify them " "in the \\texttt{Build-Depends:} control field of your package)" msgstr "" #. type: itemize #: packaging-tutorial.tex:159 msgid "" "includes a dependency on \\textbf{dpkg-dev}, which contains basic " "Debian-specific tools to create packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:159 msgid "\\textbf{devscripts}: contains many useful scripts for Debian maintainers" msgstr "" #. type: frame #: packaging-tutorial.tex:167 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:174 packaging-tutorial.tex:174 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:194 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:211 msgid "Rebuilding dash" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:211 msgid "Example: rebuilding dash" msgstr "" #. type: enumerate #: packaging-tutorial.tex:211 msgid "" "Install packages needed to build dash, and devscripts\\\\ {\\texttt{apt-get " "build-dep dash}}\\\\ {\\texttt{apt-get install -{}-no-install-recommends " "devscripts}}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:211 msgid "" "Create a working directory, and get in it:\\\\ \\texttt{mkdir " "/tmp/debian-tutorial ; cd /tmp/debian-tutorial}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:211 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:211 msgid "Build the package\\\\ {\\texttt{cd dash-*\\\\ debuild -us -uc}}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:224 msgid "Check that it worked" msgstr "" #. type: itemize #: packaging-tutorial.tex:224 msgid "There are some new \\texttt{.deb} files in the parent directory" msgstr "" #. type: enumerate #: packaging-tutorial.tex:224 msgid "Look at the \\texttt{debian/} directory" msgstr "" #. type: itemize #: packaging-tutorial.tex:224 msgid "That's where the packaging work is done" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:262 msgid "Creating source packages" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:262 msgid "Source packages basics" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:262 msgid "Source package" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 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:262 msgid "Two kinds of packages: (if unsure, use non-native)" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "" "Native packages: normally for Debian specific software (\\textsl{dpkg}, " "\\textsl{apt})" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "Non-native packages: software developed outside Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "Main file: \\texttt{.dsc} (meta-data)" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "Other files depending on the version of the source format" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "1.0 -- native: \\texttt{package\\_version.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "1.0 -- non-native:" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 packaging-tutorial.tex:262 msgid "\\texttt{pkg\\_ver.orig.tar.gz} : upstream source" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "\\texttt{pkg\\_debver.diff.gz} : patch to add Debian-specific changes" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "3.0 (quilt):" msgstr "" #. type: itemize #: packaging-tutorial.tex:262 msgid "\\texttt{pkg\\_debver.debian.tar.gz} : tarball with the Debian changes" msgstr "" #. type: frame #: packaging-tutorial.tex:262 msgid "(See \\texttt{dpkg-source(1)} for exact details)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:286 msgid "Source package example (wget\\_1.12-2.1.dsc)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:286 #, 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 <noel@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:314 msgid "Retrieving source packages" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:314 msgid "Retrieving an existing source package" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "From the Debian archive:" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "\\texttt{apt-get source \\textsl{package}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "\\texttt{apt-get source \\textsl{package=version}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "\\texttt{apt-get source \\textsl{package/release}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "(You need \\texttt{deb-src} lines in \\texttt{sources.list})" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "From the Internet:" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "\\texttt{dget \\textsl{url-to.dsc}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 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:314 msgid "From the (declared) version control system:" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "\\texttt{debcheckout \\textsl{package}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:314 msgid "Once downloaded, extract with \\texttt{dpkg-source -x \\textsl{file.dsc}}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:333 packaging-tutorial.tex:333 msgid "Creating a basic source package" msgstr "" #. type: itemize #: packaging-tutorial.tex:333 msgid "" "Download the upstream source\\\\ (\\textsl{upstream source} = the one from " "the software's original developers)" msgstr "" #. type: itemize #: packaging-tutorial.tex:333 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:333 msgid "Untar it" msgstr "" #. type: itemize #: packaging-tutorial.tex:333 msgid "" "\\texttt{cd \\textsl{upstream\\_source} \\&\\& dh\\_make} (from the " "\\textbf{dh-make} package)" msgstr "" #. type: itemize #: packaging-tutorial.tex:333 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:333 msgid "\\texttt{debian/} directory created, with a lot of files in it" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:362 packaging-tutorial.tex:362 msgid "Files in debian/" msgstr "" #. type: frame #: packaging-tutorial.tex:362 msgid "" "All the packaging work should be made by modifying files in " "\\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "Main files:" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "\\textbf{control} -- meta-data about the package (dependencies, etc)" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "\\textbf{rules} -- specifies how to build the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "\\textbf{copyright} -- copyright information for the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "\\textbf{changelog} -- history of the Debian package" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "Other files:" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "compat" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "watch" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "dh\\_install* targets\\\\ {\\small *.dirs, *.docs, *.manpages, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "maintainer scripts\\\\ {\\small *.postinst, *.prerm, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "source/format" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "patches/ -- if you need to modify the upstream sources" msgstr "" #. type: itemize #: packaging-tutorial.tex:362 msgid "Several files use a format based on RFC 822 (mail headers)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:374 msgid "debian/changelog" msgstr "" #. type: itemize #: packaging-tutorial.tex:374 msgid "Lists the Debian packaging changes" msgstr "" #. type: itemize #: packaging-tutorial.tex:374 msgid "Gives the current version of the package" msgstr "" #. type: tikzpicture #: packaging-tutorial.tex:374 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:385 msgid "Edited manually or with \\texttt{dch}" msgstr "" #. type: itemize #: packaging-tutorial.tex:385 msgid "" "Special format to automatically close Debian or Ubuntu bugs\\\\ Debian: " "\\texttt{Closes:~\\#595268}; Ubuntu: \\texttt{LP:~\\#616929}" msgstr "" #. type: itemize #: packaging-tutorial.tex:385 msgid "Installed as \\texttt{/usr/share/doc/\\textit{package}/changelog.Debian.gz}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:385 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "mpich2 (1.2.1.1-5) unstable; urgency=low\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:391 #, 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:393 #, no-wrap msgid " -- Lucas Nussbaum <lucas@debian.org> Wed, 15 Sep 2010 18:13:44 +0200" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:420 msgid "debian/control" msgstr "" #. type: itemize #: packaging-tutorial.tex:420 msgid "Package metadata" msgstr "" #. type: itemize #: packaging-tutorial.tex:420 msgid "For the source package itself" msgstr "" #. type: itemize #: packaging-tutorial.tex:420 msgid "For each binary package built from this source" msgstr "" #. type: itemize #: packaging-tutorial.tex:420 msgid "" "Package name, section, priority, maintainer, uploaders, build-dependencies, " "dependencies, description, homepage, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:420 msgid "" "Documentation: Debian Policy chapter 5\\\\ " "\\url{http://www.debian.org/doc/debian-policy/ch-controlfields.html}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:420 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "Source: wget\n" "Section: web\n" "Priority: important\n" "Maintainer: Noel Kothe <noel@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:426 #, 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:455 msgid "Architecture: all or any" msgstr "" #. type: frame #: packaging-tutorial.tex:455 msgid "Two kinds of binary packages:" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "Packages with different contents on each Debian architecture" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "Example: C program" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "\\texttt{Architecture:\\ any} in \\texttt{debian/control}" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "" "Or, if it only works on a subset of architectures:\\\\ " "\\texttt{Architecture:\\ amd64 i386 ia64 hurd-i386}" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "buildd.debian.org: builds all the other architectures for you on upload" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "" "Named " "\\texttt{\\textsl{package}\\_\\textsl{version}\\_\\textsl{architecture}.deb}" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "Packages with the same content on all architectures" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "Example: Perl library" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "\\texttt{Architecture:\\ all} in \\texttt{debian/control}" msgstr "" #. type: itemize #: packaging-tutorial.tex:455 msgid "Named \\texttt{\\textsl{package}\\_\\textsl{version}\\_\\textbf{all}.deb}" msgstr "" #. type: frame #: packaging-tutorial.tex:455 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:481 msgid "debian/rules" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 msgid "Makefile" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 msgid "Interface used to build Debian packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 msgid "" "Documented in Debian Policy, chapter 4.8\\\\ {\\small " "\\texttt{http://www.debian.org/doc/debian-policy/ch-source.html\\#s-debianrules}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 msgid "Five required targets:" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 msgid "\\texttt{build}: should perform all the configuration and compilation" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 msgid "\\texttt{binary, binary-arch, binary-indep}: build the binary packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:481 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:481 msgid "\\texttt{clean}: clean up the source directory" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:515 msgid "Packaging helpers" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:515 msgid "Packaging helpers -- debhelper" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "You could write shell code in \\texttt{debian/rules} directly" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "See the \\texttt{adduser} package for example" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Better practice (used by most packages): use a \\textsl{Packaging helper}" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Most popular one: \\textbf{debhelper} (used by 98\\% of packages)" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Goals:" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Factor the common tasks in standard tools used by all packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Fix some packaging bugs once for all packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "" "{\\footnotesize dh\\_installdirs, dh\\_installchangelogs, dh\\_installdocs, " "dh\\_installexamples, 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:515 msgid "Called from \\texttt{debian/rules}" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Configurable using command parameters or files in \\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "" "{\\footnotesize \\ttfamily \\textsl{package}.docs, " "\\textsl{package}.examples, \\textsl{package}.install, " "\\textsl{package}.manpages, \\ldots}" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "" "Third-party helpers for sets of packages: \\textbf{python-support}, " "\\textbf{dh\\_ocaml}, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:515 msgid "Gotcha: \\texttt{debian/compat}: Debhelper compatibility version (use \"7\")" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:519 msgid "debian/rules using debhelper (1/2)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:519 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize,escapeinside=\\{\\}]\n" "#!/usr/bin/make -f\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:522 #, no-wrap msgid "" "# Uncomment this to turn on verbose mode.\n" "#export DH_VERBOSE=1\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:526 #, no-wrap msgid "" "build: \n" " $(MAKE)\n" " #docbook-to-man debian/packagename.sgml > packagename.1\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:533 #, 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:541 #, 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:546 msgid "debian/rules using debhelper (2/2)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:546 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize,escapeinside=\\{\\}]\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:549 #, no-wrap msgid "" "# Build architecture-independent files here.\n" "binary-indep: build install\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:568 #, 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:571 #, 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:602 msgid "CDBS" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "With debhelper, still a lot of redundancy between packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "Second-level helpers that factor common functionality" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "" "E.g building with \\texttt{./configure \\&\\& make \\&\\& make install} or " "CMake" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "CDBS:" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "Introduced in 2005, based on advanced \\textsl{GNU make} magic" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "Documentation: \\texttt{/usr/share/doc/cdbs/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "Support for Perl, Python, Ruby, GNOME, KDE, Java, Haskell, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "But some people hate it:" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "" "Sometimes difficult to customize package builds:\\\\ \"\\textsl{twisty maze " "of makefiles and environment variables}\"" msgstr "" #. type: itemize #: packaging-tutorial.tex:602 msgid "Slower than plain debhelper (many useless calls to \\texttt{dh\\_*})" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:602 #, 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:606 #, 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:627 msgid "Dh (aka Debhelper 7, or dh7)" msgstr "" #. type: itemize #: packaging-tutorial.tex:627 msgid "Introduced in 2008 as a \\textsl{CDBS killer}" msgstr "" #. type: itemize #: packaging-tutorial.tex:627 msgid "\\textbf{dh} command that calls \\texttt{dh\\_*}" msgstr "" #. type: itemize #: packaging-tutorial.tex:627 msgid "Simple \\textsl{debian/rules}, listing only overrides" msgstr "" #. type: itemize #: packaging-tutorial.tex:627 msgid "Easier to customize than CDBS" msgstr "" #. type: itemize #: packaging-tutorial.tex:627 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:627 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "#!/usr/bin/make -f\n" "%:\n" " dh $@\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:630 #, no-wrap msgid "" "override_dh_auto_configure:\n" " dh_auto_configure -- --with-kitchen-sink\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:633 #, no-wrap msgid "" "override_dh_auto_build:\n" " make world\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:634 #, no-wrap msgid " " msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:655 msgid "Classic debhelper vs CDBS vs dh" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "" "Mind shares:\\\\ Classic debhelper: 40\\% \\hskip 1em CDBS: 23\\% \\hskip " "1em dh: 36\\%" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "Which one should I learn?" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "Probably a bit of all of them" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "You need to know debhelper to use dh and CDBS" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "You might have to modify CDBS packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "Which one should I use for a new package?" msgstr "" #. type: itemize #: packaging-tutorial.tex:655 msgid "\\textbf{dh} (only solution with an increasing mind share)" msgstr "" #. type: axis[#1] #: packaging-tutorial.tex:669 msgid "" "small,label style={font=\\footnotesize},xlabel={\\small " "Time},ylabel={\\small Market share (\\%)}, date coordinates " "in=x,height=4.85cm,width=9cm,xticklabel={\\month/\\year}, legend " "style={font=\\footnotesize,at={(1.02,1)},anchor=north west},max space " "between ticks=82,try min ticks=5,ymin=0" msgstr "" #. type: axis #: packaging-tutorial.tex:669 msgid "" "\\addplot[mark=none,blue,thick,style=densely dotted] table[x=date,y=dh] " "{cdbs-dh7.txt}; \\addplot[mark=none,red,thick,style=dashed] " "table[x=date,y=dh7] {cdbs-dh7.txt}; \\addplot[mark=none,green,thick] " "table[x=date,y=cdbs] {cdbs-dh7.txt}; \\legend{debhelper, dh, CDBS}" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:678 msgid "Building and testing packages" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:678 packaging-tutorial.tex:678 msgid "Building packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:678 msgid "" "\\textttc{apt-get build-dep mypackage}\\\\ Installs the " "\\textsl{build-dependencies} (for a package in the archive)" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "\\textttc{debuild}: build, test with \\texttt{lintian}, sign with GPG" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "Also possible to call \\textttc{dpkg-buildpackage} directly" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "Usually with \\texttt{dpkg-buildpackage -us -uc}" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "It is better to build packages in a clean \\& minimal environment" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 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:750 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:750 msgid "Generate \\texttt{.deb} files and a \\texttt{.changes} file" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "\\texttt{.changes}: describes what was built; used to upload the package" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:750 packaging-tutorial.tex:750 msgid "Installing and testing packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "" "Install the package locally: \\textttc{debi} (will use \\texttt{.changes} to " "know what to install)" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "" "List the content of the package: \\texttt{{\\color{rouge}debc} " "../mypackage<TAB>.changes}" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 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:750 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" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "Upload the package to Debian (\\textttc{dput}) (needs configuration)" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 msgid "" "Manage a private Debian archive with \\textttc{reprepro}\\\\ Documentation: " "\\url{http://mirrorer.alioth.debian.org/}" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:750 packaging-tutorial.tex:750 packaging-tutorial.tex:1270 msgid "Practical session 1: modifying the grep package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1323 msgid "" "Go to \\url{http://ftp.debian.org/debian/pool/main/g/grep/} and download " "version 2.6.3-3 of the package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1342 msgid "Look at the files in \\texttt{debian/}." msgstr "" #. type: itemize #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1342 msgid "How many binary packages are generated by this source package?" msgstr "" #. type: itemize #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1342 msgid "Which packaging helper does this package use?" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1351 msgid "Build the package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1372 msgid "" "We are now going to modify the package. Add a changelog entry and increase " "the version number." msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1392 msgid "Now disable perl-regexp support (it is a \\texttt{./configure} option)" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1392 msgid "Rebuild the package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1422 msgid "Compare the original and the new package with debdiff" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1422 msgid "Install the newly built package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:750 packaging-tutorial.tex:1296 packaging-tutorial.tex:1422 msgid "Cry if you messed up ;)" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:765 msgid "Advanced packaging topics" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:765 packaging-tutorial.tex:765 msgid "debian/copyright" msgstr "" #. type: itemize #: packaging-tutorial.tex:765 msgid "Copyright and license information for the source and the packaging" msgstr "" #. type: itemize #: packaging-tutorial.tex:765 msgid "Traditionally written as a text file" msgstr "" #. type: itemize #: packaging-tutorial.tex:765 msgid "New machine-readable format: \\url{http://dep.debian.net/deps/dep5/}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:765 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "Format: <VERSIONED_FORMAT_URL>\n" "Upstream-Name: X Solitaire\n" "Source: ftp://ftp.example.com/pub/games\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:775 #, no-wrap msgid "" "Files: *\n" "Copyright: Copyright 1998 John Doe <jdoe@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:780 #, no-wrap msgid "" "Files: debian/*\n" "Copyright: Copyright 1998 Jane Smith <jsmith@example.net>\n" "License:\n" " [LICENSE TEXT]" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:811 packaging-tutorial.tex:811 msgid "Modifying the upstream source" msgstr "" #. type: frame #: packaging-tutorial.tex:811 msgid "Often needed:" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Fix bugs or add customizations that are specific to Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Backport fixes from a newer upstream release" msgstr "" #. type: frame #: packaging-tutorial.tex:811 msgid "Several methods to do it:" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Modifying the files directly" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Simple" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "But no way to track and document the changes" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Using patch systems" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Eases contributing your changes to upstream" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "Helps sharing the fixes with derivatives" msgstr "" #. type: itemize #: packaging-tutorial.tex:811 msgid "" "Gives more exposure to the changes\\\\ " "\\url{http://patch-tracker.debian.org/}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:836 msgid "Patch systems" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "Principle: changes are stored as patches in \\texttt{debian/patches/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "Applied and unapplied during build" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "" "Past: several implementations -- \\textsl{simple-patchsys} (\\textsl{cdbs}), " "\\textsl{dpatch}, \\textbf{\\textsl{quilt}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "Each supports two \\texttt{debian/rules} targets:" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "\\texttt{debian/rules patch}: apply all patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "\\texttt{debian/rules unpatch}: de-apply all patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "More documentation: \\url{http://wiki.debian.org/debian/patches}" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:836 msgid "New source package format with built-in patch system: 3.0 (quilt)" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "Recommended solution" msgstr "" #. type: itemize #: packaging-tutorial.tex:836 msgid "" "You need to learn \\textsl{quilt}\\\\ " "\\url{http://pkg-perl.alioth.debian.org/howto/quilt.html}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:859 msgid "Documentation of patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:859 msgid "Standard headers at the beginning of the patch" msgstr "" #. type: itemize #: packaging-tutorial.tex:859 msgid "" "Documented in DEP-3 - Patch Tagging Guidelines\\\\ " "\\url{http://dep.debian.net/deps/dep3/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:859 msgid "All patches are published on \\url{http://patch-tracker.debian.org/}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:859 #, 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-guest@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:863 #, 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:883 packaging-tutorial.tex:883 msgid "Doing things during installation and removal" msgstr "" #. type: itemize #: packaging-tutorial.tex:883 msgid "Decompressing the package is sometimes not enough" msgstr "" #. type: itemize #: packaging-tutorial.tex:883 msgid "" "Create/remove system users, start/stop services, manage " "\\textsl{alternatives}" msgstr "" #. type: itemize #: packaging-tutorial.tex:883 msgid "" "Done in \\textsl{maintainer scripts}\\\\ \\texttt{preinst, postinst, prerm, " "postrm}" msgstr "" #. type: itemize #: packaging-tutorial.tex:883 msgid "Snippets for common actions can be generated by debhelper" msgstr "" #. type: itemize #: packaging-tutorial.tex:883 msgid "Documentation:" msgstr "" #. type: itemize #: packaging-tutorial.tex:883 msgid "" "Debian Policy Manual, chapter 6\\\\ {\\footnotesize " "\\url{http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:899 msgid "" "Debian Developer's Reference, chapter 6.4\\\\ {\\scriptsize " "\\url{http://www.debian.org/doc/developers-reference/best-pkging-practices.html}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:899 msgid "" "{\\footnotesize " "\\url{http://people.debian.org/~srivasta/MaintainerScripts.html}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:899 msgid "Prompting the user" msgstr "" #. type: itemize #: packaging-tutorial.tex:899 msgid "Must be done with \\textbf{debconf}" msgstr "" #. type: itemize #: packaging-tutorial.tex:899 msgid "Documentation: \\texttt{debconf-devel(7)} (\\texttt{debconf-doc} package)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:905 msgid "Monitoring upstream versions" msgstr "" #. type: itemize #: packaging-tutorial.tex:905 msgid "Specify where to look in \\texttt{debian/watch} (see \\texttt{uscan(1)})" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:905 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "version=3\n" "\n" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:908 #, no-wrap msgid "" "http://tmrc.mit.edu/mirror/twisted/Twisted/(\\d\\.\\d)/ \\\n" " Twisted-([\\d\\.]*)\\.tar\\.bz2\n" " " msgstr "" #. type: itemize #: packaging-tutorial.tex:922 msgid "" "Debian infrastructure that makes use of \\texttt{debian/watch}:\\\\ " "\\textbf{Debian External Health Status}\\\\ " "\\url{http://dehs.alioth.debian.org/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:922 msgid "" "Maintainer warned by emails sent to the Package Tracking System\\\\ " "\\url{http://packages.qa.debian.org/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:922 msgid "\\texttt{uscan}: run a manual check" msgstr "" #. type: itemize #: packaging-tutorial.tex:922 msgid "\\texttt{uupdate}: try to update your package to the latest upstream version" msgstr "" #. type: subsection{#2} #: packaging-tutorial.tex:960 msgid "Packaging with a VCS (SVN, Git \\& friends)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:960 msgid "Packaging with a VCS (SVN, Git, etc.)" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 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:960 msgid "Example: \\texttt{git-buildpackage}" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "" "\\texttt{upstream} branch to track upstream with " "\\texttt{upstream/\\textsl{version}} tags" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "\\texttt{master} branch tracks the Debian package" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "\\texttt{debian/\\textsl{version}} tags for each upload" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "\\texttt{pristine-tar} branch to be able to rebuild the upstream tarball" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "\\texttt{Vcs-*} fields in \\texttt{debian/control} to locate the repository" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "\\url{http://wiki.debian.org/Alioth/Git}" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "\\url{http://wiki.debian.org/Alioth/Svn}" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:960 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "Vcs-Browser: http://git.debian.org/?p=devscripts/devscripts.git\n" "Vcs-Git: git://git.debian.org/devscripts/devscripts.git\n" " " msgstr "" #. type: lstlisting #: packaging-tutorial.tex:960 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\footnotesize]\n" "Vcs-Browser: http://svn.debian.org/viewsvn/pkg-perl/trunk/libwww-perl/\n" "Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libwww-perl\n" " " msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "" "VCS-agnostic interface: \\texttt{debcheckout}, \\texttt{debcommit}, " "\\texttt{debrelease}\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:960 msgid "" "\\texttt{debcheckout grep} $\\rightarrow$ checks out the source package from " "Git" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:989 msgid "Maintaining packages in Debian" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:989 packaging-tutorial.tex:989 msgid "Several ways to contribute to Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "\\textbf{Worst} way to contribute:" msgstr "" #. type: enumerate #: packaging-tutorial.tex:989 msgid "Package your own application" msgstr "" #. type: enumerate #: packaging-tutorial.tex:989 msgid "Get it into Debian" msgstr "" #. type: enumerate #: packaging-tutorial.tex:989 msgid "Disappear" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "\\textbf{Better} ways to contribute:" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "Get involved in packaging teams" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "Many teams that focus on set of packages, and need help" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "List available at \\url{http://wiki.debian.org/Teams}" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "An excellent way to learn from more experienced contributors" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "Adopt existing unmaintained packages (\\textsl{orphaned packages})" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "Bring new software to Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "Only if it's interesting/useful enough, please" msgstr "" #. type: itemize #: packaging-tutorial.tex:989 msgid "Are there alternatives already packaged in Debian?" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1027 packaging-tutorial.tex:1027 msgid "Adopting orphaned packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "Many unmaintained packages in Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "Full list + process: \\url{http://www.debian.org/devel/wnpp/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "Installed on your machine: \\texttt{wnpp-alert}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "Different states:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "\\textbf{O}rphaned: the package is unmaintained\\\\ Feel free to adopt it" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 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:1027 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:1027 msgid "" "\\textbf{RFH}: \\textbf{R}equest \\textbf{F}or \\textbf{H}elp\\\\ The " "maintainer is looking for help" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "Some unmaintained packages not detected \\arr not orphaned yet" msgstr "" #. type: itemize #: packaging-tutorial.tex:1027 msgid "" "When in doubt, ask \\texttt{debian-qa@lists.debian.org} \\\\ or " "\\texttt{\\#debian-qa} on \\texttt{irc.debian.org}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1049 packaging-tutorial.tex:1049 msgid "Getting your package in Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1049 msgid "You do not need any official status to get your package into Debian" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1049 msgid "Prepare a source package" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1049 msgid "Find a Debian Developer that will sponsor your package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1049 msgid "Official status (when you are already experienced):" msgstr "" #. type: itemize #: packaging-tutorial.tex:1049 msgid "" "\\textbf{Debian Maintainer (DM):}\\\\ Permission to upload your own " "packages\\\\ See \\url{http://wiki.debian.org/DebianMaintainer}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1049 msgid "" "\\textbf{Debian Developer (DD):}\\\\ Debian project members; can vote and " "upload any package" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1076 packaging-tutorial.tex:1076 msgid "Where to find help?" msgstr "" #. type: frame #: packaging-tutorial.tex:1076 msgid "Help you will need:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "Advice and answers to your questions, code reviews" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "Sponsorship for your uploads, once your package is ready" msgstr "" #. type: frame #: packaging-tutorial.tex:1076 msgid "You can get help from:" msgstr "" #. type: textbf{#1} #: packaging-tutorial.tex:1076 msgid "Other members of a packaging team" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "They know the specifics of your package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "You can become a member of the team" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "The Debian Mentors group (if your package doesn't fit in a team)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "\\url{http://wiki.debian.org/DebianMentorsFaq}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "" "Mailing list: \\url{debian-mentors@lists.debian.org}\\\\ {\\small (also a " "good way to learn by accident)}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "IRC: \\texttt{\\#debian-mentors} on \\texttt{irc.debian.org}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1076 msgid "\\url{http://mentors.debian.net/}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1094 packaging-tutorial.tex:1094 msgid "Official documentation" msgstr "" #. type: itemize #: packaging-tutorial.tex:1094 msgid "" "Debian Developers' Corner\\\\ \\url{http://www.debian.org/devel/}\\\\ " "{\\small Links to many resources about Debian development}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1094 msgid "" "Debian New Maintainers' Guide\\\\ " "\\url{http://www.debian.org/doc/maint-guide/}\\\\ {\\small An introduction " "to Debian packaging, but could use an update}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1094 msgid "" "Debian Developer's Reference\\\\ " "\\url{http://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:1094 msgid "Debian Policy\\\\ \\url{http://www.debian.org/doc/debian-policy/}\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1100 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:1105 msgid "Ubuntu Packaging Guide\\\\ \\url{https://wiki.ubuntu.com/PackagingGuide}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1115 msgid "Debian dashboards for maintainers" msgstr "" #. type: itemize #: packaging-tutorial.tex:1115 msgid "" "\\textbf{Source package centric}: Package Tracking System (PTS)\\\\ " "\\url{http://packages.qa.debian.org/dpkg}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1115 msgid "" "\\textbf{Maintainer/team centric}: Developer's Packages Overview (DDPO)\\\\ " "\\url{http://qa.debian.org/developer.php?login=pkg-ruby-extras-maintainers@lists.alioth.debian.org}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1142 packaging-tutorial.tex:1142 msgid "More interested in Ubuntu?" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Ubuntu mainly manages the divergence with Debian" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "" "No real focus on specific packages\\\\ Instead, collaboration with Debian " "teams" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "" "Usually recommend uploading new packages to Debian first\\\\ " "\\url{https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Possibly a better plan:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Get involved in a Debian team and act as a bridge with Ubuntu" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Help reduce divergence, triage bugs in Launchpad" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Many Debian tools can help:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Ubuntu column on the Developer's packages overview" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Ubuntu box on the Package Tracking System" msgstr "" #. type: itemize #: packaging-tutorial.tex:1142 msgid "Receive launchpad bugmail via the PTS" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1173 packaging-tutorial.tex:1173 packaging-tutorial.tex:1173 msgid "Conclusion" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "You now have a full overview of Debian packaging" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "But you will need to read more documentation" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "Best practices have evolved over the years" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "" "If not sure, use the \\textbf{dh} packaging helper, and the \\textbf{3.0 " "(quilt)} format" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "Things that were not covered in this tutorial:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "UCF -- manage user changes to configuration files when upgrading" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "dpkg triggers -- group similar maintainer scripts actions together" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "Debian development organization:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "Bug Tracking System (BTS)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "" "Suites: stable, testing, unstable, experimental, security, *-updates, " "backports, \\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:1173 msgid "Debian Blends -- subsets of Debian targeting specific groups" msgstr "" #. type: centerline{#1} #: packaging-tutorial.tex:1173 msgid "\\large Feedback: \\textbf{lucas@debian.org}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1176 packaging-tutorial.tex:1176 msgid "Legal stuff" msgstr "" #. type: frame #: packaging-tutorial.tex:1179 msgid "Copyright \\copyright 2011 Lucas Nussbaum -- lucas@debian.org" msgstr "" #. type: frame #: packaging-tutorial.tex:1195 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:1202 packaging-tutorial.tex:1202 msgid "Latest version \\& source code" msgstr "" #. type: itemize #: packaging-tutorial.tex:1202 msgid "" "Latest version:\\\\ {\\footnotesize " "\\url{http://git.debian.org/?p=collab-maint/packaging-tutorial.git;a=blob\\_plain;f=packaging-tutorial.pdf;hb=refs/heads/pdf}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1216 msgid "Contribute:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1216 msgid "" "{\\small \\texttt{git clone\\\\ " "git://git.debian.org/collab-maint/packaging-tutorial.git}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1216 msgid "{\\small \\texttt{apt-get source packaging-tutorial}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1216 msgid "" "{\\small " "\\url{http://git.debian.org/?p=collab-maint/packaging-tutorial.git}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1216 msgid "" "Feedback: " "\\href{mailto:lucas@debian.org}{\\textbf{\\texttt{lucas@debian.org}}}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 packaging-tutorial.tex:1440 msgid "Practical session 2: packaging GNUjump" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 msgid "" "Download GNUjump 1.0.6 from " "\\url{http://ftp.gnu.org/gnu/gnujump/1.0.6/gnujump-1.0.6.tar.gz}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 msgid "Create a Debian package for it" msgstr "" #. type: itemize #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 msgid "Install build-dependencies so that you can build the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 msgid "Get a basic working package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 msgid "Finish filling \\texttt{debian/control} and other files" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1234 packaging-tutorial.tex:1440 msgid "Enjoy" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 packaging-tutorial.tex:1544 msgid "Practical session 3: packaging a Java library" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "Take a quick look at some documentation about Java packaging:\\\\" msgstr "" #. type: itemize #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "\\url{http://wiki.debian.org/Java}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "\\url{http://wiki.debian.org/Java/Packaging}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "\\url{http://www.debian.org/doc/packaging-manuals/java-policy/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "\\url{http://pkg-java.alioth.debian.org/docs/tutorial.html}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "" "Paper and slides from a Debconf10 talk about javahelper:\\\\ {\\footnotesize " "\\url{http://pkg-java.alioth.debian.org/docs/debconf10-javahelper-paper.pdf}\\\\ " "\\url{http://pkg-java.alioth.debian.org/docs/debconf10-javahelper-slides.pdf}}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "Download IRClib from \\url{http://moepii.sourceforge.net/}" msgstr "" #. type: enumerate #: packaging-tutorial.tex:1259 packaging-tutorial.tex:1544 msgid "Package it" msgstr "" #. type: section{#2} #: packaging-tutorial.tex:1261 msgid "Answers to practical sessions" msgstr "" #. type: center #: packaging-tutorial.tex:1267 msgid "\\LARGE Answers to" msgstr "" #. type: center #: packaging-tutorial.tex:1267 msgid "[0.5em] practical sessions" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1296 msgid "Practical session: modifying the grep package" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1323 msgid "Fetching the source" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "" "Use dget to download the \\texttt{.dsc} file:\\\\ {\\small \\texttt{dget " "http://cdn.debian.net/debian/pool/main/g/grep/grep\\_2.6.3-3.dsc}}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "" "According to \\texttt{http://packages.qa.debian.org/grep}, \\texttt{grep} " "version 2.6.3-3 is currently in \\textsl{stable} (\\textsl{squeeze}). If you " "have \\texttt{deb-src} lines for \\textsl{squeeze} in your " "\\texttt{/etc/apt/sources.list}, you can use:\\\\ \\texttt{apt-get source " "grep=2.6.3-3}\\\\ or \\texttt{apt-get source grep/stable}\\\\ or, if you " "feel lucky: \\texttt{apt-get source grep}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "The \\texttt{grep} source package is composed of three files:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "\\texttt{grep\\_2.6.3-3.dsc}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "\\texttt{grep\\_2.6.3-3.debian.tar.bz2}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "\\texttt{grep\\_2.6.3.orig.tar.bz2}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "This is typical of the \"3.0 (quilt)\" format." msgstr "" #. type: itemize #: packaging-tutorial.tex:1323 msgid "" "If needed, uncompress the source with\\\\ \\texttt{dpkg-source -x " "grep\\_2.6.3-3.dsc}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1342 msgid "Looking around and building the package" msgstr "" #. type: itemize #: packaging-tutorial.tex:1342 msgid "" "According to \\texttt{debian/control}, this package only generates one " "binary package, named \\texttt{grep}." msgstr "" #. type: itemize #: packaging-tutorial.tex:1342 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:1351 msgid "Use \\texttt{apt-get build-dep grep} to fetch the build-dependencies" msgstr "" #. type: itemize #: packaging-tutorial.tex:1351 msgid "" "Then \\texttt{debuild} or \\texttt{dpkg-buildpackage -us -uc} (Takes about 1 " "min)" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1355 msgid "Editing the changelog" msgstr "" #. type: itemize #: packaging-tutorial.tex:1372 msgid "" "\\texttt{debian/changelog} is a text file. You could edit it and add a new " "entry manually." msgstr "" #. type: itemize #: packaging-tutorial.tex:1372 msgid "Or you can use \\texttt{dch -i}, which will add an entry and open the editor" msgstr "" #. type: itemize #: packaging-tutorial.tex:1372 msgid "" "The name and email can be defined using the \\texttt{DEBFULLNAME} and " "\\texttt{DEBEMAIL} environment variables" msgstr "" #. type: itemize #: packaging-tutorial.tex:1372 msgid "After that, rebuild the package: a new version of the package is built" msgstr "" #. type: itemize #: packaging-tutorial.tex:1372 msgid "" "Package versioning is detailed in section 5.6.12 of the Debian policy\\\\ " "\\url{http://www.debian.org/doc/debian-policy/ch-controlfields.html}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1376 msgid "Disabling Perl regexp support and rebuilding" msgstr "" #. type: itemize #: packaging-tutorial.tex:1392 msgid "" "Check with \\texttt{./configure -{}-help}: the option to disable Perl regexp " "is \\texttt{-{}-disable-perl-regexp}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1392 msgid "Edit \\texttt{debian/rules} and find the \\texttt{./configure} line" msgstr "" #. type: itemize #: packaging-tutorial.tex:1392 msgid "Add \\texttt{-{}-disable-perl-regexp}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1392 msgid "Rebuild with \\texttt{debuild} or \\texttt{dpkg-buildpackage -us -uc}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1396 msgid "Comparing and testing the packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Compare the binary packages: \\texttt{debdiff ../*changes}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "Compare the source packages: \\texttt{debdiff ../*dsc}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "" "Install the newly built package: \\texttt{debi}\\\\ Or \\texttt{dpkg -i " "../grep\\_<TAB>}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "\\texttt{grep -P foo} no longer works!" msgstr "" #. type: frame #: packaging-tutorial.tex:1422 msgid "Or not: reinstall the previous version of the package:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1422 msgid "" "\\texttt{apt-get install -{}-reinstall grep=2.6.3-3} \\textit{(= previous " "version)}" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1469 packaging-tutorial.tex:1565 msgid "Step by step\\ldots" msgstr "" #. type: itemize #: packaging-tutorial.tex:1469 msgid "\\texttt{wget http://ftp.gnu.org/gnu/gnujump/1.0.6/gnujump-1.0.6.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1469 msgid "\\texttt{mv gnujump-1.0.6.tar.gz gnujump\\_1.0.6.orig.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1469 msgid "\\texttt{tar xf gnujump\\_1.0.6.orig.tar.gz}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1469 msgid "\\texttt{cd gnujump-1.0.6/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1469 msgid "\\texttt{dh\\_make}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1469 msgid "Type of package: single binary (for now)" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1469 #, no-wrap msgid "" "[basicstyle=\\ttfamily\\small]\n" "gnujump-1.0.6$ 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:1496 msgid "Step by step \\ldots (2)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1496 msgid "" "Look at \\texttt{debian/changelog}, \\texttt{debian/rules}, " "\\texttt{debian/control}\\\\ (auto-filled by \\textbf{dh\\_make})" msgstr "" #. type: itemize #: packaging-tutorial.tex:1496 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:1496 msgid "Try to build the package as-is (thanks to \\textbf{dh} magic)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1496 msgid "And add build-dependencies, until it builds" msgstr "" #. type: itemize #: packaging-tutorial.tex:1496 msgid "" "Hint: use \\texttt{apt-cache search} and \\texttt{apt-file} to find the " "packages" msgstr "" #. type: itemize #: packaging-tutorial.tex:1496 msgid "Example:" msgstr "" #. type: lstlisting #: packaging-tutorial.tex:1496 #, 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:1496 msgid "$\\rightarrow$ Add \\textbf{libsdl1.2-dev} to Build-Depends and install it." msgstr "" #. type: itemize #: packaging-tutorial.tex:1496 msgid "Better: use \\textbf{pbuilder} to build in a clean environment" msgstr "" #. type: frame{#2} #: packaging-tutorial.tex:1519 msgid "Step by step \\ldots (3)" msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "" "After installing \\texttt{libsdl1.2-dev, libsdl-image1.2-dev, " "libsdl-mixer1.2-dev}, the package builds fine." msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "Use \\texttt{debc} to list the content of the generated package." msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "Use \\texttt{debi} to install it and test it." msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "" "Fill in \\texttt{debian/control} using " "\\url{http://www.debian.org/doc/debian-policy/ch-controlfields.html}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "Test the package with \\texttt{lintian}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "Remove the files that you don't need in \\texttt{debian/}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "Compare your package with the one already packaged in Debian:" msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 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:1519 msgid "" "It installs a .desktop file (for the GNOME/KDE menus) and also integrates " "into the Debian menu" msgstr "" #. type: itemize #: packaging-tutorial.tex:1519 msgid "It fixes a few minor problems using patches" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "\\texttt{apt-get install javahelper}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "Create a basic source package: \\texttt{jh\\_makepkg}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "Library" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "None" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "Default Free compiler/runtime" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "Look at and fix \\texttt{debian/*}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "\\texttt{dpkg-buildpackage -us -uc} or \\texttt{debuild}" msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "\\texttt{lintian}, \\texttt{debc}, etc." msgstr "" #. type: itemize #: packaging-tutorial.tex:1565 msgid "Compare your result with the \\texttt{libirclib-java} source package" msgstr ""
Attachment:
signature.asc
Description: Digital signature