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> |