diff --git a/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml b/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml index 399652b334..1d2c216f64 100644 --- a/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml @@ -1,1050 +1,1043 @@ Installieren von Anwendungen: Die Ports-Sammlung Neu geschrieben von &a.jim;, 22 November 1999. Ursprüngliche Version von verschiedenen Leuten. Übersetzt von &a.de.pierau, Juli 2000 Übersicht Die FreeBSD Ports-Sammlung erlaubt Ihnen das Übersetzen und Installieren einer Vielzahl von Anwendungen mit minimalem Aufwand. Ein Port ist gewöhnlich eine Gruppe von Gerüsten, die die minimalen Anpassungen enthalten, welche nötig sind, damit sich eine Anwendung unter FreeBSD übersetzen und installieren läßt. Trotz des ganzen Geredes von offenen Standards kann es eine verzwickte Angelegenheit werden, eine Anwednung unter verschiedenen UNIX Versionen zu übersetzen. Sie können zufrieden sein, wenn sich die Anwendung sauber übersetzen läßt, in die richtigen Verzeichnisse installiert und out-of-the-box fehlerfrei läuft. Dies wird aber sehr selten vorkommen. Die meiste Zeit werden Sie Modifizierungen vornehmen müssen, damit die Anwendung funktioniert. An diesem Punkt kommt die Ports-Sammlung zum Zuge. Die Grundidee hinter der Ports-Sammlung ist, all die verwirrenden Schritte zu eliminieren, welche nötig sind, damit alles richtig funktioniert, so daß die Installation einfach und schmerzlos ist. Mit der Ports-Sammlung ist die ganze harte Arbeit bereits für Sie getan und Sie brauchen zum Installieren eines Ports aus der Ports-Sammlung lediglich make install eingeben. Benutzen der Ports-Sammlung Die folgenden Abschnitte stellen die grundlegenden Anweisungen vor, um Anwendungen aus der Ports-Sammlung auf Ihren Rechner zu installieren oder zu löschen. Ports installieren Was ist mit einem Gerüst im Zusammenhang mit der Ports-Sammlung gemeint? In aller Kürze: ein Gerüst eines Ports ist ein minimaler Satz von Dateien, die für eine Anwendung benötigt werden, damit es sich unter FreeBSD sauber übersetzen und installieren läßt. Ein jeder Port beinhaltet: Eine Datei Makefile. Das Makefile enthält verschiedene Anweisungen, die spezifizieren, wie die Anwendung kompiliert werden und wo sie auf Ihrem System installiert werden - sollte. + sollte. - Ein Verzeichnis files. Dieses - Verzeichnis enthält eine Datei namens - md5. Der Name kommt vom MD5 - Algorithmus, welcher zur Ermittlung der Prüfsumme des - Portes benutzt wird. Eine Prüfsumme ist eine Zahl, - die durch Addition aller Daten einer Datei entsteht. - Ändert sich ein Zeichen in der Datei, so weicht die - Prüfsumme vom Original ab und eine Fehlermeldung - erscheint. Damit sind Sie in der Lage, die Unterschiede zu - bemerken und zu untersuchen. - - Dieses files Verzeichnis kann - noch andere Dateien enthalten, die vom Port benötigt - werden, aber nicht woanders in die Verzeichnis-Struktur - gehören. + Eine Datei distinfo. Diese + enthält Informationen, welche Dateien herunter geladen + werden müssen, sowie Prüfsummen, um sicher zu gehen, + daß diese Dateien während des Herunterladens nicht + beschädigt wurden. - Ein patches Verzeichnis. Hierin + Ein files Verzeichnis. Hierin liegen Patches, welche das Übersetzen und Installieren der Anwendung ermöglichen. Patches sind im Wesentlichen kleine Dateien, die Änderungen an speziellen Dateien - süzifizieren. Sie liegen als reiner Text vor und sagen - ungefähr: + spezifizieren. Sie liegen als reiner Text vor und sagen + ungefähr: Lösche Zeile 10 oder Ändere Zeile 26 zu .... Patches sind auch bekannt unter dem Namen diffs, weil Sie mit dem Programm diff erstellt werden. + + Dieses Verzeichnis kann auch noch andere Dateien enthalten, + welche zum Bauen des Portes benutzt werden. - Ein Verzeichnis pkg. Dieses - enthält normalerweise drei Dateien. Gelegentlich sind - es auch mehr, das hängt vom Port ab. Die meisten - Ports erfordern nur drei, und zwar diese: - - - - COMMENT. Eine einzeilige - Beschreibung der Anwendung. - - - - DESCR. Eine - ausführlichere oft mehrzeilige Beschreibung der - Anwendung. - - - - PLIST. Das ist eine Liste - aller Dateien, die durch diesen Port installiert - werden. Außerdem sind hier Informationen enthalten, - die bei der Deinstallation des Ports benötigt werden. - - - + Eine Datei pkg-comment. Eine + einzeilige Beschreibung der Anwendung. + + + Eine Datei pkg-descr. Eine + ausführlichere, oft mehrzeilige Beschreibung der + Anwendung. + + + + Eine Datei pkg-plist. Das ist eine + Liste aller Dateien, die durch diesen Port installiert werden. + Außerdem sind hier Informationen enthalten, die bei der + Deinstallation des Ports benötigt werden. + Nun haben Sie genug Hintergrund Informationen über die Ports-Sammlung und Sie können Ihren ersten Port installieren. Es gibt dazu zwei Möglichkeiten, beide werden im Folgenden erläutert. Bevor Sie damit beginnen, müssen Sie sich natürlich einen Port zum Installieren aussuchen. Sie können dazu mehrere Wege gehen, als einfachste Methode gibt es die - Liste der Port auf + Liste aller Ports auf dem FreeBSD Web-Server. Sie können dort Suchen oder in der Liste schmökern. Jeder Port enthält außerdem eine Beschreibung, so daß Sie sich vor der Entscheidung, welchen Port Sie installieren wollen, über den Port informieren können. Eine andere Methode bietet das Kommando whereis. Um whereis zu benutzen, geben Sie einfach whereis <Programm, daß Sie installieren möchten> ein. Wenn es auf Ihrem System gefunden wird, wird das wie im folgenden Beispiel anzeigt: &prompt.root; whereis xchat xchat: /usr/ports/irc/xchat &prompt.root; Dies sagt uns, daß xchat (ein IRC-Client) im Verzeichnis /usr/ports/irc/xchat gefunden werden kann. Ein noch anderer Weg, einen bestimmten Port zu finden ist, die eingebaute Suchfunktion der Ports-Sammlung zu benutzen. Dazu müssen Sie im Verzeichnis /usr/ports - sein. Darin geben Sie ein - make search key=Anwendungsname worin + sein. Darin geben Sie + make search key=Anwendungsname ein, worin Anwendungsname der Name der von Ihnen gesuchten Anwendung ist. Wenn Sie zum Beispiel nach xchat suchten: &prompt.root; cd /usr/ports &prompt.root; make search key=xchat Port: xchat-1.3.8 Path: /usr/ports/irc/xchat Info: An X11 IRC client using the GTK+ toolkit, and optionally, GNOME Maint: jim@FreeBSD.org Index: irc B-deps: XFree86-3.3.5 bzip2-0.9.5d gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gmake-3.77 gtk-1.2.6 imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 R-deps: XFree86-3.3.5 gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gtk-1.2.6 imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 Der Teil der Ausgabe der Sie interessiert ist die Zeile, die mit Path: beginnt, weil sie Ihnen sagt, wo der Port zu finden ist. Die anderen Informationen werden zum Installieren des Ports nicht direkt benötigt, Sie brauchen sich darum jetzt nicht weiter zu kümmern. Zum Installieren von Ports müssen Sie als Benutzer root angemeldet sein. Jetzt, wo Sie den gewünschten Port gefunden haben, kann es mit der eigentlichen Installation losgehen. Installation von einer CDROM Wie Sie schon vermuten, geht dieser Abschnitt davon aus, daß Sie eine FreeBSD-CDROM Zusammenstellung haben. Wenn nicht, können Sie eine bei FreeBSD Mall bestellen. Angenommen Ihre FreeBSD-CDROM ist im Laufwerk und nach /cdrom eingebunden (und der Mount Punkt muß das Verzeichnis /cdrom sein), kann es mit dem Installieren von Port losgehen. Zu Beginn gehen Sie in das Verzeichnis des Portes, welchen Sie installieren möchten: &prompt.root; cd /usr/ports/irc/xchat Im Verzeichnis xchat kann man das Gerüst erkennen. Der nächste Schritt ist das Übersetzen (auch Bauen genannt) des Portes. Dies wird durch Eingabe von make getan. Haben Sie das eingegeben, so werden Sie etwas lesen wie: &prompt.root; make >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for xchat-1.3.8 >> Checksum OK for xchat-1.3.8.tar.bz2. ===> xchat-1.3.8 depends on executable: bzip2 - found ===> xchat-1.3.8 depends on executable: gmake - found ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ===> Patching for xchat-1.3.8 ===> Applying FreeBSD patches for xchat-1.3.8 ===> Configuring for xchat-1.3.8 ... [configure-Ausgabe weggelassen] ... ===> Building for xchat-1.3.8 ... [Ausgabe der Übersetzung weggelassen] ... &prompt.root; Ist die Übersetzungsprozedur beendet, sind Sie wieder in der Kommandozeile und der nächste Schritt ist das Installieren. Dazu hängen Sie einfach ein Wort an das make-Kommando, und dieses Wort ist install: &prompt.root; make install ===> Installing for xchat-1.3.8 ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ... [Ausgabe der Installation weggelassen] ... ===> Generating temporary packing list ===> Installing xchat docs in /usr/X11R6/share/doc/xchat ===> Registering installation for xchat-1.3.8 &prompt.root; Wenn Sie wieder den Prompt haben, sollte Sie in der Lage - sein, die gerade in stallierte Anwendung laufen zu lassen. + sein, die gerade installierte Anwendung laufen zu lassen. Sie können einen Schritt sparen, wenn Sie gleich make install anstatt von make und dem anschließenden make install eingeben. Beachten Sie bitte, daß die Lizenzen einiger Ports die Einbeziehung auf der CDROM verbieten. Das könnte aufgrund verschiedenster Gründe der Fall sein, beispielsweise weil man sich vor dem Herunterladen registrieren lassen muß oder eine Weiterverteilung verboten ist u.s.w. Wünschen Sie einen Port zu installieren, der nicht auf der CDROM enthalten ist, so müssen Sie online gehen und mit Hilfe des nächsten Abschnitts den Port installieren. Port vom Internet installieren Dieser Abschnitt setzt voraus, daß Sie eine Verbindung mit dem Internet haben. Haben Sie dies nicht, müssen Sie eine CDROM Installation durchführen. Das Installieren eines Ports vom Internet wird genau so durchgeführt wie das Installieren von CDROM. Der einzige Unterschied zwischen beiden ist, daß der Quellcode der Anwendung vom Internet heruntergeladen und nicht von der CDROM genommen wird. Die durchgeführten Schritte sind identisch: &prompt.root; make install >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. >> Attempting to fetch from http://xchat.org/files/v1.3/. Receiving xchat-1.3.8.tar.bz2 (305543 bytes): 100% 305543 bytes transferred in 2.9 seconds (102.81 Kbytes/s) ===> Extracting for xchat-1.3.8 >> Checksum OK for xchat-1.3.8.tar.bz2. ===> xchat-1.3.8 depends on executable: bzip2 - found ===> xchat-1.3.8 depends on executable: gmake - found ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ===> Patching for xchat-1.3.8 ===> Applying FreeBSD patches for xchat-1.3.8 ===> Configuring for xchat-1.3.8 ... [configure-Ausgabe weggelassen] ... ===> Building for xchat-1.3.8 ... [Ausgabe der Übersetzung weggelassen] ... ===> Installing for xchat-1.3.8 ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ... [Ausgabe der Installation weggelassen] ... ===> Generating temporary packing list ===> Installing xchat docs in /usr/X11R6/share/doc/xchat ===> Registering installation for xchat-1.3.8 &prompt.root; Wie Sie sehen können, besteht der einzige Unterschied in der Zeile, die Ihnen sagt, woher das System den Quellcode herholt. Obiges erklärte Ihnen, wie Sie Ports auf Ihrem Computer installieren können. Hiernach lernen Sie, wie Sie einen Port wieder von Ihrem System löschen. Entfernen installierter Ports Da Sie nun wissen, wie man einen Port installiert, wollen Sie sicher auch wissen, wie man einen Port deinstalliert, für den Fall, daß Sie versehentlich einen Falschen installiert haben. Die nächsten Abschitte decken genau dieses Thema ab. Nun wollen wir mal unser vorheriges Beispiel wieder - löschen (für alle die nicht aufgepaßt haben, daß + löschen (für alle die nicht aufgepaßt haben, das war xchat). Wie beim Installieren geht man zuerst in das Verzeichnis des Portes, wie Sie sich erinnern werden war das /usr/ports/irc/xchat. Danach ist man in der Lage den Port zu deinstallieren. Dies wird mit dem Kommando make deinstall getan (erscheint sinnvoll, oder?): &prompt.root; cd /usr/ports/irc/xchat &prompt.root; make deinstall ===> Deinstalling for xchat-1.3.8 &prompt.root; Das war leicht. Sie haben jetzt die Fähigkeit, xchat von Ihrem System zu entfernen. Möchten Sie den Port doch wieder neu installieren, geben Sie make reinstall im Verzeichnis /usr/ports/irc/xchat ein. Fehlersuche und -behebung Die folgenden Zeilen beschreiben einige einfache Fehlerbehebungsmöglichkeiten beim Benutzen der Ports-Sammlung und ein paar Fehlerbehandlungen, falls ein Port kaputt ist. Einige Fragen und Antworten Ich dachte hierbei ging es um Modems??! Ah, Sie müssen an die serielle Schnittstelle auf der Rückseite Ihres Computers gedacht haben (engl. port). Wir benutzen hier Port als Ergebnis des Portierens einer Anwendung von einer UNIX-Variante zu einer anderen. Ich dachte man soll Packete (packages) benutzen, um zusätzliche Anwendungen zu installieren? Ja, das ist gewöhnlich der schnellste und einfachste Weg. Warum dann mit den Ports herumplagen? Aus verschiedenen Gründen: Die Lizenz-Bestimmungen einiger Software verbietet Verteilung in binärer Form. Diese muß als Quellcode verteilt werden. Einige Leute vertrauen bereits kompilierter Software nicht. Mit dem Quellcode haben sie zumindest (in der Theorie) die Möglichkeit, sich den Code anzusehen und nach potentiellen Problemen für sich zu suchen. Haben Sie eigene Anpassungen, so benötigen Sie den Quellcode, um diese vornehmen zu können. Sie könnten andere Ansichten darüber haben, wie eine Anwendung übersetzt werden soll, als die Person - welche das Package erstellt hat— einige Leute haben + welche das Package erstellt hat — einige Leute haben strenge Ansichten drüber, welche Optimierung benutzt, ob eine Debug-Version erstellt oder ob anschließend strip benutzt werden soll und so weiter. Packages werden normalerweise mit recht konservativen Einstellungen erstellt. Wenn ein Port spezielle Optionen für einen speziellen Prozessor oder eine besondere Karte in Ihrem Rechner hat, können Sie diese immer benutzen und die Ersteller der Packages müssen nicht sehr viele verschiedene davon bereitstellen. Die verbreiteste Ausnahme von dieser Regel ist das Papierformat. Unterstützt ein Port von Haus aus verschieden Formate, stellen wir auch verschiedene packages bereit, eins pro Papierformat. Manche Menschen haben gerne Quellcode rumliegen, um darin zu lesen, wenn ihnen langweilig ist, drin rumzuhacken, sich etwas auszuleihen (natürlich, wenn es die Lizenz erlaubt) und so weiter. Hast Du keinen Quellcode, ist es keine Software! ;-) Was ist ein Patch? Ein Patch ist eine kleine Datei, die beschreibt, wie man von einer Version einer Datei zu einer anderen kommt. Sie enthält reinen Text und sagt im Prinzip Dinge wie lösche Zeile 23, füge diese zwei Zeilen hinter Zeile 468an , oder ändere Zeile 197 hierzu. Sie sind auch bekannt als diffs, weil sie mit der Anwendung diff erstellt werden. Worum gehts eigentlich bei diesen tarballs? Das ist eine Datei mit der Endung .tar oder als Varianten mit .tar.gz, .tar.Z, .tar.bz2, oder auch .tgz. Vereinfacht ist das ein Verzeichnisbaum, welcher in eine einzelne Datei (.tar) archiviert und optional gepackt (.gz) wurde. Diese Technik wurde ursprünglich für Tape ARchives benutzt (daher der Name tar), aber stellt heute einen weit verbreiteten Weg da, im Internet Quellcode zu verbreiten und zu verteilen. Sie können selber hineinsehen, was für Dateien darin sind oder diese auspacken, indem Sie das UNIX-Programm tar benutzen. Dies ist auch bei FreeBSD dabei. Das sähe in etwa so aus: &prompt.user; tar tvzf foobar.tar.gz &prompt.user; tar xzvf foobar.tar.gz &prompt.user; tar tvf foobar.tar &prompt.user; tar xvf foobar.tar Eine Prüfsumme? Das ist eine Zahl, die dadurch generiert wird, indem man die ganzen Daten einer Datei aufaddiert. Ändert sich ein Zeichen in dieser Datei, ist die Prüfsumme nicht mehr die gleiche und ein einfacher Vergleich ermöglicht das Erkennen des Unterschiedes. Ich tat, was ihr zum Übersetzen von Ports von der CDROM geschrieben habt und es funktionierte auch prima, bis ich zum Port kermit kam. &prompt.root; make install >> cku190.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. Warum kann die Datei nicht gefunden werden? Habe ich eine kaputte CDROM? Wie im Abschnitt Installation von CDROM erläutert, dürfen einige Ports wegen Lizenz-Beschränkungen nicht auf CDROM veröffentlicht werden. Kermit ist ein solches Beispiel. Die Lizenz-Bestimmungen verbieten uns das Brennen des tarballs auf CDROM, leider müssen Sie es sich von Hand aus dem Netz - Herunterladen—sorry! + herunterladen — sorry! Der Grund für die ganzen Fehlermeldungen liegt darin, daß Sie zu diesem Zeitpunkt nicht mit dem Internet verbunden waren. Haben Sie den tarball von einer der MASTER_SITES (aufgeführt im Makefile) gezogen, können Sie die Installation erneut starten. Das habe ich getan, aber als ich ihn ins Verzeichnis /usr/ports/distfiles legen wollte, erhielt ich eine Fehlermeldung bezüglich der Zugriffsrechte. Der Ports Mechanimus sucht den tarball in /usr/ports/distfiles, aber Sie konnten ihn dort nicht hinkopieren, da dieses Verzeichnis auf die CDROM zeigt, die man nur gelesen kann. Sie können eine andere Stelle angeben, indem Sie eingeben: &prompt.root; make DISTDIR=/wohin/Sie/es/legten install Funktioniert das Konzept der Ports nur, wenn alles in /usr/ports abläuft? Mein Systemadministrator sagt, daß ich alles unter /u/people/guests/wurzburger haben - muß, aber das scheint nicht klappen. + muß, aber das scheint nicht zu klappen. Sie können die Variablen PORTSDIR und PREFIX benutzen, um dem Ports-System zu sagen, daß es andere Verzeichnisse nutzen soll. Zum Beispiel würde, &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install den Port in /u/people/guests/wurzburger/ports kompilieren und alles unter /usr/local installieren. &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install kompiliert in /usr/ports und installiert ihn in /u/people/guests/wurzburger/local. Und natürlich &prompt.root; make PORTSDIR=../ports PREFIX=../local install kombiniert die beiden Sachen. (Es ist aber ein wenig lang, um es hier komplett aufzuschreiben. Sie sollten aber die zugrunde liegende Idee erkennen.) + Einige Ports, welche &man.imake.1; (Teil des X Window + Systems) benutzen, funktionieren nicht gut mit + PREFIX und bestehen dadrauf, unter + /usr/X11R6 installiert zu werden. In + ähnlicher Weise verhalten sich einige Perl Ports, die + PREFIX ignorieren und sich in den Perl + Verzeichnisbaum installieren. Zu erreichen, daß solche + Ports PREFIX beachten, ist schwierig oder + sogar unmöglich. + Wenn Sie keine Lust haben, dies jedesmal einzutippen, sollten Sie diese Variablen als Umgebungsvariablen setzen. - Lesen Sie die Man-Page Ihre Shell, um zu erfahren, wie das + Lesen Sie die Man-Page Ihrer Shell, um zu erfahren, wie man das anstellt. Ich habe keine FreeBSD CDROM, würde aber gerne die tarballs auf meinem Rechner liegen haben, damit ich nicht - jedesmal auf den Downlaod warten muß, wenn ich mal einen + jedesmal auf das Herunterladen warten muß, wenn ich mal einen Port installieren will. Gibt es einen Weg, alle auf einmal zu holen? Um jeden einzelnen tarball für die Ports-Sammlung zu holen geben Sie ein: &prompt.root; cd /usr/ports &prompt.root; make fetch Für alle tarballs eines Ports-Verzeichnis: &prompt.root; cd /usr/ports/Verzeichnis &prompt.root; make fetch - und für nur einen Port—gut, das haben Sie sicher + und für nur einen Port — gut, das haben Sie sicher schon erraten. Ich weiß, das es wohl schneller geht, wenn ich die tarballs von einem FreeBSD Mirror in der Nähe hole. Kann ich sagen, daß andere als in MASTER_SITES angegebene Server genommen werden soll? Ja. Zum Beispiel, wenn ftp.FreeBSD.org bei Ihnen näher dran ist, als der in MASTER_SITES angegebene, machen Sie das wie folgt: &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch Ich würde gern vorher wissen, welche Dateien make holen wird, bevor es das versucht. make fetch-list gibt aus, welche Dateien für den Port benötigt werden. Gibt es einen Weg einen Port am Kompilieren zu hindern? Ich möchter gern vor der Installation etwas im Quellcode hacken. Es ist aber etwas nervig, immer aufzupassen und im richtigen Moment mit Control-C abzubrechen. Die Eingabe von make extract erreicht, daß der Port Quellcode nur geholt und entpackt wird. Ich versuche einen eigenen Port zu erstellen und will, daß der Port vor dem Übersetzen anhält, damit ich eine Chance habe zu sehen, ob meine Patches sauber funktionieren. Gibt es etwas wie make extract für Patches? Klar, make patch ist alles was Sie wünschen. Sie werden wahrscheinlich die Variable PATCH_DEBUG auch recht nützlich finden. Ach ja, und vielen Dank für Ihre Bemühungen! Stimmt es, daß einige Compiler Fehler machen? Wie kann ich sicher gehen, daß ich mit den richtigen Einstellungen übersetze? Ja, in der Version 2.6.3 des gcc (diese Version ist bei FreeBSD 2.1.0 und 2.1.5 dabei) kann die Option fehlerhafte Ergebnisse liefern, sofern man nicht auch die Option benutzt. (Die meisten Ports benutzen nicht). Sie sollten die Compiler Optionen etwa wie folgt spezifieren können: &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install - oder durch editieren von /etc/make.conf, - alleding beachten das nicht alle Ports. Der sicherste Weg ist, + oder durch Editieren von /etc/make.conf, + allerdings beachten das nicht alle Ports. Der sicherste Weg ist, nach einem make configure ins Verzeichnis mit dem Quellcode zu gehen und dort die Makefiles von Hand zu untersuchen. Das kann aber sehr mühselig werden, da es oft sehr viele Unterverzeichnisse mit eigenen Makefiles geben kann. Die bei FreeBSD voreingestellten Compiler Optionen sind recht konservativ, so sollten Sie eigentlich keine Probleme bekommen, wenn Sie diese nicht verändert haben. Das sind aber ganz schön viele Ports und es ist nicht leicht den einen zu finden, den ich gerade möchte. Gibt es eine Liste der erhältlichen Ports? Schauen Sie in die Datei INDEX im Verzeichnis /usr/ports. Sie können auch die Ports-Sammlung nach einem Stichwort durchsuchen. Wollen Sie zum Beispiel alle Ports finden, die mit der Programmiersprache LISP zu tun haben, geben Sie ein: &prompt.user; cd /usr/ports &prompt.user; make search key=lisp Als ich den Port bla installieren wollte, hört das System auf einmal mit dem Kompilieren auf und fing an, den Port sülz zu erstellen. Was ist hier los? Der Port bla braucht etwas, was mit dem Port sülz mitkommt — beispielsweise, wenn bla Grafik benutzt wird und der Port sülz könnte dann eine Bibliothek mit nützlichen grafischen Routinen enthalten. Oder sülz könnte ein Werkzeug sein, das zum Übersetzen des Ports bla notwendig ist. Ich habe aus der Ports-Sammlung die Anwendung grizzle installiert und nun festgestellt, daß es reine Verschwendung von Plattenplatz ist. Ich will ihn wieder löschen, weiß aber nicht wohin der Port seine Dateien installiert hat. Tips? Alles kein Problem, machen Sie nur: &prompt.root; pkg_delete grizzle-6.5 Sie können alternativ auch eingeben: &prompt.root; cd /usr/ports/somewhere/grizzle &prompt.root; make deinstall Moment, man muß die Versionsnummer wissen, um das Kommando benutzen zu können. Es wird nicht wirklich erwartet, daß ich mich daran noch erinner, oder?? Nein, Sie finden diese Nummer durch folgende Eingabe heraus: &prompt.root; pkg_info -a | grep grizzle Information for grizzle-6.5: grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. Apropos Plattenplatz, die Ports-Sammlung scheint recht viel Platz einzunehmen. Ist es gefährlich dahin zu gehen und Sachen zu löschen? Nun, wenn Sie Anwendungen installiert haben und sicher sind, daß Sie den Quellcode nicht benötigen, gibt es keinen Grund diesen herumliegen zu haben. Der beste Weg zum Aufräumen ist: &prompt.root; cd /usr/ports &prompt.root; make clean Das geht durch alle Ports-Verzeichnisse und löscht für jeden Port alles bis auf das Gerüst. Das habe ich probiert, aber da liegen immer noch diese tarballs (oder wie die genannt werden) im Verzeichnis distfiles herum. Darf ich die auch löschen? Ja, wenn Sie mit denen fertig sind, konnen die auch - verschwinden. Man kann sie von Hand löschen das + verschwinden. Man kann sie von Hand löschen oder das Kommando make distclean benutzen. Ich finde es toll, tierisch viele Anwendungen zu haben und damit rumzuspielen. Gibt es einen Weg alle Ports auf einmal zu installieren? Machen Sie einfach: &prompt.root; cd /usr/ports &prompt.root; make install Vorsicht: Einige Ports könnten Dateien mit dem gleichen Namen installieren. Wenn man zwei grafische Ports installiert und beide eine Datei /usr/local/bin/plot anlegen, haben Sie ein Problem. - Okay, das habe ich gemacht und ich dachte, daß das - sicherlich ziemlich lange dauert, ging zu Bett. Als ich heute + Okay, das habe ich gemacht und da ich dachte, daß das + sicherlich ziemlich lange dauert, ging ich zu Bett. Als ich heute morgen zum Computer kam, waren erst dreieinhalb Ports installiert. Hat da etwas nicht geklappt? Nein, das Problem ist, daß es Ports gibt, die Ihnen Fragen stellen, auf die wir die Antworten nicht für Sie geben konnten (z.B. Drucken Sie auf Papier im A4 oder US letter Format?). In solchen Fällen muß jemand da sein und die Fragen beantworten. Ich möchte aber nicht wirklich einen ganzen Tag damit verbringen, auf den Monitor zu starren. Irgendeine bessere Idee? Klar, bevor Sie ins Bett/zur Arbeit/in den Park gehen, geben Sie ein: &prompt.root cd /usr/ports &prompt.root; make -DBATCH install Das installiert Ihnen alle Ports, die keine Eingaben des Benutzers erfordern. Wenn Sie dann zurück sind, geben Sie ein: &prompt.root; cd /usr/ports &prompt.root; make -DIS_INTERACTIVE install um die Aufgabe zu beenden. Auf der Arbeit benutzen wir die Anwendung frobble, das in der Ports-Sammlung ist. Wir haben das aber etwas auf unsere Bedürfnisse angepaßt. Können wir irgendwie eigene packages erstellen, so daß wir die Anwendung auf unseren Rechnern leichter verteilen können? Kein Problem. Angenommen Sie wissen, wie Sie für Ihre Anpassungen Patches erzeugen: &prompt.root; cd /usr/ports/somewhere/frobble &prompt.root; make extract &prompt.root; cd work/frobble-2.8 [Ihre patche einspielen] &prompt.root; cd ../.. &prompt.root; make package Diese Geschichte mit den Ports ist wirklich clever. Ich habe keine Ahnung, wie ihr das hinbekommen habt. Was ist das Geheimnis dahinter? Keine Geheimnisse. Sehen Sie einfach in die Dateien bsd.port.mk und bsd.port.subdir.mk in dem makefiles Verzeichnis auf Ihrem Rechner an. (Lesern mit einer Aversion gegen komplizierte Shell-scripts wird geraten, diesen Link nicht zu verfolgen...) Hilfe! Dieser Port ist kaputt! Stolpern Sie mal über einen Port, der bei Ihnen nicht funktioniert, könnten Sie zum Beispiel folgendes tun: Reparieren Sie ihn! Der Abschnitt Wie erstelle ich einen Port sollte Ihnen dabei helfen. - Rummeckern—nur mittels E-Mail! + Rummeckern — nur mittels E-Mail! Senden Sie zuerst eine E-Mail an den Betreuer des Ports. Geben - Sie dazu make maintainer ein oder lesen das + Sie dazu make maintainer ein oder lesen Sie das Makefile im Verzeichnis des Ports, um an die E-Mail-Adresse zu kommen. Vergessen Sie nicht den Namen und die Version des Ports (schicken Sie die Zeile mit $FreeBSD: aus dem Makefile) und die Ausgabe bis zur Fehlermeldung mitzuschicken. Erhalten Sie vom Betreuer keine Resonanz, können Sie auch das send-pr Kommando benutzen, um einen Fehler-Report einzusenden. - Vergessen Sie es. Das ist der einfachste Weg— nur + Vergessen Sie es. Das ist der einfachste Weg — nur sehr wenige Ports kann man als unverzichtbar klassifizieren. Außerdem gibt eine große Wahrscheinlichkeit, daß der Fehler in der nächsten Version behoben ist, wenn der Port aktualisiert wurde. Holen Sie sich das Package von einem FTP-Server in Ihrer Nähe. Die Basis Sammlung aller packages liegt auf ftp.de.FreeBSD.org im Verzeichnis packages. Aber versuchen Sie zuerst einen Mirror in Ihrer Nähe! Die Methode mit den Packages geht um einiges schneller. Benutzen Sie das Programm &man.pkg.add.1;, um Packages auf Ihrem Rechner zu installieren. Weitergehende Themen Dieser Abschnitt wurde ausgelagert und zu einem eigenständigen Handbuch, dem Porters-Handbuch, Wenn Sie selber einen Port erstellen und einreichen wollen, lesen Sie bitte dieses Handbuch.