diff --git a/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml b/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml
index e6b9c0d082..399652b334 100644
--- a/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml
@@ -1,1050 +1,1050 @@
Installieren von Anwendungen: Die Ports-SammlungNeu geschrieben von &a.jim;, 22 November 1999.
Ursprüngliche Version von verschiedenen Leuten.Übersetzt von &a.de.pierau, Juli 2000ÜbersichtDie 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-SammlungDie folgenden Abschnitte stellen die grundlegenden Anweisungen
vor, um Anwendungen aus der Ports-Sammlung auf
Ihren Rechner zu installieren oder zu löschen.Ports installierenWas 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.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.Ein patches 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:
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.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.
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
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
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.1Der 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 CDROMWie 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/xchatIm 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.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 installierenDieser 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 PortsDa 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ß
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 -behebungDie folgenden Zeilen beschreiben einige einfache
Fehlerbehebungsmöglichkeiten beim Benutzen der Ports-Sammlung
und ein paar Fehlerbehandlungen, falls ein Port kaputt ist.Einige Fragen und AntwortenIch 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
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.tarEine 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!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 installFunktioniert 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.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 installden Port in
/u/people/guests/wurzburger/ports
kompilieren und alles unter /usr/local
installieren.&prompt.root; make PREFIX=/u/people/guests/wurzburger/local installkompiliert in /usr/ports und
installiert ihn in
/u/people/guests/wurzburger/local.Und natürlich&prompt.root; make PORTSDIR=../ports PREFIX=../local installkombiniert die beiden Sachen. (Es ist aber ein wenig lang,
um es hier komplett aufzuschreiben. Sie sollten aber die
zugrunde liegende Idee erkennen.)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
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
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 fetchFür alle tarballs eines Ports-Verzeichnis:&prompt.root; cd /usr/ports/Verzeichnis
&prompt.root; make fetchund 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/ fetchIch 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' installoder durch editieren von /etc/make.conf,
alleding 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=lispAls 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.5Sie können alternativ auch eingeben:&prompt.root; cd /usr/ports/somewhere/grizzle
&prompt.root; make deinstallMoment, 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 cleanDas 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
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 installVorsicht: 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
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 installDas 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 installum 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 packageDiese 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!
Senden Sie zuerst eine E-Mail an den Betreuer des Ports. Geben
Sie dazu make maintainer ein oder lesen 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
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 versichen Sie zuerst einen Mirror in
+ 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 ThemenDieser 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.
diff --git a/de_DE.ISO_8859-1/books/handbook/ports/chapter.sgml b/de_DE.ISO_8859-1/books/handbook/ports/chapter.sgml
index e6b9c0d082..399652b334 100644
--- a/de_DE.ISO_8859-1/books/handbook/ports/chapter.sgml
+++ b/de_DE.ISO_8859-1/books/handbook/ports/chapter.sgml
@@ -1,1050 +1,1050 @@
Installieren von Anwendungen: Die Ports-SammlungNeu geschrieben von &a.jim;, 22 November 1999.
Ursprüngliche Version von verschiedenen Leuten.Übersetzt von &a.de.pierau, Juli 2000ÜbersichtDie 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-SammlungDie folgenden Abschnitte stellen die grundlegenden Anweisungen
vor, um Anwendungen aus der Ports-Sammlung auf
Ihren Rechner zu installieren oder zu löschen.Ports installierenWas 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.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.Ein patches 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:
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.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.
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
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
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.1Der 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 CDROMWie 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/xchatIm 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.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 installierenDieser 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 PortsDa 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ß
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 -behebungDie folgenden Zeilen beschreiben einige einfache
Fehlerbehebungsmöglichkeiten beim Benutzen der Ports-Sammlung
und ein paar Fehlerbehandlungen, falls ein Port kaputt ist.Einige Fragen und AntwortenIch 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
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.tarEine 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!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 installFunktioniert 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.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 installden Port in
/u/people/guests/wurzburger/ports
kompilieren und alles unter /usr/local
installieren.&prompt.root; make PREFIX=/u/people/guests/wurzburger/local installkompiliert in /usr/ports und
installiert ihn in
/u/people/guests/wurzburger/local.Und natürlich&prompt.root; make PORTSDIR=../ports PREFIX=../local installkombiniert die beiden Sachen. (Es ist aber ein wenig lang,
um es hier komplett aufzuschreiben. Sie sollten aber die
zugrunde liegende Idee erkennen.)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
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
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 fetchFür alle tarballs eines Ports-Verzeichnis:&prompt.root; cd /usr/ports/Verzeichnis
&prompt.root; make fetchund 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/ fetchIch 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' installoder durch editieren von /etc/make.conf,
alleding 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=lispAls 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.5Sie können alternativ auch eingeben:&prompt.root; cd /usr/ports/somewhere/grizzle
&prompt.root; make deinstallMoment, 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 cleanDas 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
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 installVorsicht: 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
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 installDas 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 installum 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 packageDiese 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!
Senden Sie zuerst eine E-Mail an den Betreuer des Ports. Geben
Sie dazu make maintainer ein oder lesen 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
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 versichen Sie zuerst einen Mirror in
+ 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 ThemenDieser 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.