Build Quassel on Linux (deutsch) » History » Version 5
musca, 10/22/2009 11:13 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 | 5 | musca | <pre><code># 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 | 5 | musca | </code></pre> |
| 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 | 4 | musca | Diese Aufgabe wird mit "git":http://de.wikipedia.org/wiki/Git unter 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> |