5. Die Herausforderung als Ports-Maintainer

Dieser Abschnitt erklärt, warum Ports betreut werden müssen, und beschreibt die Pflichten eines Ports-Maintainers.

5.1. Warum müssen Ports betreut werden?

Einen Port zu erstellen ist eine einmalige Sache. Sicherzustellen, dass ein Port aktuell ist und auch in Zukunft funktioniert, erfordert hingegen eine laufende Betreuung und einen nicht zu unterschätzenden Arbeitsaufwand. Maintainer sind Personen, die einen Teil ihrer Zeit dazu verwenden, einen Port für andere FreeBSD-Anwender aktuell und einfach installierbar zu halten.

Der wichtigste Grund für die Betreuung von Ports ist der Wunsch, der FreeBSD-Community die neueste und beste Drittanbieter-Software zur Verfügung zu stellen. Eine zusätzliche Herausforderung ist die Aufrechterhaltung der Funktionalität einzelner Ports innerhalb der sich verändernden Ports-Sammlung.

Als Ports-Maintainer werden Sie folgende Herausforderungen meistern:

5.2. Aufgaben eines Maintainers

5.2.1. Halten Sie Ihre Ports aktuell

Dieser Abschnitt bietet einen kurzen Überblick zu diesem Thema. Ausführliche Informationen zur Aktualisierung von Ports finden Sie im Porter-Handbuch.

  1. Achten Sie auf Aktualisierungen

    Überwachen Sie Ihr Programm auf neue Versionen der Software, Aktualisierungen und Security-Fixes. Ankündigungen in Mailinglisten oder auf Nachrichtenseiten im Internet sind dabei sehr hilfreich. Manchmal werden Sie von Benutzern gefragt werden, wann Ihr Port eine Aktualisierung bekommt. Wenn Sie mit anderen Dingen beschäftigt sind oder aus sonstigen Gründen keine Aktualisierung bereitstellen können, fragen Sie den Benutzer doch einfach, ob er Ihnen bei der Aktualisierung helfen möchte.

    Es kann auch vorkommen, dass Sie eine automatisch generierte E-Mail vom FreeBSD Ports Version Check bekommen, die Sie darüber informiert, dass eine aktuellere Version des Distfiles Ihres Ports verfügbar ist. Weitere Informationen über dieses System (inklusive einer Erklärung, wie Sie derartige E-Mails in Zukunft vermeiden können) finden Sie ebenfalls in einer solchen Nachricht.

  2. Aufnehmen von Änderungen

    Wenn verfügbar, integrieren Sie die Veränderungen in den Port. Sie müssen in der Lage sein, einen Patch zwischen dem alten und dem neuen Port zu generieren.

  3. Nachprüfung und Test

    Überprüfen und testen Sie ihre Änderungen gründlich:

    • Kompilieren, installieren und testen Sie ihren Port auf so vielen Plattformen und Architekturen, wie Sie können. Es kommt sehr häufig vor, dass ein Port auf einem Entwicklungszweig oder einer Plattform funktioniert, auf einer anderen Plattform aber Fehler erzeugt.

    • Stellen Sie sicher, dass die Abhängigkeiten ihres Ports vollständig sind. Die empfohlene Vorgehensweise dafür ist, dass Sie ihre eigenen Ports in einer Tinderbox kompilieren. Weitere Informationen zu diesem Thema finden Sie im Abschnitt Ressourcen dieses Artikels.

    • Stellen Sie sicher, dass die Liste der zu installierenden Dateien und Verzeichnisse aktuell ist.

    • Überprüfen Sie ihren Port mit portlint(1). Sehen Sie sich dazu den Abschnitt Ressourcen an. Dieser enthält wichtige Informationen zum Einsatz von portlint.

    • Achten Sie darauf, dass Änderungen an Ihrem Port nicht den Bau eines anderen Ports verhindern. Ist dies der Fall, besprechen Sie die von Ihnen durchgeführten Änderungen mit den Maintainern der betroffenen Ports. Dies ist besonders dann wichtig, wenn Ihre Aktualisierung die “Shared Library”-Version ändert; in diesem Fall werden Sie für die abhängigen Ports einen PORTREVISION-Bump benötigen, damit diese von automatisierten Werkzeugen wie portmaster oder portupgrade(1) auf dem neuesten Stand gehalten werden.

  4. Änderungen einreichen

    Reichen Sie ihre Aktualisierungen mit einem PR ein, welcher die Änderungen erklärt und einen Patch enthält, der die Änderungen zwischen dem Original und Ihrer aktualisierten Version umfasst. Lesen Sie bitte zuerst den Artikel Writing FreeBSD Problem Reports, der das korrekte Einreichen von Problemberichten beschreibt.

    Anmerkung: Bitte schicken Sie kein shar(1)-Archiv des gesamten Ports. Benutzen Sie stattdessen diff(1) -ruN. Auf diese Art und Weise können Committer viel einfacher erkennen, welche Änderungen vorgenommen wurden. Das Porter-Handbuch enthält viele nützliche Informationen zum Upgrading eines Ports.

  5. Warten

    Es kann nur sehr wenig Zeit vergehen, bis sich ein Committer mit Ihrem PR befasst. Es kann aber auch mehrere Wochen dauern, bis eine Reaktion erfolgt - haben Sie bitte Geduld.

  6. Feedback geben

    Wenn ein Committer Probleme in Ihren Änderungen entdeckt, wird er Sie darüber informieren. Eine schnelle Reaktion Ihrerseits ist hilfreich, um Ihren PR rasch bearbeiten zu können. Außerdem hilft es Ihnen, den Faden nicht zu verlieren, wenn Sie versuchen, aufgetretene Probleme zu lösen.

  7. Und zuletzt...

    Ihre Änderungen werden übermittelt und im Anschluss daran wird Ihr Port aktualisiert. Der betreffende PR wird danach vom Committer geschlossen. Herzlichen Glückwunsch, Sie haben es geschafft!

5.2.2. Stellen Sie sicher, dass Ihre Ports den Buildprozess weiterhin erfolgreich durchlaufen

Dieser Abschnitt beschreibt, wie Sie Probleme entdecken und beheben, die ihre Ports daran hindern, den Buildprozess erfolgreich zu durchlaufen.

FreeBSD garantiert nur für die -STABLE-Zweige, dass die Ports-Sammlung korrekt funktioniert. Sie sollten 7-STABLE oder 8-STABLE benutzen, wobei der letztere Zweig bevorzugt wird. Theoretisch sollte es ausreichen, das aktuelle “Stable Release” des jeweiligen STABLE-Zweigs einzusetzen (da die ABIs in der Regel nicht geändert werden), es empfiehlt sich aber, dem jeweiligen STABLE-Zweig zu folgen.

Seit die Mehrheit von FreeBSD-Installationen auf PC-kompatiblen Maschinen arbeitet (i386-Architektur) erwarten wir, dass Ihr Port auf dieser Architektur funktioniert. Ebenfalls bevorzugen wir es, wenn Ports nativ auf der amd64-Architektur funktionieren. Es ist durchaus in Ordnung, um Hilfe zu fragen, wenn Sie keine solche Maschine besitzen.

Anmerkung: Häufige Fehler beim Umgang mit nicht-i386 Maschinen entstehen, weil Programmierer ür Instanzen und Pointer ints verwendeten, oder weil der relativ simple gcc-Compiler genutzt wird. Immer mehr Programmautoren überarbeiten ihren Code, um diese Fehler zu beseitigen — wenn der Programmautor seinen Code allerdings nicht aktiv betreut, müssen Sie dies eventuell selbst in die Hand nehmen.

Sie sollten die folgende Liste durchgehen, um sicherzustellen, dass Ihr Port gebaut werden kann:

  1. Achten Sie auf Build-Fehler

    Überprüfen Sie regelmäßig den Ports Building Cluster pointyhat und den Distfiles-Scanner, um festzustellen, ob einer Ihrer Ports nicht gebaut oder die Distfiles nicht geladen werden können (lesen Sie den Abschnitt Ressourcen dieses Artikels für weitere Informationen zu diesen Systemen). Fehlerberichte kommen eventuell auch von anderen Benutzern oder als automatisierte Meldungen per E-Mail.

  2. Sammeln Sie Informationen

    Wenn Sie ein Problem entdecken, benötigen Sie als Erstes Informationen, die Ihnen dabei helfen, dieses Problem zu beheben. Build-Fehler, die von pointyhat gemeinsam mit Logdateien verschickt werden, zeigen Ihnen, an welcher Stelle der Fehler auftritt. Wenn Ihnen ein Fehler von einem anderen Benutzer mitgeteilt wird, fragen Sie nach, ob er bereit ist, ihnen Informationen zukommen zu lassen, die eventuell bei der Diagnose des Problems helfen können, wie z.B.:

    • Build-Logs.

    • Die Werkzeuge und Optionen, mit denen ein Port gebaut wurde (inklusive der Optionen in /etc/make.conf).

    • Eine Liste installierter Pakete auf dem System kann mit pkg_info(1) erstellt werden.

    • Die FreeBSD-Version, welche benutzt wird, kann mit uname(1) -a ermittelt werden.

    • Wann die Ports-Sammlung das letzte Mal aktualisiert wurde.

    • Wann die INDEX-Datei zuletzt aktualisiert wurde.

  3. Suchen und finden Sie eine Lösung

    Leider gibt es keinen allgemein gültigen Weg, dies zu tun. Denken Sie daran: Wenn Probleme auftauchen bitten Sie einfach jemanden um Hilfe! Ein guter Anfang ist die Mailingliste FreeBSD ports. Auch die Entwickler der Software selbst sind oft sehr hilfreich.

  4. Änderungen übermitteln

    Genau wie beim Aktualisieren eines Ports sollten Änderungen integriert, geprüft und getestet werden. Reichen Sie Ihre Arbeit als PR ein und geben Sie Feedback, falls dies notwendig ist.

  5. Patches an Programmautoren senden

    Manchmal müssen Sie Patches erstellen, um einen Port unter FreeBSD zum Laufen zu bekommen. Einige (aber nicht alle) Programmautoren nehmen diese Patches in Ihren Code für das nächste Release auf. Dies kann den Benutzern anderer BSD-Systeme helfen und einiges an unnötiger Mehrarbeit ersparen. Bitte betrachten Sie das Versenden von verwertbaren Patches an die Autoren als ein Gebot der Höflichkeit.

5.2.3. Ermitteln Sie Bug-Reports und PRs, die Ihre Ports betreffen

FreeBSD-spezifische Bugs werden meistens durch falsche Annahmen über Build- und Laufzeitumgebungen, die nicht zu FreeBSD passen, verursacht. Derartige Probleme zu entdecken ist oft sehr schwierig, glücklicherweise sind derartige Probleme aber nicht sehr häufig.

Folgende Schritte sind notwendig, um sicherzustellen, dass ihr Port weiterhin wie gewünscht funktioniert:

  1. Antworten Sie auf Bug-Reports

    Bugs können Ihnen als E-Mail durch die GNATS Problem Report database zugestellt werden, Sie können Ihnen aber auch direkt von Benutzern gemeldet werden.

    Sie sollten innerhalb von 14 Tagen auf PRs und andere Berichte antworten. Versuchen Sie schnellstmöglich zu antworten, selbst wenn Sie nur mitteilen können, dass Sie noch etwas Zeit brauchen, bevor Sie den PR bearbeiten können.

    Sollten Sie nicht innerhalb von 14 Tagen geantwortet haben, darf jeder Committer via maintainer-timeout auf einen PR, den Sie nicht beantwortet haben, reagieren.

  2. Sammeln Sie Informationen

    Wenn mit dem Bug-Report nicht auch gleichzeitig eine Lösung übermittelt wird, müssen Sie zuerst die zum Beheben des Problems nötigen Informationen sammeln.

    Wenn der Fehler reproduzierbar ist, können Sie die meisten Informationen selbst sammeln. Wenn nicht, bitten Sie die Person, die den Fehler gefunden hat, diese Informationen für Sie zu sammeln:

    • Eine genaue Beschreibung dessen, was Er/Sie getan hat, den erwarteten Programmverlauf und den tatsächlichen Ablauf.

    • Eine Kopie der Eingabedaten, die den Fehler auslösen.

    • Informationen über das System, auf dem der Port gebaut und ausgeführt wird, etwa die Liste der installierten Pakete sowie die Ausgabe von env(1).

    • Core dumps.

    • Stack traces.

  3. Schließen Sie falsche Reports aus

    Einige Fehlerberichte sind eventuell falsch. Es kommt vor, dass ein Programm falsch benutzt wird. Weiterhin können installierten Pakete veraltet sein und müssten einfach nur aktualisiert werden. Manchmal ist ein gemeldeter Fehler auch nicht FreeBSD-spezifisch. In diesem Fall melden Sie den Fehler den derzeitigen Entwicklern der Software. Wenn Sie in der Lage sind, den Fehler zu beheben, können Sie dies natürlich trotzdem tun und den Entwicklern Ihren Patch zukommen lassen.

  4. Lösungen finden

    Bei Build-Fehlern werden Sie eine Lösung finden müssen. Denken Sie daran zu fragen, wenn Sie nicht weiterkommen!

  5. Änderungen einreichen oder annehmen

    Genau so wie bei der Aktualisierung eines Ports sollten Sie alle Änderungen zuvor analysieren und testen, um Sie danach als neuen PR (oder als Folgebericht (follow-up), falls ein PR zu diesem Problem bereits existiert) einzureichen. Falls ein anderer Anwender Änderungen für einen PR eingereicht hat, können Sie einen Folgebericht erstellen, mit dem Sie die vorgeschlagenen Änderungen akzeptieren oder (mit einer Begründung) ablehnen.

5.2.4. Support leisten

Teilaufgabe eines Maintainers ist es, Support zu leisten — nicht den Hauptsupport für die Software — aber für seine Ports und FreeBSD-spezifische Schlampereien und Probleme. Benutzer kontaktieren Sie vielleicht wegen Fragen, Anregungen, Problemen und Patches. Die meiste Zeit werden sich derartige Mitteilungen spezifisch auf FreeBSD beziehen.

Manchmal müssen Sie eventuell ihre diplomatischen Fähigkeiten auffrischen und Benutzer freundlich an die korrekten Anlaufstellen für den Hauptsupport verweisen. Nur selten werden Sie auf eine Person treffen, die Sie fragt, warum die RPMs nicht aktuell sind oder wie Sie die Software unter Foo Linux zum Laufen bringen. Ergreifen Sie die Gelegenheit und berichten Sie, dass Ihr Port aktuell ist (natürlich nur, wenn er es auch tatsächlich ist) und schlagen Sie vor, einmal FreeBSD auszuprobieren.

Wenn Sie Glück haben, werden Benutzer und Entwickler gelegentlich daran denken, dass Sie eine sehr beschäftigte Person sind, deren Zeit nicht unerschöpflich, sondern kostbar ist, und werden vielleicht ein Teil Ihrer Arbeit für Sie übernehmen. Beispielsweise könnten sie:

  • Einen PR einreichen oder Ihnen Patches schicken.

  • Einen vorhandenen PR untersuchen und eventuell einen Patch dazu erstellen.

  • Ihnen Änderungen für Ihre Ports zusenden.

In diesem Fall ist ihre Hauptaufgabe zeitnahes Antworten. Der Timeout für nicht ansprechbare Maintainer beträgt auch hier wieder 14 Tage. Nach dieser Periode können Änderungen ohne ihre Prüfung eingereicht werden. Diese Personen haben sich die Arbeit gemacht, etwas für Sie zu übernehmen, versuchen Sie daher, möglichst rasch zu antworten. Danach überprüfen, akzeptieren, verändern oder diskutieren Sie diese Änderungen mit den betroffenen Personen so schnell wie möglich.

Wenn Sie vermitteln können, dass Sie deren Arbeit zu schätzen wissen (und das sollten Sie), dann werden Sie eine bessere Chance haben, dass diese Personen ihnen auch in Zukunft etwas Arbeit abnehmen. :-)

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.