Das FreeBSD Porter-Handbuch

The FreeBSD German Documentation Project


Inhaltsverzeichnis
1. Einführung
2. Einen neuen Port erstellen
3. Einen neuen Port erstellen
3.1. Das Makefile schreiben
3.2. Die Beschreibungsdateien erstellen
3.2.1. pkg-descr
3.2.2. pkg-plist
3.3. Die Checksummendatei erzeugen
3.4. Den Port testen
3.5. Ihren Port mit portlint überprüfen
3.6. Den neuen Port einreichen
4. Einen Port in aller Ruhe erstellen
4.1. Die Funktionsweise
4.2. Den originalen Quelltext besorgen
4.3. Den Port bearbeiten
4.4. Fehlerbehebung (Patches)
4.5. Konfigurieren
4.6. Handhabung von Benutzereingaben
5. Die Konfiguration des Makefile
5.1. Der originale Quelltext
5.2. Bezeichnungen
5.2.1. PORTNAME und PORTVERSION
5.2.2. PORTREVISION und PORTEPOCH
5.2.3. PKGNAMEPREFIX und PKGNAMESUFFIX
5.2.4. LATEST_LINK
5.2.5. Namensregeln für Pakete
5.3. Kategorisierung
5.3.1. CATEGORIES
5.3.2. Aktuelle Liste der Kategorien
5.3.3. Wählen der richtigen Kategorie
5.3.4. Eine neue Kategorie vorschlagen
5.3.5. Vorschlagen einer Neuorganisation aller Kategorien
5.4. Die Distributionsdateien
5.4.1. DISTVERSION/DISTNAME
5.4.2. MASTER_SITES
5.4.3. EXTRACT_SUFX
5.4.4. DISTFILES
5.4.5. EXTRACT_ONLY
5.4.6. PATCHFILES
5.4.7. Verschiedene Distributionsdateien oder Patches von verschiedenen Seiten und Verzeichnissen (MASTER_SITES:n)
5.4.8. DIST_SUBDIR
5.4.9. ALWAYS_KEEP_DISTFILES
5.5. MAINTAINER
5.6. COMMENT
5.7. Abhängigkeiten (dependencies)
5.7.1. LIB_DEPENDS
5.7.2. RUN_DEPENDS
5.7.3. BUILD_DEPENDS
5.7.4. FETCH_DEPENDS
5.7.5. EXTRACT_DEPENDS
5.7.6. PATCH_DEPENDS
5.7.7. USE_*
5.7.8. Minimale Version einer Abhängigkeit
5.7.9. Anmerkungen zu Abhängigkeiten
5.7.10. Zirkuläre Abhängigkeiten sind fatal
5.8. MASTERDIR
5.9. Manualpages
5.10. Info-Dateien
5.11. Makefile-Optionen
5.11.1. KNOBS (Einstellungen)
5.11.2. OPTIONS
5.11.3. Automatische Aktivierung von Funktionen
5.12. Die Festlegung des Arbeitsverzeichnisses
5.12.1. WRKSRC
5.12.2. NO_WRKSUBDIR
5.13. Konfliktbehandlung
5.13.1. CONFLICTS_INSTALL
5.13.2. CONFLICTS_BUILD
5.13.3. CONFLICTS
5.14. Installation von Dateien
5.14.1. INSTALL_* macros
5.14.2. Zerlegen von Binärdateien und Shared-Libraries
5.14.3. Installation eines ganzen Verzeichnisbaums inklusive Dateien
5.14.4. Installation zusätzlicher Dokumentation
5.14.5. Unterverzeichnisse mit PREFIX
6. Besonderheiten
6.1. Shared-Libraries
6.2. Ports mit beschränkter Verbreitung
6.2.1. NO_PACKAGE
6.2.2. NO_CDROM
6.2.3. NOFETCHFILES
6.2.4. RESTRICTED
6.2.5. RESTRICTED_FILES
6.3. Build-Mechanismen
6.3.1. Paralleles Bauen von Ports
6.3.2. make, gmake und imake
6.3.3. configure Skript
6.3.4. Benutzung von scons
6.4. Benutzung von GNU autotools
6.4.1. Einführung
6.4.2. libtool
6.4.3. libltdl
6.4.4. autoconf und autoheader
6.4.5. automake und aclocal
6.5. Benutzung von GNU gettext
6.5.1. Grundlegende Benutzung
6.5.2. Optionale Benutzung
6.5.3. Behandlung von Message-Catalog-Verzeichnissen
6.6. Die Benutzung von perl
6.7. Benutzung von X11
6.7.1. X.Org-Komponenten
6.7.2. Ports, die Motif benötigen
6.7.3. X11 Schriftarten
6.7.4. Erzeugen eines künstlichen DISPLAY durch Xvfb
6.7.5. Desktop-Einträge
6.8. Benutzung von GNOME
6.9. Benutzung von Qt
6.9.1. Ports, die Qt benötigen
6.9.2. Komponentenauswahl (nur bei Qt 4.x)
6.9.3. Zusätzliche Besonderheiten
6.10. Benutzung von KDE
6.10.1. Variablen-Definitionen (KDE 3)
6.10.2. Variablen-Definitionen (KDE 4)
6.11. Benutzung von Java
6.11.1. Variablen-Definitionen
6.11.2. Kompilieren mit Ant
6.11.3. Optimales Verfahren
6.12. Webanwendungen, Apache und PHP
6.12.1. Apache
6.12.2. Webanwendungen
6.12.3. PHP
6.12.4. PEAR Module
6.13. Python benutzen
6.14. Benutzung von Tcl/Tk
6.15. Emacs benutzen
6.16. Ruby benutzen
6.17. SDL verwenden
6.18. wxWidgets verwenden
6.18.1. Einführung
6.18.2. Auswahl der Version
6.18.3. Komponentenauswahl
6.18.4. Unicode
6.18.5. Feststellen der installierten Version
6.18.6. Vordefinierte Variablen
6.18.7. Verarbeitung in bsd.port.pre.mk
6.18.8. Weitere configure-Argumente
6.19. Verwendung von Lua
6.19.1. Einführung
6.19.2. Auswahl der Version
6.19.3. Komponentenauswahl
6.19.4. Feststellen der installierten Version
6.19.5. Vordefinierte Variablen
6.19.6. Verarbeitung in bsd.port.pre.mk
6.20. Xfce verwenden
6.21. Mozilla verwenden
6.22. Benutzung von Datenbanken
6.23. Starten und Anhalten von Diensten (rc Skripten)
6.23.1. Anhalten und Deinstallieren von Diensten
6.24. Hinzufügen von Benutzern und Gruppen
6.25. Von Kernelquellen abhängige Ports
7. Fortgeschrittene pkg-plist-Methoden
7.1. Änderungen an pkg-plist mit Hilfe von make-Variablen
7.2. Leere Verzeichnisse
7.2.1. Aufräumen leerer Verzeichnisse
7.2.2. Erstellen leerer Verzeichnisse
7.3. Konfigurationsdateien
7.4. Dynamische oder statische Paketliste
7.5. Automatisiertes Erstellen von Paketlisten
8. Die pkg-* Dateien
8.1. pkg-message
8.2. pkg-install
8.3. pkg-deinstall
8.4. pkg-req
8.5. Ändern der Namen der pkg-* Dateien
8.6. Nutzung von SUB_FILES und SUB_LIST
9. Ihren Port testen
9.1. make describe ausführen
9.2. Portlint
9.3. Port Tools
9.4. PREFIX und DESTDIR
9.5. Die Tinderbox
10. Einen existierenden Port aktualisieren
10.1. Patches mit CVS erstellen
10.2. Die Dateien UPDATING und MOVED
11. Sicherheit der Ports
11.1. Warum Sicherheit so wichtig ist
11.2. Sicherheitslücken schliessen
11.3. Die Community informiert halten
11.3.1. Die VuXML-Datenbank
11.3.2. Eine kurze Einführung in VuXML
11.3.3. Ihre Änderungen an der VuXML-Datenbank testen
12. Was man machen respektive vermeiden sollte
12.1. Einführung
12.2. WRKDIR
12.3. WRKDIRPREFIX
12.4. Unterschiedliche Betriebssysteme und Betriebssystemversionen
12.5. __FreeBSD_version Werte
12.6. Etwas hinter die bsd.port.mk-Anweisung schreiben
12.7. Benutzen Sie die exec-Anweisung in Wrapper-Skripten
12.8. Aufgaben vernünftig lösen
12.9. Berücksichtigen Sie sowohl CC als auch CXX
12.10. Berücksichtigen Sie CFLAGS
12.11. Threading-Bibliotheken
12.12. Rückmeldungen
12.13. README.html
12.14. Einen Port durch BROKEN, FORBIDDEN oder IGNORE als nicht installierbar markieren
12.14.1. Variablen
12.14.2. Anmerkungen zur Implementierung
12.15. Kennzeichnen eines Ports zur Entfernung durch DEPRECATED oder EXPIRATION_DATE
12.16. Vermeiden Sie den Gebrauch des .error-Konstruktes
12.17. Verwendung von sysctl
12.18. Erneutes Ausliefern von Distfiles
12.19. Verschiedenes
13. Beispiel eines Makefile
14. Auf dem Laufenden bleiben
14.1. FreshPorts
14.2. Die Webschnittstelle zum Quelltext-Repository
14.3. Die FreeBSD Ports-Mailingliste
14.4. Der Cluster zum Bauen von FreeBSD-Ports auf pointyhat.FreeBSD.org
14.5. Der FreeBSD Ports-Distfile-Scanner
14.6. Das FreeBSD Ports-Monitoring-System
Tabellenverzeichnis
5-1. Beliebte magic MASTER_SITES-Makros
5-2. Die USE_*-Varibalen
5-3. Häufige WITH_* und WITHOUT_*-Variablen
6-1. Port-Variablen im Zusammenhang mit gmake
6-2. Variablen für Ports, die configure benutzen
6-3. Variablen für Ports, die scons benutzen
6-4. Variablen für Ports, die perl benutzen
6-5. Variablen für Ports, die X benutzen
6-6. Variablen bei Abhängigkeit von einzelnen Teilen von X11
6-7. Variablen für Ports, die Qt benötigen
6-8. Zusätzliche Variablen für Ports, die Qt 4.xi benutzen
6-9. Verfügbare Qt4-Bibliothekskomponenten
6-10. Verfügbare Qt4-Tool-Komponenten
6-11. Verfügbare Qt4-Plugin-Komponenten
6-12. Variablen für Ports, die KDE 3 benutzen
6-13. Verfügbare KDE 4-Komponenten
6-14. Variablen, die von Ports, die Java benutzen, gesetzt werden müssen
6-15. Bereitgestellte Variablen für Ports, die Java benutzen
6-16. Konstanten, die für Ports, welche Java benutzen, definiert sind
6-17. Variablen für Ports, die Apache verwenden
6-18. Nützliche Variablen für Ports von Apache-Modulen
6-19. Variablen für Ports, die PHP verwenden
6-20. Nützliche Variablen für Ports, die Python verwenden
6-21. Äußerst nützliche Variablen für Ports, die Tcl/Tk benutzen
6-22. Nützliche Variablen für Ports, die Ruby verwenden
6-23. Ausgewählte read-only-Variablen für Ports, die Ruby verwenden
6-24. Variablen, um die wxWidgets-Version festzulegen
6-25. Verfügbare wxWidgets-Versionen
6-26. Spezifikationen der wxWidgets-Versionen
6-27. Variablen zur Festlegung der bevorzugten wxWidgets-Version
6-28. Verfügbare wxWidgets-Komponenten
6-29. Verfügbare Typen von wxWidgets-Abhängigkeiten
6-30. Standardtypen der wxWidgets-Abhängigkeiten
6-31. Variablen, um Unicode in den wxWidgets-Versionen auszuwählen
6-32. Vordefinierte Variablen für Ports, die wxWidgets verwenden
6-33. Zulässige Werte für WX_CONF_ARGS
6-34. Variablen, um die Lua-Version festzulegen
6-35. Verfügbare Lua-Versionen
6-36. Spezifikationen der Lua-Versionen
6-37. Variablen zur Festlegung der bevorzugten Lua-Version
6-38. Verfügbare Lua-Komponenten
6-39. Verfügbare Typen von Lua-Abhängigkeiten
6-40. Standardtypen für Lua-Abhängigkeiten
6-41. Vordefinierte Variablen für Ports, die Lua verwenden
6-42. Variablen für Ports, die Mozilla verwenden
6-43. Variablen für Ports, die Datenbanken benutzen
10-1. Von cvs update verwendete Präfixe
12-1. __FreeBSD_version-Werte
Beispiele
5-1. Vereinfachtes Beispiel für den Gebrauch von MASTER_SITES:n mit einer Datei pro Webseite
5-2. Vereinfachtes Beispiel für den Gebrauch von MASTER_SITES:n mit mehr als einer Datei pro Webseite
5-3. Ausführliches Beispiel von MASTER_SITES:n in MASTER_SITE_SUBDIR
5-4. Ausführliches Beispiel von MASTER_SITES:n mit Komma-Operator, mehreren Dateien, mehreren Webseiten und mehreren Unterverzeichnissen
5-5. Ausführliches Beispiel von MASTER_SITES:n mit MASTER_SITE_SOURCEFORGE
5-6. Vereinfachte Nutzung von MASTER_SITES:n mit PATCH_SITES.
5-7. Nutzung von ALWAYS_KEEP_DISTFILES.
5-8. Einfache Anwendung von OPTIONS
5-9. Veraltete Anwendung von OPTIONS
5-10. Falsche Behandlung einer Option
5-11. Korrekte Behandlung einer Option
6-1. Beispiel für USE_XORG
6-2. Benutzung von X11-bezogenen Variablen in einem Port
6-3. Qt4-Komponenten auswählen
6-4. USE_KDE4-Beispiel
6-5. Beispiel eines Makefiles für eine PEAR Klasse
6-6. Auswahl von wxWidgets-Komponenten
6-7. Installierte wxWidgets-Versionen und –Komponenten feststellen
6-8. Verwendung von wxWidgets-Variablen in Kommandos
6-9. Auswahl der Lua-Version
6-10. Auswahl von Lua-Komponenten
6-11. Installierte Lua-Versionen und– Komponenten feststellen
6-12. Einem Port mitteilen, in welchem Verzeichnis Lua liegt
6-13. Verwendung von Lua-Variablen in Kommandos
12-1. Wie vermeidet man die Verwendung von .error

Fragen zum FreeBSD Ports-System richten Sie bitte an <[email protected]>, Fragen zu diesem Dokument hingegen an <[email protected]>.