Build Quassel on Linux (deutsch) » History » Version 3
  musca, 10/22/2009 11:08 AM 
  
| 1 | 1 | musca | h1. Build Quassel on Linux  | 
|---|---|---|---|
| 2 | 1 | musca | |
| 3 | 1 | musca | Schrittweise Anleitung zum Compilieren des Projekts unter Linux  | 
| 4 | 1 | musca | |
| 5 | 1 | musca | {{toc}} | 
| 6 | 1 | musca | |
| 7 | 1 | musca | h2. Vorbereitung des Systems  | 
| 8 | 1 | musca | |
| 9 | 1 | musca | Der Buildprozess benötigt  | 
| 10 | 1 | musca | - den Compiler, Linker, cmake, make  | 
| 11 | 1 | musca | - KDE4-, QT4-, OpenSSL- und zlib-Development-Libraries  | 
| 12 | 1 | musca | - und git für die Verwaltung des Quassel-Quellcodes  | 
| 13 | 1 | musca | |
| 14 | 1 | musca | Unter DEBIAN GnU/Linux Sqeeze/Sid werden die benötigten Pakete beispielsweise folgendermaßen installiert (als root ausführen):  | 
| 15 | 1 | musca | apt-get update && apt-get install build-essential git-core cmake qt4-dev-tools libqt4-dev libqt4-sql-psql zlib1g-dev kdelibs4-dev libphonon-dev kdevelop-dev checkinstall  | 
| 16 | 1 | musca | |
| 17 | 1 | musca | (bitte für andere Distributionen hier Befehle einfügen)  | 
| 18 | 1 | musca | |
| 19 | 1 | musca | h2. Verwaltung des Quellcodes  | 
| 20 | 1 | musca | |
| 21 | 1 | musca | Diese Aufgabe wird mit einem normalen Benutzerkonto durchgeführt.  | 
| 22 | 1 | musca | Der Quellcode wird einmalig mit 'git clone $URL' in der aktuellen Version heruntergeladen  | 
| 23 | 1 | musca | und im verzeichnis ~/quassel abgelegt. (git könnte auch eigene Beiträge hochladen).  | 
| 24 | 1 | musca | |
| 25 | 1 | musca | <pre><code>$ cd ~ && git clone git://git.quassel-irc.org/quassel.git </code></pre>  | 
| 26 | 1 | musca | |
| 27 | 1 | musca | Nachdem Erscheinen von Aktualisierungen des Projekts (meist täglich)  | 
| 28 | 1 | musca | wird nur noch mit 'git pull origin' die lokale Kopie auf den neuesten Stand abgeglichen.  | 
| 29 | 1 | musca | |
| 30 | 1 | musca | <pre><code>$ cd ~/quassel && git pull origin</code></pre>  | 
| 31 | 1 | musca | |
| 32 | 1 | musca | |
| 33 | 1 | musca | h2. Compilieren!  | 
| 34 | 1 | musca | |
| 35 | 1 | musca | Nach Aktualisierungen des Quellcodes kann ein neuer Build erstellt werden.  | 
| 36 | 1 | musca | Jeder Build sollte in seinem eigenen Verzeichnis erzeugt werden,  | 
| 37 | 1 | musca | das ermöglicht bei Misserfolgen die Rückkehr zur funktionsfähigen Version im vorherigen Buildverzeichnis.  | 
| 38 | 1 | musca | <pre><code>$ cd ~/quassel  | 
| 39 | 1 | musca | $ mkdir build  | 
| 40 | 1 | musca | </code></pre>  | 
| 41 | 1 | musca | Im Buildverzeichnis werden mit cmake die eigentlichen make-files erzeugt.  | 
| 42 | 1 | musca | Die dabei verwendeten Optionen werden in der Datei quassel/INSTALL erläutert.  | 
| 43 | 1 | musca | <pre><code>$ cd ~/quassel/build  | 
| 44 | 1 | musca | $ cmake ~/quassel -DWANT_CORE=ON -DWANT_QTCLIENT=ON -DWANT_MONO=ON -DWITH_KDE=ON -DWITH_OPENSSL=ON -DWITH_DBUS=ON -DWITH_PHONON=ON -DWITH_WEBKIT=OFF -DLINGUAS="de en_US"  | 
| 45 | 1 | musca | </code></pre>  | 
| 46 | 1 | musca | Der anschließende Aufruf von make führt automatisch die benötigten Aufrufe des Compilers aus.  | 
| 47 | 1 | musca | <pre><code>$ make</code></pre>  | 
| 48 | 1 | musca | |
| 49 | 1 | musca | h2. Installieren mit checkinstall  | 
| 50 | 1 | musca | |
| 51 | 1 | musca | Die Installation erfolgt angemeldet als root mit dem Tool checkinstall,  | 
| 52 | 1 | musca | dadurch wird ein Paket (deb, rpm oder tgz) für den Paketmanager (apt, rpm oder installpkg) erzeugt  | 
| 53 | 1 | musca | und quassel bleibt deinstallierbar.  | 
| 54 | 1 | musca | checkinstall hat Optionen für verschiedene Distributionen: -D für Debian, -R für RPM, -S für Slackware.  | 
| 55 | 1 | musca | checkinstall stellt interaktiv einige Fragen, unter anderem zur Paket-Beschreibung:  | 
| 56 | 1 | musca | |
| 57 | 1 | musca | Beispiel für Debian:  | 
| 58 | 1 | musca | <pre><code>$ checkinstall -D --pkgname quassel-all --pkgversion 0.5.0 --pkgrelease $(date +%y%m%d%H%M%S) make install</code></pre>  | 
| 59 | 1 | musca | Ausgabe:  | 
| 60 | 1 | musca | Bitte geben Sie eine Beschreibung für das Paket ein.  | 
| 61 | 1 | musca | Beenden Sie Ihre Beschreibung mit einer leeren Zeile oder EOF.  | 
| 62 | 1 | musca | |
| 63 | 1 | musca | Eingabe:  | 
| 64 | 1 | musca | >> [quassel-all enthält quassel-core, quassel-client und quassel (monolithisch).]  | 
| 65 | 1 | musca | >> [enter]  | 
| 66 | 1 | musca | |
| 67 | 1 | musca | Ausgabe:  | 
| 68 | 1 | musca | Das Paket wird entsprechend dieser Vorgaben erstellt:  | 
| 69 | 3 | musca | 0 - Maintainer: [ dein.name@irgendwo.test ]  | 
| 70 | 3 | musca | 1 - Summary: [ quassel-all enthält core, client und quassel (monolithisch). ]  | 
| 71 | 1 | musca | 2 - Name: [ quassel-all ]  | 
| 72 | 1 | musca | 3 - Version: [ 0.5.0 ]  | 
| 73 | 1 | musca | 4 - Release: [ 091021181559 ]  | 
| 74 | 1 | musca | 5 - License: [ GPL ]  | 
| 75 | 1 | musca | 6 - Group: [ checkinstall ]  | 
| 76 | 1 | musca | 7 - Architecture: [ i386 ]  | 
| 77 | 1 | musca | 8 - Source location: [ build_091021181559 ]  | 
| 78 | 1 | musca | 9 - Alternate source location: [ ]  | 
| 79 | 1 | musca | 10 - Requires: [ ]  | 
| 80 | 1 | musca | 11 - Provides: [ quassel-all ]  | 
| 81 | 1 | musca | Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern:  | 
| 82 | 1 | musca | Eingabe:  | 
| 83 | 1 | musca | [ hier einfach [enter] zum Erstellen des Pakets]  | 
| 84 | 1 | musca | |
| 85 | 1 | musca | Das Ergebnis (hier für Debian):  | 
| 86 | 1 | musca | |
| 87 | 1 | musca | <pre><code>Done. The new package has been installed and saved to  | 
| 88 | 1 | musca | |
| 89 | 1 | musca | /home/$(user)/quassel/build/quassel-all_0.5.0-091021103522_i386.deb  | 
| 90 | 1 | musca | |
| 91 | 1 | musca | You can remove it from your system anytime using:  | 
| 92 | 1 | musca | |
| 93 | 2 | musca | dpkg -r quassel-all  | 
| 94 | 1 | musca | </code></pre>  | 
| 95 | 1 | musca | |
| 96 | 1 | musca | h2. Entwurf eines Buildscripts  | 
| 97 | 1 | musca | |
| 98 | 1 | musca | Dieser sich häufig wiederholende Ablauf ist im folgenden Buildscript zusammengefasst:  | 
| 99 | 1 | musca | |
| 100 | 1 | musca | <pre><code>#!/usr/bin/bash  | 
| 101 | 1 | musca | # quick quassel buildscript (Entwurf)  | 
| 102 | 1 | musca | #  | 
| 103 | 1 | musca | # einmalige Initialisierung mit diesem Befehl:  | 
| 104 | 1 | musca | # git clone git://git.quassel-irc.org/quassel.git ~/quassel  | 
| 105 | 1 | musca | #  | 
| 106 | 1 | musca | # Aktuellen Stand mit dem Repo abgleichen:  | 
| 107 | 1 | musca | cd ~/quassel  | 
| 108 | 1 | musca | git pull origin  | 
| 109 | 1 | musca | #  | 
| 110 | 1 | musca | #Neues Buildverzeichnis erstelllen  | 
| 111 | 1 | musca | export date=$(date +%y%m%d%H%M%S)  | 
| 112 | 1 | musca | mkdir build_$date  | 
| 113 | 1 | musca | #  | 
| 114 | 1 | musca | # cmake: Optionen siehe ~/quassel/INSTALL  | 
| 115 | 1 | musca | cd build_$date  | 
| 116 | 2 | musca | cmake ~/quassel -DWANT_CORE=ON -DWANT_QTCLIENT=ON -DWANT_MONO=ON -DWITH_KDE=ON -DWITH_OPENSSL=ON -DWITH_DBUS=ON -DWITH_PHONON=ON -DWITH_WEBKIT=OFF -DLINGUAS="de en_US"  | 
| 117 | 1 | musca | make  | 
| 118 | 1 | musca | # statt 'make install' den Paketmanager verwenden, Paket mit checkinstall erzeugen  | 
| 119 | 1 | musca | echo bitte als root im Verzeichnis ~/quassel/build_$date den folgende Befehle ausführen:  | 
| 120 | 1 | musca | echo dpkg -r quassel-all  | 
| 121 | 1 | musca | echo checkinstall -D --pkgname quassel-all --pkgversion 0.5.0 --pkgrelease $date make install  | 
| 122 | 1 | musca | </code></pre>  |