This file is indexed.

/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 &mdash; 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  &raquo;</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 &lt;<a class="reference external" href="http://harvest.ubuntu.com/">http://harvest.ubuntu.com/</a>&gt;`_ haben wir eine Übersicht über vielfältige &#8220;TODO-Listen&#8221; die mit Ubuntu-Entwicklung zusammenhängen. Harvest listet Fehler, die in Debian oder Upstream-Projekten behoben wurden, es listet kleine Bugs (wir nennen sie &#8216;bitesize&#8217;) 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 &lt; ../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 &lt;release&gt; build ../&lt;package&gt;_&lt;version&gt;.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/&lt;Veröffentlichung&gt;_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">&lt;Paket&gt;_&lt;Version&gt;.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 &lt;emma.adams@isp.com&gt;  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">#&lt;Nummer&gt;</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:~&lt;yourlpid&gt;/ubuntu/&lt;release&gt;/&lt;package&gt;/&lt;branchname&gt;
</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 &#8220;(+) Propose for merging&#8221; 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&lt;./security-and-stable-release-updates&gt;</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 />
        &copy; 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>