Wie kann ich einen port manuell kompilieren?

cabriofahrer

Well-Known Member
Wie kann ich einen port manuell aus den Quellen kompilieren, wenn ich vermute, daß der port kaputt ist oder irgendetwas damit nicht stimmt?
Ist es richtig, daß man z.B. "gmake" statt "make" eingeben muß, daß es kein "configure" gibt, und wie bekomme ich dann den freebsd-patch und baue diesen ein?

Gibt es vielleicht auch irgendwo schon eine Anleitung dazu?
 
Du kannst einfach 'make extract' eingeben. Dann gehst du in das work Verzeichnis des Port und lässt die volgenden Befehler laufen:

# ./configure
# gmake

Wenn du die Patches die zum Port gehören auch einspielen willst musst du statt 'make extract' 'make patch' verwenden.
 
Und wenn ich mit einer bestimmten Option kompilieren will, wie z.B.
"WITH_XVMC=yes", geht das dann auch, kann ich also dann
gmake "WITH_XVMC=yes" install eingeben?

Und worin liegt bei dieser Vorgehensweise dann der eigentliche Unterschied zu einem make install im Portverzeichnis, denn so wird doch letztendlich auch gmake aufgerufen, oder?
 
cabriofahrer said:
Und wenn ich mit einer bestimmten Option kompilieren will, wie z.B.
"WITH_XVMC=yes", geht das dann auch, kann ich also dann
gmake "WITH_XVMC=yes" install eingeben?

Und worin liegt bei dieser Vorgehensweise dann der eigentliche Unterschied zu einem make install im Portverzeichnis, denn so wird doch letztendlich auch gmake aufgerufen, oder?
Der unterschied ist das du den BSD Makefile außen vor lässt (warum man das tun will ist mir allerdings ein Rätsel).

Natürlich wird dein Beispiel nicht funktionieren.
 
Also wenn ich ./configure oder ./configure --help eingebe, kommt nur "command not found". Bei gmake kam:
Makefile:58: *** missing separator. Stop.
 
ich glaube dass ich da mal syncend eingreifen muss:

ihr beide habt etwas aneinander vorbeigeredet.

@kamikaze: carbio hat den sinn von ports noch nicht ganz verstanden.

@cabriofahrer: der sinn von den ports ist, dass er sich um den ganzen mist wie ./configure und "make oder gmake" kuemmert.
alles was du tun musst um einen port manuell durchzucompilieren ist "make" einzutippen.
und hinterher "make install"

probiers einfach mal aus! mach mal das hier:
Code:
% nInvaders
Command not found
% su
Password:
$ cd /usr/ports/games/nInvaders
$ make
$ make install
$ exit
% nInvaders
 
Im ersten Post steht doch klipp und klar, daß er nicht die Ports verwenden will, weil er einen Fehler darin vermutet. Das halte ich allerdings nicht für sonderlich sinnvoll. Es wäre zunächst interessant zu wissen, um welchen Port es sich überhaupt handelt und was damit angeblich nicht in Ordnung ist. Dann kann man weitersehen.
 
cabriofahrer said:
Wie kann ich einen port manuell aus den Quellen kompilieren, wenn ich vermute, daß der port kaputt ist oder irgendetwas damit nicht stimmt?
Ist es richtig, daß man z.B. "gmake" statt "make" eingeben muß, daß es kein "configure" gibt, und wie bekomme ich dann den freebsd-patch und baue diesen ein?

Gibt es vielleicht auch irgendwo schon eine Anleitung dazu?

Es gibt keine Anleitung dazu, weil die Antwort auf deine Frage sehr stark vom jeweiligen Port abhängt. Es gibt zig verschiedene Buildsysteme, die vorkommen können. Einige verwenden make, andere gmake, wieder andere qmake oder cmake; einige verwenden gar kein make etc etc.

Des Weiteren gibt es nicht "den" FreeBSD patch. Wieviele Patches ein Port benötigt, welcher Art sie sind und wie die Sourcen jeweils verändert werden (was sehr oft nicht durch die Dateien in files/patch* des Ports passiert) hängt auch sehr stark vom jeweiligen Port ab.

cabriofahrer said:
Und wenn ich mit einer bestimmten Option kompilieren will, wie z.B.
"WITH_XVMC=yes", geht das dann auch, kann ich also dann
gmake "WITH_XVMC=yes" install eingeben?

Ich kling zwar langsam wie eine Schallplatte mit Sprung, aber auch das hängt vom Port ab. WITH/WITHOUT_FEATURE ist die Ports Syntax (oder besser gesagt, make(1) wird angewiesen, bestimmte Sektionen im Ports-Makefile ein/auszuschließen, die dafür verantwortlich sind, ein bestimmtes Feature ein/auszuschalten) und läßt sich in den seltensten Fällen direkt auf das jeweilige Programm ohne Port übertragen. Ob hier configure mit bestimmten Parametern aufgerufen wird, ein zusätzlicher Patch eingespielt wird oder eben nicht oder eine andere Aktion ausgeführt wird, hängt vom jeweiligen Programm ab, für das der Port zuständig ist.

cabriofahrer said:
Und worin liegt bei dieser Vorgehensweise dann der eigentliche Unterschied zu einem make install im Portverzeichnis, denn so wird doch letztendlich auch gmake aufgerufen, oder?
Es passiert wesentlich mehr unter der Haube, von dem du nicht notwendigerweise etwas siehst. Neben dem eigentlichen Bauen des Ports, werden vorher notwendige Veränderungen vorgenommen (Patches eingespielt), damit der Port überhaupt gebaut werden kann, oder damit das resultierende Programm nachher auch funktioniert. Es werden Abhängigkeiten aufgelöst, Parameter an etwaige configure Scripte übergeben etc etc. Einige Ports müssen sogar nach der Installation speziell nachbehandelt werden, damit sie überhaupt funktionieren. (Beispiel: Versuch mal kdebase ohne Port zu installieren. Falls du es installiert bekommst, wirst du festellen, dass ksysguard nicht funktioniert, obwohl du beim compilieren/installieren keine Fehlermeldung bekommen hast. Was da im einzelnen passiert, kannst du im post-install Target des Port-Makefiles nachlesen). Schlussendlich wird der installierte Port in der Packagedatenbank registriert, damit er später wieder sauber deinstalliert werden kann.

Summa Summarum: Ohne den Port, um den es dir konkret geht, kann dir hier keiner weiterhelfen.

Markus
 
Back
Top