/usr/share/doc/ubuntu-packaging-guide-html-de/fixing-a-bug.html is in ubuntu-packaging-guide-html-de 0.3.5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>4. Einen Bug in Ubuntu beheben — Ubuntu Packaging Guide</title>
<link rel="shortcut icon" href="./_static/images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="./_static/reset.css" type="text/css" />
<link rel="stylesheet" href="./_static/960.css" type="text/css" />
<link rel="stylesheet" href="./_static/base.css" type="text/css" />
<link rel="stylesheet" href="./_static/home.css" type="text/css" />
<link rel="stylesheet" href="./_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="./_static/guide.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '0.3.5',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="./_static/jquery.js"></script>
<script type="text/javascript" src="./_static/underscore.js"></script>
<script type="text/javascript" src="./_static/doctools.js"></script>
<script type="text/javascript" src="./_static/translations.js"></script>
<script type="text/javascript" src="./_static/main.js"></script>
<link rel="top" title="Ubuntu Packaging Guide" href="./index.html" />
<link rel="next" title="5. Tutorial: Einen Bug in Ubuntu beheben" href="fixing-a-bug-example.html" />
<link rel="prev" title="3. Verteilte Ubuntu Entwicklung — Einleitung" href="udd-intro.html" />
</head>
<body class="home">
<a name="top"></a>
<div class="header-navigation">
<div>
<nav role="navigation">
<ul>
<li class="page_item current_page_item"><a title="Inhalt" href="index.html">Inhalt</a>
<li>
<form id="form-search" method="get" action="search.html">
<fieldset>
<input id="input-search" type="text" name="q" value="Search" />
</fieldset>
</form>
</li>
</ul>
</nav>
<a class="logo-ubuntu" href="http://packaging.ubuntu.com/">
<img src="./_static/images/logo-ubuntu.png" width="119" height="27" alt="Ubuntu logo" />
</a>
<a href="http://packaging.ubuntu.com/"><h2>Packaging Guide</h2></a>
</div>
</div>
<div class="header-content">
<div class="clearfix">
<div class="header-navigation-secondary">
<div>
<nav role="navigation">
<ul class="clearfix">
<li class="page_item"><a style="margin-right: 10px"
href="fixing-a-bug-example.html" title="5. Tutorial: Einen Bug in Ubuntu beheben"
accesskey="N">weiter</a></li>
<li class="page_item"><a
href="udd-intro.html" title="3. Verteilte Ubuntu Entwicklung — Einleitung"
accesskey="P">zurück</a></li>
<li class="page_item"><a class="sub-nav-item" href="index.html">Ubuntu Packaging Guide »</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="content" class="body container_12">
<div class="grid_12">
<!--<section id="main-section">-->
<div class="grid_9 alpha">
<div class="section" id="fixing-a-bug-in-ubuntu">
<h1>4. Einen Bug in Ubuntu beheben<a class="headerlink" href="#fixing-a-bug-in-ubuntu" title="Permalink zu dieser Überschrift">¶</a></h1>
<div class="section" id="introduction">
<h2>4.1. Einleitung<a class="headerlink" href="#introduction" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Wenn Du die Anweisungen in <a class="reference internal" href="getting-set-up.html"><em>Sich für Ubuntu-Entwicklung einrichten</em></a> befolgt hast, solltest Du bereit sein loszulegen.</p>
<img alt="./_images/fixing-a-bug.png" src="./_images/fixing-a-bug.png" />
<p>Wie man in der obigen Abbildung sehen kann, gibt es wenig Überraschungen im Prozess der Fehlerbehebung: man findet ein Problem, lädt den Quellcode herunter, arbeitet an einer Lösung, lädt die notwendigen Änderungen nach Launchpad und bittet um einen Merge. In diesem Handbuch werden wir alle nötigen Schritte nacheinander behandeln.</p>
</div>
<div class="section" id="finding-the-problem">
<h2>4.2. Das Problem finden<a class="headerlink" href="#finding-the-problem" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Es gibt viele verschiedene Wege Dinge zu finden an denen man arbeiten kann. Es kann ein Fehlerbericht sein, der einen selbst betrifft (was das Testen vereinfacht), oder ein Problem, das man woanders beobachtet hat, vielleicht auch in einem Fehlerbericht.</p>
<p>In Harvest <<a class="reference external" href="http://harvest.ubuntu.com/">http://harvest.ubuntu.com/</a>>`_ haben wir eine Übersicht über vielfältige “TODO-Listen” die mit Ubuntu-Entwicklung zusammenhängen. Harvest listet Fehler, die in Debian oder Upstream-Projekten behoben wurden, es listet kleine Bugs (wir nennen sie ‘bitesize’) und so weiter. Schau es Dir an und finde Deinen ersten Fehler an dem Du arbeitest.</p>
</div>
<div class="section" id="figuring-out-what-to-fix">
<span id="what-to-fix"></span><h2>4.3. Herausfinden, was repariert werden muss<a class="headerlink" href="#figuring-out-what-to-fix" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Wenn Du das Quellpaket, das den Fehler beinhaltet nicht kennst, aber Dir der Pfad zu dem betroffenen Programm auf Deinem System bekannt ist, dann kannst Du das Quellpaket selbst ermitteln, an dem Du arbeiten musst.</p>
<p>Sagen wird, du hast einen Fehler in Tomboy gefunden, einer Merkzettel-Anwendung für den Desktop. Tomboy kann mit dem Befehl <tt class="docutils literal"><span class="pre">/usr/bin/tomboy</span></tt> aus der Kommandozeile gestartet werden. Um das Binärpaket zu finden, welches die Anwendung enthält, verwende folgenden Befehl:</p>
<div class="highlight-python"><div class="highlight"><pre>$ apt-file find /usr/bin/tomboy
</pre></div>
</div>
<p>Dies gibt aus:</p>
<div class="highlight-python"><div class="highlight"><pre>tomboy: /usr/bin/tomboy
</pre></div>
</div>
<p>Beachte dass der Teil vor dem Doppelpunkt der Binärpaketname ist. Es ist häufig der Fall, dass das Quellpaket und Binärpaket unterschiedliche Bezeichnungen besietzen. Das tritt am häufigsten auf, wenn ein einzelnes Quellpaket dazu verwendet wird mehrere verschiedene Binärpakete zu erstellen. Um das Quellpaket eines bestimmten Binärpaketes zu finden, tippe:</p>
<div class="highlight-python"><div class="highlight"><pre>$ apt-cache showsrc tomboy | grep ^Package:
Package: tomboy
$ apt-cache showsrc python-vigra | grep ^Package:
Package: libvigraimpex
</pre></div>
</div>
<p><tt class="docutils literal"><span class="pre">apt-cache</span></tt> ist Teil der Standardinstallation von Ubuntu.</p>
</div>
<div class="section" id="getting-the-code">
<h2>4.4. Den Quellcode herunterladen<a class="headerlink" href="#getting-the-code" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Wenn Du einmal das Quellpaket kennst mit dem Du arbeitest, wirst Du eine Kopie des Codes auf deinem System brauchen, um es von Fehlern zu befreien. In der Ubuntu Entwicklungsverteilung wird dazu <a class="reference internal" href="udd-getting-the-source.html#branching"><em>das Quellpaket abgezweigt</em></a>. Launchpad verwaltet alle Zweige der Quellpakete in Ubuntu.</p>
<p>Wenn du erst einmal eine lokale Kopie des Quellpakets hast, kannst du den Fehler untersuchen, ihn beheben und die Lösung wieder zu Launchpad in Form eines Bazaar-Zweiges hochladen. Wenn du mit deiner Lösung zufrieden bist, kannst du einen <a class="reference internal" href="udd-sponsorship.html#merge-proposal"><em>Vereinigungsvorschlag einreichen</em></a>, der andere Ubuntu-Entwicker auffordert deine Änderung zu überprüfen und anzunehmen. Wenn sie mit deinen Änderungen einverstanden sind, wird ein Ubuntu-Entwickler die neue Version des Pakets zu Ubuntu hochladen, sodass jeder von deiner exzellenten Lösung profitieren kann - und du ein bisschen Ansehen einheimst. Du bist jetzt schon auf dem Weg ein Ubuntu-Entwicker zu werden!</p>
<p>Wir werden in den folgenden Abschnitten genauer beschreiben, wie der Code abgezweigt werden kann, deine Fehlerbehebung vorangebracht wird und eine Anfrage für eine Durchsicht gestellt wird.</p>
</div>
<div class="section" id="work-on-a-fix">
<span id="working-on-a-fix"></span><h2>4.5. Arbeiten an einer Fehlerbehebung<a class="headerlink" href="#work-on-a-fix" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Es wurden ganze Bücher darüber verfasst wie man Fehler findet, sie behebt, testet, usw. Wenn du ein Anfänger im Programmieren bist, versuche zuerst einfache Fehler wie beispielsweise in der Rechtschreibung zu beheben. Versuche die Änderungen so minimal wie möglich zu halten und dokumentiere deine Änderungen und Annahmen übersichtlich.</p>
<p>Bevor du dich daran machst, einen Fehler selbst du behen, solltest du sicherstellen, dass nicht schon ein anderer diesen Fehler behoben hat oder gerade daran arbeitet. Anlaufstellen dafür sind:</p>
<ul class="simple">
<li><p class="first">Upstream (und Debian) Fehlererfassung (offene and geschlossene Fehler),</p>
</li>
<li><p class="first">Die Upstream-Revisionseinträge (oder eine neue Veröffentlichung) haben möglicherweise das Problem behoben,</p>
</li>
<li><p class="first">Fehler oder Paket-Uploads von Debian oder einer anderen Distribution</p>
</li>
</ul>
<p>Du willst nun einen Patch entwickeln, der die Fehlerbehebung enthält. Der Befehl <tt class="docutils literal"><span class="pre">edit-patch</span></tt> ist eine einfache Möglichkeit um einen Patch zu einem Paket hinzuzufügen. Führe aus:</p>
<div class="highlight-python"><div class="highlight"><pre>$ edit-patch 99-new-patch
</pre></div>
</div>
<p>Das wird die Paketierung in temporäres Verzeichnis kopieren. Du kannst nun die Dateien mit einem Texteditor bearbeiten oder die Patches vom Upstream anwenden, zum Beispiel:</p>
<div class="highlight-python"><div class="highlight"><pre>$ patch -p1 < ../bugfix.patch
</pre></div>
</div>
<p>Nachdem du die Datei bearbeitet hast, schreibe <tt class="docutils literal"><span class="pre">exit</span></tt> oder drücke <tt class="docutils literal"><span class="pre">Strg+D</span></tt> um die zeitweilige Umgebung zu verlassen. Der neue Patch wird dann unter <tt class="docutils literal"><span class="pre">debian/patches</span></tt> eingefügt.</p>
</div>
<div class="section" id="testing-the-fix">
<h2>4.6. Die Lösung testen<a class="headerlink" href="#testing-the-fix" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Um ein Testpaket mit Deinen Änderungen zu bauen, durchlaufe diese Kommandos:</p>
<div class="highlight-python"><div class="highlight"><pre>$ bzr builddeb -- -S -us -uc
$ pbuilder-dist <release> build ../<package>_<version>.dsc
</pre></div>
</div>
<p>Dies wird ein Quellpaket aus dem Inhalt des Zweiges (<tt class="docutils literal"><span class="pre">-us</span> <span class="pre">-uc</span></tt> bewirkt, dass die Signierung des Pakets übersprungen wird) und <tt class="docutils literal"><span class="pre">pbuilder-dist</span></tt> wird die Pakete aus dem Quellcode bauen, für den <tt class="docutils literal"><span class="pre">release</span></tt>, den Du ausgewählt hast..</p>
<p>Ist die Erstellung einmal gelungen, installieren Sie das Paket von <tt class="docutils literal"><span class="pre">~/pbuilder/<Veröffentlichung>_result/</span></tt> (mithilfe von <tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">dpkg</span> <span class="pre">-i</span> <span class="pre"><Paket>_<Version>.deb</span></tt>). Dann führen Sie einen Test durch, ob der Fehler behoben wurde.</p>
<div class="section" id="documenting-the-fix">
<h3>4.6.1. Die Lösung dokumentieren<a class="headerlink" href="#documenting-the-fix" title="Permalink zu dieser Überschrift">¶</a></h3>
<p>Es ist sehr wichtig Deine Änderung ausreichend zu dokumentieren, so dass Entwickler, die sich den Code zukünftig ansehen, nicht raten müssen, was Deine Gründe und Annahmen gewesen sind. Jedes Debian- und Ubuntu-Quellpaket beinhaltet die Datei <tt class="docutils literal"><span class="pre">debian/changelog</span></tt>, wo die Änderungen jedes hochgeladenen Paketes dokumentiert werden.</p>
<p>Die einfachste Möglichkeit um zu updaten ist den Befehl auszuführen:</p>
<div class="highlight-python"><div class="highlight"><pre>$ dch -i
</pre></div>
</div>
<p>Dies wird eine Vorlage für einen Changelog-Eintrag für Dich erstellen, wo Du die Lücken ausfüllen kannst. Ein Beispiel dafür wäre etwa:</p>
<div class="highlight-python"><div class="highlight"><pre>specialpackage (1.2-3ubuntu4) trusty; urgency=low
* debian/control: updated description to include frobnicator (LP: #123456)
-- Emma Adams <emma.adams@isp.com> Sat, 17 Jul 2010 02:53:39 +0200
</pre></div>
</div>
<p><tt class="docutils literal"><span class="pre">dch</span></tt> sollte die erste und letzte Zeile von solch einem Änderungsprotokolleintrag bereits für dich ausgefüllt haben. Zeile 1 enthält den Quellpaketnamen, die Versionsnummer, die Ubuntu-Zielversion und die Dringlichkeit (welche meistens »low« ist). Die letzte Zeile enthält immer den Namen des Autors, E-Mail Adresse und Zeitstempel (im Format <span class="target" id="index-2"></span><a class="rfc reference external" href="http://tools.ietf.org/html/rfc5322.html"><strong>RFC 5322</strong></a>) der Änderung.</p>
<p>Wenn dieses Hindernis beseitigt ist, können wir uns auf den eigentlichen Eintrag des Änderungsprotokolles selbst konzentrieren: Es ist sehr wichtig festzuhalten:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p class="first">wo die Änderungen durchgeführt wurden</p>
</li>
<li><p class="first">was geändert wurde</p>
</li>
<li><p class="first">wo die Diskussion zu dieser Änderung zu finden ist</p>
</li>
</ol>
</div></blockquote>
<p>In unserem (sehr dürftigen) Beispiel ist der letzte Punkt mit <tt class="docutils literal"><span class="pre">(LP:</span> <span class="pre">#123456)</span></tt> abgedeckt, was sich auf den Launchpad-Fehler 123456 bezieht. Fehlerberichte, Beiträge zu Mailing-Listen oder Spezifikationen sind allgemein gute Informationen, die als Rationale für eine Änderung angegeben werden können. Zusätzlich wird im Falle der Verwendung von <tt class="docutils literal"><span class="pre">LP:</span> <span class="pre">#<Nummer></span></tt> der angegebene Fehler automatisch geschlossen, wenn das Paket zu Ubuntu hochgeladen wird.</p>
</div>
<div class="section" id="committing-the-fix">
<h3>4.6.2. Den Fix hochladen<a class="headerlink" href="#committing-the-fix" title="Permalink zu dieser Überschrift">¶</a></h3>
<p>Wenn der Eintrag im changelog geschrieben und gespeichert ist, kannst Du einfach folgendes starten:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">debcommit</span>
</pre></div>
</div>
<p>und die Änderung wird mit deinem Changelog-Eintrag als Commit-Nachricht lokal committet.</p>
<p>Um das ganze als Zweignamen zu Launchpad hoch zu laden (push), musst Du Dich an die folgende Struktur halten.</p>
<div class="highlight-python"><div class="highlight"><pre>lp:~<yourlpid>/ubuntu/<release>/<package>/<branchname>
</pre></div>
</div>
<p>Dies könnte zum Beispiel sein:</p>
<div class="highlight-python"><div class="highlight"><pre>lp:~emmaadams/ubuntu/trusty/specialpackage/fix-for-123456
</pre></div>
</div>
<p>Also wenn Du einfach folgendes startest:</p>
<div class="highlight-python"><div class="highlight"><pre>bzr push lp:~emmaadams/ubuntu/trusty/specialpackage/fix-for-123456
bzr lp-propose
</pre></div>
</div>
<p>sollte alles erledigt sein. Der Befehl push befördert es auf Launchpad und das nächste Kommando öffnet die Launchpad-Webseite mit dem Remotezweig in deinem Browser. Nach dem Klick auf den Link “(+) Propose for merging” wird die Änderung überprüft und in Ubuntu eingefügt.</p>
<p>Unser Artikel ueber <a class="reference internal" href="udd-sponsorship.html"><em>seeking sponsorship</em></a> geht mehr ins Detail darüber, wie man Feedback zu den eingestellten Änderungen erhält.</p>
<p>Wenn deine Arbeit an einem Entwicklungszweig Fehler in einer stabilen Version oder eine Sicherheitslücke behebt, ist es wert einen Blick auf den Artikel doc:<cite>Sicherheits- und Stabilitäts-Updates<./security-and-stable-release-updates></cite> zu werfen.</p>
</div>
</div>
</div>
<div class="divide"></div>
</div>
<div id="sidebar" class="grid_3 omega">
<div class="container-tweet">
<h3>Inhalt</h3>
<div class="toc">
<ul>
<li><a class="reference internal" href="#">4. Einen Bug in Ubuntu beheben</a><ul>
<li><a class="reference internal" href="#introduction">4.1. Einleitung</a></li>
<li><a class="reference internal" href="#finding-the-problem">4.2. Das Problem finden</a></li>
<li><a class="reference internal" href="#figuring-out-what-to-fix">4.3. Herausfinden, was repariert werden muss</a></li>
<li><a class="reference internal" href="#getting-the-code">4.4. Den Quellcode herunterladen</a></li>
<li><a class="reference internal" href="#work-on-a-fix">4.5. Arbeiten an einer Fehlerbehebung</a></li>
<li><a class="reference internal" href="#testing-the-fix">4.6. Die Lösung testen</a><ul>
<li><a class="reference internal" href="#documenting-the-fix">4.6.1. Die Lösung dokumentieren</a></li>
<li><a class="reference internal" href="#committing-the-fix">4.6.2. Den Fix hochladen</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="browse-guide">
<h3>Browse The Guide:</h3>
<ul>
<li class="prev">
<a href="udd-intro.html"
title="Vorheriges Thema: 3. Verteilte Ubuntu Entwicklung — Einleitung">Go Previous</a>
</li>
<li class="center">
<a title="Back to Index" href="index.html">Index Guide</a>
</li>
<li class="next">
<a href="fixing-a-bug-example.html"
title="Nächstes Thema: 5. Tutorial: Einen Bug in Ubuntu beheben">Go Next</a>
</li>
</ul>
<span>Diese Seite:</span> <a href="./_sources/fixing-a-bug.txt"
rel="nofollow">Quelltext anzeigen</a>
</div>
</div>
<div id="back_top"><a href="#top">Back to Top</a></div>
</div>
<!--</section>-->
</div>
</div>
<div class="shadow"></div>
<footer>
<div>
Version: 0.3.5.
<a href="https://bugs.launchpad.net/ubuntu-packaging-guide">Report bugs</a> or
<a href="https://code.launchpad.net/~ubuntu-packaging-guide-team/ubuntu-packaging-guide/trunk">grab the source code</a> from Launchpad.
Mit <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2 erstellt.
<br />
© Copyright 2010-2014 , Ubuntu Developers, Creative Commons Attribution-ShareAlike 3.0.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
<img alt="Creative Commons License" style="border-width:0"
src="./_static/images/cc-by-sa.png" /></a>
<br />
<a href="http://people.ubuntu.com/~mitya57/ubuntu-packaging-guide-readme.html#translating">Help translate</a> or
<a href="./_static/translators.html">view the list of translators</a>.
</div>
</footer>
</body>
</html>
|