5.3. Kategorisierung
Zurück | Kapitel 5. Die Konfiguration des Makefile | Weiter

## 5.3. Kategorisierung

### 5.3.1. `CATEGORIES`

Wenn ein Paket erzeugt wird, dann wird es unter `/usr/ports/packages/All` abgelegt und von einem oder mehreren Unterverzeichnissen werden auf `/usr/ports/packages` Links erstellt. Die Namen dieser Unterverzeichnisse werden durch die Variable `CATEGORIES` festgelegt. Dies geschieht, um dem Nutzer zu helfen, eine große Zahl von Paketen auf einer FTP-Webseite oder einer CD/DVD zu durchsuchen. Bitte werfen Sie einen Blick auf die Aktuelle Liste der Kategorien und suchen Sie die beste Kategorie für Ihren Port aus.

Diese Liste legt auch fest, an welcher Stelle in der Ports-Sammlung der Port eingefügt wird. Falls Sie mehrere Kategorien angeben wird angenommen, dass die Dateien des Ports im Unterverzeichnis mit dem Namen der ersten angegebenen Kategorie liegen. Schauen Sie bitte unten für weitere Informationen darüber, wie man die richtige Kategorie bestimmt.

### 5.3.2. Aktuelle Liste der Kategorien

Hier ist die aktuelle Liste der Kategorien. Die mit einem Asterisk (`*`) bezeichneten sind virtuelle Kategorien, also solche, welche über kein eigenes Unterverzeichnis in der Ports-Sammlung verfügen. Sie werden nur als Sekundärkategorien benutzt und sind nur für Suchzwecke eingerichtet worden.

### Anmerkung:

Für nicht-virtuelle Kategorien finden Sie eine einzeilige Beschreibung in der Variable `COMMENT` im `Makefile` des jeweiligen Unterverzeichnisses.

Kategorie | Beschreibung | Anmerkung
--- | --- | ---
`accessibility` | Ports für behinderte Menschen. |
`afterstep*` | Ports für den AfterStep Window Manager. |
`arabic` | Arabische Sprachunterstützung. |
`archivers` | Archivierungswerkzeuge. |
`astro` | Ports für Astronomie. |
`audio` | Sound-Unterstützung. |
`benchmarks` | Benchmarking-Werkzeuge. |
`biology` | Software für Biologie. |
`cad` | CAD-Werkzeuge. |
`chinese` | Chinesische Sprachunterstützung. |
`comms` | Kommunikationsprogramme. | Hauptsächlich Software für serielle Schnittstellen.
`converters` | Zeichensatz-Konverter. |
`databases` | Datenbanken. |
`deskutils` | Dinge, die vor der Erfindung des Computers auf dem Schreibtisch waren. |
`devel` | Entwicklungs-Werkzeuge. | Legen Sie keine Bibliotheken hier ab, nur weil es Bibliotheken sind, es sei denn, sie gehören wirklich nirgendwo anders hin.
`dns` | DNS-bezogene Software. |
`docs*` | Meta-Ports für die FreeBSD-Dokumentation. |
`editors` | allgemeine Editoren. | Spezielle Editoren gehören in Ihre jeweilige Kategorie, (z.B. gehört ein mathematischer Formeleditor in `math`).
`elisp*` | Emacs-lisp-Ports. |
`emulators` | Emulatoren für andere Betriebssysteme. | Terminal-Emulatoren gehören nicht hierher; X-basierende gehören zu `x11` und text-basierende zu `comms` oder `misc`, abhängig von deren genauer Funktionalität.
`finance` | Finanz-Software und ähnliches. |
`french` | Französische Sprachunterstützung. |
`ftp` | FTP Client- und Server-Werkzeuge. | Falls Ihr Port sowohl FTP als auch HTTP unterstützt, stellen Sie ihn in `ftp` mit der Zweitkategorie `www`.
`games` | Spiele. |
`geography*` | geografische Software. |
`german` | Deutsche Sprachunterstützung. |
`gnome*` | Ports für GNOME |
`gnustep*` | Software für GNUstep. |
`graphics` | grafische Werkzeuge. |
`hamradio*` | Software für Amateurfunk. |
`haskell*` | Software für die Haskell-Programmiersprache. |
`hebrew` | Hebräische Sprachunterstützung. |
`hungarian` | Ungarische Sprachunterstützung. |
`ipv6*` | IPv6-bezogene Software. |
`irc` | Internet Relay Chat (IRC)-Werkzeuge. |
`japanese` | Japanische Sprachunterstützung. |
`java` | Software für die Java™-Programmiersprache. | Die `java`-Kategorie sollte nicht die Einzige für einen Port sein mit Ausnahme der direkt nur mit der Programmiersprache zusammenhängenden Applikationen. Porter sollten `java` nicht als Hauptkategorie eines Ports wählen.
`kde*` | Ports für das K Desktop Environment (KDE)-Projekt. |
`kld*` | Kernelmodule. |
`korean` | Koreanische Sprachunterstützung. |
`lang` | Programmiersprachen. |
`linux*` | Linux-Applikationen und -Werkzeuge. |
`lisp*` | Software für die Lisp-Programmiersprache. |
`mail` | Mail-Software. |
`math` | Numerische Berechnungen und andere mathematische Werkzeuge. |
`mbone*` | MBone-Applikationen. |
`misc` | Verschiedene Werkzeuge. | Hauptsächlich Werkzeuge, die nicht anderswo hingehören. Versuchen Sie, falls irgend möglich, eine bessere Kategorie für Ihren Port zu finden als `misc`, weil Ports hier leicht untergehen.
`multimedia` | Multimedia-Software. |
`net` | Verschiedene Netzwerk-Software. |
`net-im` | Instant Messaging-Software. |
`net-mgmt` | Netzwerk-Management-Software. |
`net-p2p` | Peer to peer-Netzwerkprogramme. |
`news` | USENET News-Software. |
`palm` | Software für Palm™. |
`parallel*` | Applikationen für paralleles Rechnen. |
`pear*` | Ports für das Pear PHP-Framework. |
`perl5*` | Ports, welche Perl Version 5 benötigen. |
`plan9*` | Verschiedene Programme von Plan9. |
`polish` | Polnische Sprachunterstützung. |
`ports-mgmt` | Hilfsprogramme für das Installieren und Entwickeln von FreeBSD Ports und Paketen. |
`portuguese` | Portugiesische Sprachunterstützung. |
`print` | Drucker-Software. | Desktop Veröffentlichungs-Werkzeuge (DTP, Betrachter etc.) gehören auch hierher.
`python*` | Software für Python. |
`ruby*` | Software für Ruby. |
`rubygems*` | Ports für RubyGems-Pakete. |
`russian` | Russische Sprachunterstützung. |
`scheme*` | Software für die Scheme-Programmiersprache. |
`science` | Wissenschaftliche Programme, die in keine andere Kategorie passen wie z.B. `astro`, `biology` und `math`. |
`security` | Security-Werkzeuge. |
`shells` | Shells. |
`spanish*` | Spanische Sprachunterstützung. |
`sysutils` | System-Werkzeuge. |
`tcl*` | Ports, welche Tcl benötigen. |
`textproc` | Textverarbeitungsprogramme. | Dies beinhaltet nicht DTP-Werkzeuge, diese gehören in `print`.
`tk*` | Ports, welche Tk benötigen. |
`ukrainian` | Ukrainische Sprachunterstützung. |
`vietnamese` | Vietnamesische Sprachunterstützung. |
`windowmaker*` | Ports für den WindowMaker Window-Manager. |
`www` | Software für das World Wide Web (WWW). | HTML-Werkzeuge gehören auch hierher.
`x11` | X-Window-System und dergleichen. | Diese Kategorie ist nur für Software, welche direkt X unterstützt. Fügen Sie keine normalen X-Applikationen hinzu. Die meisten davon gehören in eine andere `x11-*`-Kategorie (siehe unten). Falls Ihr Port eine X-Applikation ist, dann definieren Sie bitte `USE_XLIB` (impliziert durch `USE_IMAKE`) und fügen ihn der entsprechenden Kategorie hinzu.
`x11-clocks` | X11-Uhren. |
`x11-drivers` | X11-Treiber. |
`x11-fm` | X11-Dateimanager. |
`x11-fonts` | X11-Schriftarten und Werkzeuge. |
`x11-servers` | X11-Server. |
`x11-themes` | X11-Themes. |
`x11-toolkits` | X11-Toolkits. |
`x11-wm` | X11-Window-Manager. |
`xfce*` | Ports in Zusammenhang mit Xfce. |
`zope*` | Zope-Unterstützung. |

### 5.3.3. Wählen der richtigen Kategorie

Da viele der Kategorien sich überlappen, müssen Sie oft festlegen, welches die primäre Kategorie Ihres Ports ist. Hierzu gibt es einige Regeln, welche diese Auswahl bestimmen. Hier ist die Liste der Regeln mit abnehmender Wichtigkeit:

- Die erste (primäre) Kategorie muss eine physische (keine virtuelle, siehe oben) sein. Dies ist notwendig damit Pakete erstellt werden können. Die nachfolgenden Kategorien können wahllos virtuelle oder physische Kategorien sein.

- Sprachspezifische Kategorien kommen immer zuerst. Wenn Ihr Port z.B. Japanische X11-Schriftarten installiert, dann muss Ihre `CATEGORIES`-Zeile `japanese x11-fonts` enthalten.

- Spezifische Kategorien werden vor weniger spezifischen Kategorien aufgelistet. Ein HTML-Editor sollte z.B. als `www editors` aufgeführt werden und nicht umgekehrt. Genauso sollten Sie keinen Port unter `net` aufführen, wenn er zu `irc`, `mail`, `news`, `security` oder `www` passt, da `net` in diesen Kategorien bereits implizit eingeschlossen ist.

- `x11` wird nur als sekundäre Kategorie benutzt, wenn die primäre Kategorie eine sprachspezifische ist. Keinesfalls sollten Sie `x11` in die Kategorie-Zeile einer X-Applikation setzen.

- Emacs modes gehören in die gleiche Kategorie wie die vom jeweiligen mode unterstützte Applikation und nicht in `editors`. Ein Emacs mode z.B. für das Editieren von Quelltext einer bestimmten Programmiersprache gehört zur Kategorie `lang`.

- Für Ports, die vom Benutzer ladbare Kernelmodule installieren, sollte die virtuelle Kategorie `kld` in die `CATEGORIES`-Zeile aufgenommen werden.

- `misc` sollte nicht zusammen mit irgendeiner anderen nicht-virtuellen Kategorie auftreten. Falls Sie `misc` mit einer anderen Kategorie in `CATEGORIES` haben bedeutet dies, dass Sie gefahrlos `misc` streichen und die andere Kategorie alleine verwenden können!

- Falls Ihr Port wirklich in keine andere Kategorie passt, verwenden Sie bitte `misc`.

Falls Sie sich über die Kategorie im Unklaren sind, hinterlassen Sie bitte einen Kommentar in Ihrem per send-pr(1) eingereichten Bericht, damit wir diese Frage vor dem Import diskutieren können. Falls Sie ein Committer sind, schicken Sie bitte eine Nachricht an FreeBSD ports, damit die Frage im Vorhinein erörtert werden kann. Neue Ports werden zu häufig falsch kategorisiert und werden sofort wieder verschoben. Das bläht das Master Source Repository unnötig auf.

### 5.3.4. Eine neue Kategorie vorschlagen

Da die Ports-Sammlung über viele Jahre gewachsen ist, wurden viele neue Kategorien hinzugefügt. Neue Kategorien können virtuell (ohne eigenes Unterverzeichnis in der Ports-Sammlung) oder physisch sein. Der nachfolgende Text führt einige Punkte auf, welche bei der Neueinführung einer physischen Kategorie beachtet werden müssen, damit Sie dies bei einem eventuellen Vorschlag Ihrerseits berücksichtigen können.

Unsere bestehende Maxime ist die Vermeidung der Neuanlage von physischen Kategorien, solange nicht eine große Zahl von Ports zugeordnet werden können oder falls ihr nicht Ports zugehören würden, welche eine logisch abgegrenzte Gruppe von limitiertem öffentlichem Interesse zugehören würden (zum Beispiel neue Sprachkategorien) oder vorzugsweise beides.

Die Erklärung dafür ist, dass eine Neuanlage einer physischen Kategorie einen erheblichen Arbeitsaufwand sowohl für die Committer als auch diejenigen Nutzer bedeutet, welche die Änderungen der Ports-Sammlung nachvollziehen. Zusätzlich verursachen Vorschläge für neue Kategorien oftmals Kontroversen (natürlich deswegen, weil es keinen klaren Konsens darüber gibt, welche Kategorie als „zu groß“ betrachtet werden muss noch ob sich bestimmte Kategorien zur einfachen Suche eignen (und wie viele Kategorien überhaupt ideal wären) und so weiter).

Hier ist das Prozedere:

1. Schlagen Sie die neue Kategorie auf FreeBSD ports vor. Sie sollten eine detaillierte Begründung für die neue Kategorie beifügen einschließlich einer Erklärung, warum Sie meinen, die existierenden Kategorien seien nicht ausreichend. Zeigen Sie außerdem eine Liste der zu verschiebenden Ports (falls neue Ports in GNATS auf ihren commit warten, die in diese Kategorie passen würden. Listen Sie diese bitte auch mit auf). Sind Sie der Maintainer oder Einreicher dieser Ports, erwähnen Sie es bitte. Es verleiht Ihrem Vorschlag mehr Gewicht.

2. Nehmen Sie an der Diskussion teil.

3. Falls es Unterstützung für Ihren Vorschlag geben sollte, reichen Sie bitte einen PR ein, welcher die Begründung und die Liste der betroffenen Ports enthält, die verschoben werden müssen. Idealerweise sollte der PR Patches für Folgendes enthalten:

   - `Makefile`s für die neuen Ports nach dem Repocopy

   - `Makefile` für die neue Kategorie

   - `Makefile` für die alten Kategorien der betroffenen Ports

   - `Makefile`s für Ports, welche von den alten Ports abhängen

   - Für zusätzliches Ansehen sorgen Sie, wenn Sie die anderen Dateien, die geändert werden müssen, beifügen wie in der Direktive des Committer's Guide beschrieben.

4. Da es die Ports-Infrastruktur beeinflusst und nicht nur die Durchführung von Repocopies und möglicherweise sogar Regressionstests auf dem Build Cluster durchgeführt werden müssen, sollte der PR dem Ports Management Team Ports Management Team `<portmgr@FreeBSD.org>` zugeordnet werden.

5. Sobald der PR bestätigt wurde muss ein Committer den Rest der Prozedur durchführen, welche im Committers Guide beschrieben ist.

Das Vorschlagen einer neuen virtuellen Kategorie ist ähnlich, aber wesentlich weniger aufwendig, weil keine Ports verschoben werden müssen. In diesem Falle müssen nur die Patches an den PR beigefügt werden, welche die neue Kategorie zur Variable `CATEGORIES` der betroffenen Ports hinzufügen.

### 5.3.5. Vorschlagen einer Neuorganisation aller Kategorien

Von Zeit zu Zeit schlägt jemand eine komplette Neuorganisation aller Ports, entweder mit einer zweistufigen Struktur oder irgendeiner Art von Schlüsselwörtern, vor. Bis heute wurde keiner dieser Vorschläge umgesetzt, weil sie zwar einfach zu machen sind, aber der Aufwand zur Umsetzung und Reorganisation der kompletten Ports-Sammlung schlichtweg mörderisch wäre. Bitte lesen Sie die Geschichte dieser Vorschläge in den Archiven der Mailinglisten nach, bevor Sie diese Ideen nochmals unterbreiten. Zudem sollten Sie gewappnet sein, dass man Sie auffordert, einen arbeitsfähigen Prototyp vorzulegen.

Zurück | Nach oben | Weiter
5.2. Bezeichnungen | Zum Anfang | 5.4. Die Distributionsdateien

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>.