PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IPCop-Kompilierungs-Howto


june
21.04.2011, 14:07
Kleine Anmerkung: Ich bediene mich des Wortes kompilieren als Übersetzung für "build", weils am ehesten Sinn macht, bauen klingt seltsam^ ^

IPCop kompilieren

Es gibt einige Unterschiede zwischen der aktuellen IPCop-Version (v1.4.x) und der nächsten Hauptversion (v2).


Der v1.4-Code liegt in einem CVS (http://ipcop.cvs.sourceforge.net/ipcop/ipcop/?pathrev=IPCOP_v1_4_0)
Der v2-Code liegt in einem SVN (http://sourceforge.net/apps/trac/ipcop/browser)

Die Ordnerstruktur der V2 ist anders aufgebaut (build, log etc.), um das Kompilieren auf verschiedenen Systemen zu vereinfachen.

Kompilieren des aktuellen und stabilen IPCop v1.4.x
Den IPCop-Code laden
Der Sourcecode für IPCop kann auf zwei Arten geladen werden.


Manueller Download aus dem Source-tgz (http://sourceforge.net/projects/ipcop/files/), der mit jeder Version geliefert wird.
Direktzugriff auf das CVS-Repository


Es wird ein CVS-Client benötigt!
Der Checkout des Codes aus dem IPCop CVS-Repository kann anonym (durch pserver) erfolgen.
Das gewünschte Modul (Die Namen können aus dem oben erwähnten Source-tgz ausgelesen werden) muss als modulename angegeben werden. Bei der Passwortabfrage einfach Enter drücken.
cvs -d:pserver:anonymous@ipcop.cvs.sourceforge.net (http://pserver:anonymous@ipcop.cvs.sourceforge.net/):/cvsroot/ipcop login
cvs -z3 -d:pserver:anonymous@ipcop.cvs.sourceforge.net (http://pserver:anonymous@ipcop.cvs.sourceforge.net/):/cvsroot/ipcop co -r modulenameUpdates von innerhalb der Modulordner benötigen den -d-Parameter nicht.

Im CVS muss der gewünschte Zweig der 1.4-Version angegeben werden. '-r IPCOP_v1_4_0' holt den kontinuierlich aktualisierten Code. Eine spezifische Version lässt sich mit '-r IPCOP_v1_4_<version>_FINAL' holen.
Ohne die -r-Option würde ein veralteter Hauptzweig geladen werden.

Beispiele:
Checkout des Zweigs für die neueste Version von 1.4.x (inklusive Modifikationen seit dem letzten Release):
cvs -z3 -d:pserver:anonymous@ipcop.cvs.sourceforge.net (http://pserver:anonymous@ipcop.cvs.sourceforge.net/):/cvsroot/ipcop co -r IPCOP_v1_4_0 ipcopJede Version des 1.4-Zweigs ist getaggt und kann separat geladen werden:
Im Falle der v1.4.10 sieht das Ganze so aus:
cvs -z3 -d:pserver:anonymous@ipcop.cvs.sourceforge.net (http://pserver:anonymous@ipcop.cvs.sourceforge.net/):/cvsroot/ipcop co -r IPCOP_v1_4_10_FINAL ipcopUpdate der momentanen Kopie mit den neusten Änderungen:
cvs -z3 -d:pserver:anonymous@ipcop.cvs.sourceforge.net (http://pserver:anonymous@ipcop.cvs.sourceforge.net/):/cvsroot/ipcop update -P -dUnterschiede zwischen der momentanen Kopie und dem CVS-Repository anzeigen:
cd ipcop (oder wie auch immer dein Ordner heißt)
cvs diff -u (-u ist nicht erforderlich, aber der Output ist dann leserlicher)

Beispiel anhand v1.4.18 (ipcop-1.4.18-sources.tgz package):

Extrahieren:
tar xvfz ipcop-1.4.18-sources.tgzZum Kompilieren sind Root-Rechte erforderlich. Diese erhält man - sofern man noch nicht root ist - durch das Öffnen eines Terminals und das Eingeben von:
su - rootgefolgt vom root-Passwort.

Wechseln zum IPCop-Ordner:
cd ipcopAusführen des Kommandos ls sollte verschiedene Ordner (zB doc, config, src usw.) anzeigen.
Die Datei make.sh muss ausführbar gemacht werden:
chmod 755 make.shmake.sh lässt sich jetzt ausführen, um verschieden Aufgaben zu erledigen.

Andere Sourcen laden

IPCop benötigt viele andere source packages zum kompilieren. Diese werden aus dem Internet geladen und in einem Cache-Ordner gespeichert werden (Geschieht nur einmal).
Es wird empfohlen alle benötigten Dateien vor dem Kompilieren zu laden, da es sonst zu Fehlern/und oder Abbrüchen während des Kompilierens kommen kann.
Auch hier gibt es wieder zwei Möglichkeiten:


Seit v1.4.12 können alle benötigten Files in einem großen (255MB) package von Sourceforge geladen werden

./make.sh getothersrc

Die einzelnen source packages von ihren jeweiligen Seiten laden

./make.sh prefetchNormalerweise ist der erste Befehl schneller (da die Mirror von Sourceforge generell hohen Speed ermöglichen, während die verschiedenen Source-Seiten unterschiedlichen Speed ermöglichen), außerdem kann man sich sicher sein, dass alle benötigten packages geladen werden. Beim zweiten Befehl besteht die Möglichkeit, dass Dateien verschoben wurden und nicht unter der verwendeten URL gefunden werden können. In diesem Falle gibt make.sh einen Fehler aus. Eine Google-Suche oder ein Blick auf http://ipcop.ath.cx (http://ipcop.ath.cx/) können dann hilfreich sein.

./make.sh prefetch kann empfehlenswert sein, wenn man mit einem CVS-Zweig arbeitet, da das othersrc-package vor jedem größeren Versionrelease hochgeladen wird und bereits für das nächste größere Release hinzugefügte Dateien nicht im othersrc-package enthalten sein können.

Erforderliche Binaries
make.sh führt beim Kompilieren einige Befehle aus, die auf dem System verfügbar sein müssen. Die Verfügbarkeit sichert man normalerweise durch das Installieren einer Entwicklungsumgebung. Informationen für das Installieren der Entwicklungsumgebung könnt ihr den Hilfeseiten eures Systems entnehmen.

Es gibt auch die Möglichkeit eine prekompilierte toolchain zu verwenden, wenn das System nicht fähig ist, diesen ersten Schritt des Kompilierens zu machen.
Die prekompilierte toolchain erhält man mit:
./make.sh gettoolchainFür v1.4.x von IPCop hängt das geladene toolchain-package von der CPU ab. Toolchain-packages sind verfügbar für i586 und i686 sowie alpha und powerpc.

Andere häufig verwendete make.sh Befehle

./make.shgibt eine Erklärung der verfügbaren Befehle aus.

Die eigentliche Kompilierung startet man mit:
./make.sh build
Der ccache-Kompiler Cache ist in den Kompilierungsprozess integriert, daher sind erneute Builds schneller als der Erste.
Die Kompilierungsgeschwindigkeit ist abhängig von der CPU-Leistung und dem Festplattenspeed. Die installierte Memory kann einen großen Effekt auf das Ergebnis haben.
Das Nutzen der prekompilierten toolchain kann die Kompilierungsdauer um 20% verkürzen.
Diese lädt man entweder mit ./make.sh gettoolchain oder kompiliert sie selbst mit:
./make.sh clean ./make.sh toolchain

Eine erneute, saubere Kompilierung nach einigen Änderungen macht man mit:
./make.sh clean ./make.sh build

Kompilieren des experimentellen IPCop v2
Folgt demnächst ;)

Alle Angaben ohne Gewähr, mein Englisch ist nicht perfekt, demnach kann die Übersetzung Fehler enthalten. Die Übersetzung ist nicht 100% komplett, da ich mir erlaubt habe Sachen wie den selektive Rebuild nach kleineren Changes (Weil mMn fortgeschrittenes Zeugs und als Fortgeschrittener sollte man genug englisch können) und die Fehlermeldung der ersten Versionen wegzulassen.
Quellen:
Übergeordnete Info (http://sourceforge.net/apps/trac/ipcop/wiki/BuildingHowTo)
v1.4.x (http://sourceforge.net/apps/trac/ipcop/wiki/BuildingHowToV1)
v2 (http://sourceforge.net/apps/trac/ipcop/wiki/BuildingHowToV2)