Installazione


Richieste Minime

Per compilare KVIrc 4.0 devi avere almeno questi software:

Qt GUI Toolkit

Se la tua distribuzione ha installato KDE, allora Qt è già installato. Altrimenti installa Qt4 dai repository della tua distribuzione.

Quindi prima di lanciare cmake assicurati che la variabile d'ambiente $QTDIR punti al giusto percorso. Questo aiuterà a trovare la corretta versione di Qt.

Puoi eventualmente settarlo col comando:

# export QTDIR="tua directory qt"

Sul mio sistema Qt è installato in /usr/lib64/qt quindi dovrei lanciare:

# export QTDIR=/usr/lib64/qt

Per controllare che tu abbia la giusta versione di Qt, lancia:

# qmake -v

Sul mio sistema l'output è:

QMake version 2.01a
Using Qt version 4.7.2 in /usr/lib64/qt/lib

Se hai installato diverse versioni di Qt4 sul tuo sistema e vuoi usare una specifica version, esportare QTDIR non basta. Dal momento che il modulo di CMake che cerca Qt4 usa qmake per determinare la directory della libreria Qt4, puoi settare il PATH per fare in modo che CMake usi la tua versione di qmake preferita:

#PATH=/opt/qt4.7/bin/:$PATH cmake ..

Nota che compilare col supporto KDE4 forzerà KVIrc a linkare alla versione di Qt4 che KDE4 usa, e questo può portare a problemi di linking. Disabilitare il supporto a KDE4 è l'unica soluzione conosciuta al momento.
Nota anche che avrai bisogno di sovrascrivere le librerie Qt usate quando lanci KVIrc:

#LD_LIBRARY_PATH=/opt/qt4.7/lib/ kvirc4

CMake

Solitamente è incluso nelle ultime distribuzioni.
Per controllare qualche versione di CMake hai, lancia

# cmake --version

Sul mio sistema l'output è:

cmake version 2.8.3

C++ Compiler

Hai bisogno di un compilatore C++ decente. Solitamente sotto linux c'è gcc dei tool GNU. E' preferito usare gcc 4.3.
Per controllare la versione di gcc, lancia:

# gcc -v

Sul mio sistema l'output è:

Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/4.5.2/specs
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/4.5.2/lto-wrapper
Target: x86_64-slackware-linux
Configured with: ../gcc-4.5.2/configure --prefix=/usr --libdir=/usr/lib64
--mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap
--enable-languages=ada,c,c++,fortran,java,objc,lto --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-libssp --enable-lto
--with-python-dir=/lib64/python2.6/site-packages --disable-libunwind-exceptions
--enable-__cxa_atexit --with-gnu-ld --verbose --disable-multilib
--target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux
Thread model: posix
gcc version 4.5.2 (GCC)

Pthread Implementation

Solitamente è incluso nella tua distribuzione ed è probabilmente già installato. La libreria si chiama libpthread.so.
Puoi cercarla usando il comando "find":

# find / -name libpthread.so

Sul mio sistema l'output è:

# /usr/lib64/libpthread.so

Se non ce l'hai (CMake te lo dirà) puoi scaricarla dal tuo mirror GNU preferito.
Lo script di configurazione fallirà anche se la libreria è nascosta da qualche parte sul tuo sistema (es. non in /lib , /usr/lib or /usr/local/lib): dovresti spostarla.

Dynamic Linker Interface

Hai bisogno della libreria per l'interfaccia al linker dinamico libdl.so.
Solitamente è installata sul tuo sistema, quindi non preoccuparti se la configurazione si lamenta. Alcuni sistemi hanno l'interfaccia compilata nelle libc.

KDE (Opzionale)

Se vuoi compilare il supporto a KDE hai bisogno ovviamente di KDE.
Il pacchetto kdelibs dovrebbe bastare.

Quindi prima di lanciare cmake assicurati che la variabile d'ambiente $KDEDIR punti al percorso giusto.

Puoi eventualmente settarla col comando:

# export KDEDIR="tua directory kde"

Nel mio caso KDE è installato in /usr quindi uso:

# export KDEDIR=/usr

GNU gettext (Opzionale)

Se vuoi che le traduzioni in lingue non inglesi funzionino devi avere il pacchetto GNU gettext. In particolare KVIrc usa il programma msgfmt.

Solitamente è incluso della tua distribuzione ed è probabilmente già installato. Puoi controllare lanciando:

# msgfmt --version

KVIrc non si lamenterà se il comando sopra manca: semplicemente eviterà di creare i file di traduzione.
Se il comando sopra fallisce devi installare il pacchetto gettext se vuoi qualsiasi lingua che non sia inglese.

OpenSSL (Opzionale)

Se vuoi il supporto alle connessioni sicure (SSL) hai bisogno della libreria e degli header di OpenSSL (libssl.so and openssl/ssl.h).

Perl (Opzionale)

Se vuoi generare la documentazione on-line hai bisogno di perl: qualsiasi versione dovrebbe andare bene (si spera).

Se vuoi il supporto allo scripting perl hai bisogno di un'installazione perl funzionante. La tua libperl.so DEVE essere compilata con l'opzione MULTIPLICITY.
Puoi controllare con perl -V
Il modo in cui i software possono incorporare perl è cambiato tra le versioni 5.8 e 5.10; KVIrc dovrebbe funzionare bene se perl è >= 5.004, ma è consigliato il 5.10 dal momento che aggiornamenti futuri possono rompere la retrocompatibilità.

Sound System (Opzionale)

Se vuoi che DCC VOICE abbia il supporto al codec GSM, hai bisogno di una copia recente di libgsm.
Non è strettamente richiesta durante la compilazione perché KVIrc cercherà la libreria a run-time, e solo se è richiesta la DCC VOICE col codec GSM.
Puoi controllare libgsm col comando "find":

# find / -name libgsm*

Sul mio sistema l'output è:

# /usr/lib64/libgsm.so

Questa libreria è inclusa in molte distribuzioni. Alcune di esse forniscono solo la versione statica "libgsm.a": se il find precedente ritorna solo qualcosa come "/usr/lib64/libgsm.a", dovresti creare manualmente un archivio condiviso lanciando:

# cd /usr/lib64
# ld --whole-archive -shared -o libgsm.so.1 libgsm.a
# ln -s libgsm.so.1 libgsm.so
# ldconfig

Se non ce l'hai installata del tutto, dovresti dare un occhio al CD della tua distribuzione, o scaricarla dal web

Se vuoi che il plugin /snd suoni vari formati audio hai bisogno sia di un systema sonoro tipo phonon, un demone sonoro come esd o una libreria recente audiofile. Senza questi KVIrc sarà capace di suonare solo file *.au.


Configurare l'Ambiente

Dal momento che KVIrc 4.0 usa CMake come sistema di compilazione, dobbiamo usarlo per creare le regole Makefile per il programma make.
Per farlo, suggeriamo di fare una compilazione "out-of-source": compilare tutti i file senza sporcare la directory dei sorgenti.

# mkdir release
# cd release
# cmake [tue opzioni] ..

In questa maniera abbiamo appena creato un ambiente out-of-source che permette di avere una directory di lavoro pulita.
Nota che i punti finali sono richiesti o CMake NON creerà il giusto ambiente.

Le regole CMake supportano diverse opzioni. Se non le specifichi, CMake tenterà di creare un buon ambiente per te :)
Per usare queste opzioni, devi passare un valore booleano o una stringa.

Per esempio, per installare in /usr invece di /usr/local e disabilitare il supporto Phonon, il comando sarà:

# cmake -DCMAKE_INSTALL_PREFIX=/usr -DWANT_PHONON=0 ..

Ecco una lista con la spiegazione:

  • -DWANT_DEBUG (default: OFF)
    Quando abilitato, compila l'eseguibile coi simboli di debug.
    Utile per riportare i bug.
  • -DWANT_STRIP (default: OFF)
    Disponibile solo se il debug è disabilitato, questa opzione disabilita lo stripping degli oggetti prima dell'installazione.
    (Lo stripping degli oggetti elimina i simboli dai file degli oggetti, diminuendone la dimensione sul disco, a discapito di un debug molto compicato o addirittura impossibile.)
  • -DWANT_VERBOSE(default: OFF)
    Genera un output verboso mentre compila.
  • -DCMAKE_INSTALL_PREFIX=PATH (default: a system-dependant directory)
    Installa tutto nel /path specificato
  • -DLIB_SUFFIX=SUFFIX (default: empty)
    Installa libkvilib e i moduli kvirc nella directory ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}. Se omesso rimarrà vuoto. E' utilizzato principalmente per le distribuzioni a 64bit (-DLIB_SUFFIX=64).
  • -DMANDIR=DIRECTORY (default: $CMAKE_INSTALL_PREFIX/share/man)
    Questo installerà le pagine del manuale in DIRECTORY.
  • -DCOEXISTENCE (default: OFF)
    Se abilitato, appende le informazioni di versione a kvirc e libkvilib in modo che diverse versioni di KVIrc possano coesistere sullo stesso sistema.
  • -DUSE_ENV_FLAGS (default: OFF)
    Quando abilitato, le regole di installazione di KVIrc non tenteranno di settare CMAKE_C(XX)_FLAGS; invece, farà in modo che CMake usi le variabili d'ambiente.
    Attivando questa opzione verrà disabilitata -DWANT_DEBUG.
  • -DCMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT (default: OFF, not cached
    Reinizializza il percorso di installazione a un buon compromesso.
    Le compilazioni successive dovrebbero usare il percorso corretto salvato in cache da CMake.
    Questa opzione è utile per risolvere i problemi di installazione di OS X.
  • -DWANT_UNIVERSAL_BINARY (default: OFF)
    Abilita o disabilita la compilazione dei binari universali per la piattaforma OS X
  • -DWANT_PHONON (default: ON)
    Abilita o disabilita il supporto al backend audio Phonon.
  • -DWANT_OSS (default: ON)
    Abilita o disabilita il supporto al backend audio OSS. Questo disabilita automaticamente anche il supporto Audiofile.
  • -DWANT_AUDIOFILE (default: ON)
    Abilita o disabilita il supporto al backend audio Audiofile.
  • -DWANT_ESD (default: ON)
    Abilita o disabilita il supporto al backend audio Esd.
  • -DWANT_QTDBUS (default: ON)
    Abilita o disabilita il supporto Qt-DBus.
  • -DWANT_QTWEBKIT (default: ON)
    Abilita o disabilita il supporto Qt-WebKit.
  • -DWANT_KDE4 (default: ON)
    Abilita o disabilita il supporto KDE4.
  • -DWANT_SSL (default: ON)
    Abilita o disabilita il supporto Secure Socket Layer. Il supporto SSL è automaticamente abilitato se CMake trova OpenSSL.
  • -DWANT_CRYPT (default: ON)
    Abilita o disabilita i motori crittografici e tutto il supporto alla crittografia e trasformazione del testo. Produce un eseguibile di poco più piccolo
  • -DWANT_IPV6 (default: ON)
    Il supporto IPv6 è compilato automaticamente sulle piattaforme che lo supportano: questa opzione lo disabilita.
    Anche se hai una connessione solamente IPv4, potresti voler tenere il supporto IPv6: sarai capace di reversare gli hostname IPv6.
  • -DWANT_TRANSPARENCY (default: ON)
    Questa opzione abilita o disabilita il supporto alla pseudo e reale trasparenza.
    La pseudo-trasparenza fa in modo che le finestre di KVIrc sembrino semi-trasparenti (questa NON è vera trasparenza: è solo un hack molto carino). La trasparenza usa il compositing e necessita del giusto hardware per funzionare.
    Se il supporto KDE è abilitato, KVIrc avrà un'opzione che farà sì che tutte le finestre usino l'immagine del desktop di KDE come sfondo in trasparenza. (Puoi sempre scegliere il tuo sfondo del desktop: questo funzionerà (più o meno) in tutti i window manager.
    E' molto carino ma solitamente usa un po' di memoria e aumenta un po' la dimensione dell'eseguibile quando abilitato. Specialmente quando vengono mossi gli oggetti, l'uso della CPU può elevarsi.
    Puoi disabilitare la trasparenza qui.
  • -DWANT_PERL (default: ON)
    Abilita o disabilita il supporto perl.
    Non sarai in grado di usare script perl dentro KVIrc.
    Potrai sempre eseguire script Perl da fuori KVIrc, ad esempio usando il comando exec().
    Nota che il supporto a Perl sarà controllato lo stesso, e usato per generare la documentazione
  • -DWANT_PYTHON (default: ON)
    Abilita o disabilita il supporto python.
    Non sarai in grado di usare script python dentro KVIrc.
  • -DWANT_IPC (default: ON)
    Abilita o disabilita il supporto alle comunicazioni tra processi.
    Non sarai in grado di inviare comandi remoti tra sessioni avviate di KVIrc: questo significa che ogni volta che avvii KVIrc, verrà creata una nuova sessione.
    Se non usi questa opzione, una nuova sessione verrà avviata solo se non ci sono altre sessioni avviate sullo stesso display oppure se "nuova sessione" viene forzata dalle opzioni da riga di comando.
    Se una sessione è già avviata, la riga di comando verrà passata a quella sessione via IPC (comunicazione basata sugli eventi di X).
    Questa opzione risparmia alcuni KB nell'eseguibile KVIrc, quindi se sei davvero a corto di memoria usala, altrimenti, IPC è una bella caratteristica.
  • -DWANT_GETTEXT (default: ON)
    Abilita o disabilita l'uso di GetText per generare i file di traduzione.
  • -DWANT_DOXYGEN (default: ON)
    Abilita o disabilita la generazione della documentazione attraverso Doxygen.
  • -DWANT_GSM (default: ON)
    Abilita o disabilita l'uso della libreria GSM. Questo disabiliterà il codec GSM per la DCC VOICE ma potrebbe aiutare quando la compilazione si ferma a causa di qualcosa legato a GSM :)
  • -DWANT_IGNORE_SIGALARM (default: OFF)
    Su Solaris, sia usleep() che le implementazioni dei thread sono basate su SIGALARM. KVIrc li usa entrambi, e questo può portare a chiusure spontanee dell'applicazione. Questa opzione abilita un workaround per questo problema.
  • -DWANT_DCC_VOICE (default: ON)
    Abilita o disabilita il supporto sonoro DCC VOICE. Questo potrebbe aiutare se hai problemi nella compilazione di src/modules/dcc/voice.cpp.
    Disabiliterà il sistema sonoro (e renderà la DCC VOICE inusabile).
  • -DWANT_DCC_VIDEO (default: OFF)
    Abilita o disabilita il supporto SPERIMENTALE per le DCC video
  • -DWANT_OGG_THEORA (default: OFF)
    Abilita o disabilita il supporto SPERIMENTALE Ogg/Theora per le DCC video.
  • -DWANT_DCC_CANVAS (default: OFF)
    Abilita o disabilita il supporto al VECCHIO DCC CANVAS.
  • -DWANT_MEMORY_PROFILE (default: OFF)
    Opzione di debug... abilita il profiling dell'allocazione di memoria (non usarla :)
  • -DWANT_MEMORY_CHECKS (default: OFF)
    Abilita i controlli alla memoria malloc(). Questo stamperà un grazioso messaggio se il tuo sistema finisce la memoria...
    Non può salvarti da comprare nuova RAM, ma almeno saprai che il tuo sistema ha finito la memoria e non è un problema di KVIrc.
    Attualmente non hai ragioni di usarlo.
  • -DMANUAL_REVISION (default: empty)
    Imposta manualmente un numero di revisione se Subversion non viene trovato sul sistema.
    Questo è utile soprattutto su wundows.
  • -DWANT_PIZZA (default: OFF)
    Aggiunge un po' di pizza per cena :)
  • -DWANT_BEER (default: OFF)
    Aggiunge un po' di birra in chat :)
  • -DWANT_GTKSTYLE (default: OFF)
    QGtkStyle è un backend Qt che usa gli oggetti nativi Gtk. Nelle ultime versioni di Gtk sono state hardcodate delle scelte insane e impossibili da aggirare (esempio: le icone non possono essere visualizzate nei menu, il colore di sfondo delle etichette è fissato).
    Come predefinito noi disabilitiamo QGtkStyle dal momento che va in conflitto col motore interno dei temi di KVIrc creando dei problemi (come l'illeggibile testo bianco su sfondo bianco).
    Alcuni utenti lo vogliono lo stesso e noi controlleremo se gli sviluppatori Gtk smetteranno di crere problemi, quindi quest'opzione ti permette di abilitare il motore QGtkStyle.
    Vi preghiamo di non riportarci bug relativi ai temi se abilitate quest'opzione: sappiamo che non funziona, ma nessuno la sistemerà.

Modo Interattivo

Il sistema di compilazione CMake fornisce inoltre un modo interattivo per configurare l'ambiente prima di compilare.
Ancora, suggeriamo la compilazione "out-of-source": compilare tutti i file senza sporcare la directory dei sorgenti.

# mkdir release
# cd release
# ccmake ..

Ora sei nel modo interattivo, segui le istruzioni sullo schermo per configurare l'ambiente di compilazione.


Compilazione

Questo passo è facile :)
Incrocia le dita e lancia:

# make

Se il tuo make non è GNU make (questo succede su FreeBSD per esempio) dovresti usare "gmake".
Il processo di compilazione durerà dai 3-4 minuti ad alcune ore, dipendentemente dalle capacità della macchina e dal suo carico.
Se hai una cpu lenta ma un paio di computer in LAN, potresti considerare di usare distcc per distribuire la compilazione.

Una volta che la compilazione ha finito con successo, lancia:

# make install

Come prima: usa "gmake install" se il tuo make non è GNU make.

Questo installerà l'eseguibile in /usr/local/bin (se non hai specificato un differente -DCMAKE_INSTALL_PREFIX nelle regole CMake), le librerie in /usr/local/lib (se non hai specificato un differente -DLIB_SUFFIX nelle regole CMake) e tutti i dati condivisi in /usr/local/share/kvirc.

Assicurati che /usr/local/lib sia nel tuo /etc/ld.so.conf , se non c'è metticelo e lancia:

# ldconfig

Se hai deciso di usare il supporto KDE l'installazione potrebbe aver messo tutti questi file nella tua $KDEDIR invece che in /usr/local.
In questo caso dovrebbe essere OK dal momento che KDE richiede che la directory della sua libreria sia in /etc/ld.so.conf


Compilazione su OS X

C'è un HOWTO dettagliato sulla compilazione e installazione per i sistemi OS X nella directory doc/ . Si chiama INSTALL-MacOS.txt


Compilazione su Win32

C'è un HOWTO dettagliato sulla compilazione e installazione per i sistemi Windows nella directory doc/ . Si chiama INSTALL-Win32.txt


Installazione Hacker

# mkdir release && cd release
# cmake ..
# make install

Creare un Pacchetto KVIrc

CMake supporta l'argomento DESTDIR.
Quindi, se vuoi creare un pacchetto per la tua distribuzione, devi semplicemente passarlo in fase di "make install": i file saranno installati nel percorso scelto.
La sintassi è:

# make install DESTDIR=/tmp/kvirc-4.0

Dopo questo passo, segui le regole della tua distribuzione per fare un buon pacchetto.

Alternativamente, puoi provare il supporto sperimentale CPack incluso in CMakeLists.txt per creare un pacchetto: in questo caso, segui la documentazione di CPack.

Divertiti!

# kvirc &

E' tutto ragazzi.