Dernière mise à jour : Debian 9.6
Ce document décrit l'installation de programmes à partir des sources.
Sommaire
Si les sources du programme sont disponibles sous forme d'archives compressées, les télécharger puis les extraire
Cas d'une fichier tar.bz2
$ tar -xjvf imagination-3.1.tar.bz2
Cas d'un fichier tar.gz
$ tar -xzvf poedit-2.2.tar.gz
Si les sources sont disponibles dans un dépôt de gestion de sources, tel que subversion, faire une copie locale du répertoire sources : voir Gestion des sources - Subversion
Installer les outils de compilation
$ sudo aptitude install build-essential automake autoconf libtool gettext intltool
build-essential installe en particulier
gcc : compilateur c
g++ : compilateur c++
make : gestion de la compilation et de l'édition de liens (avec les librairies)
libc6 : bibliothèques partagées
Vérifier les versions des programmes :
$ gcc --version
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
----
$ g++ --version
g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
-----
$ make --version
GNU Make 4.1
----
La méthode de configuration, compilation et installation est souvent décrite dans un fichier README, INSTALL ou équivalent incluse dans les sources. En l'absence d'informations, on peut tester la méthode générique :
Installer les dépendances nécessaires à l'exécution du programme et à sa compilation ( fichiers .dev). Si l'on ne possède pas de liste des dépendances à installer, tester la méthode ci-dessous et en fonction des erreurs signalées, à chaque étape essayer de déterminer les dépendances manquantes : voir 2.2.
Se placer dans le répertoire du répertoire source
$ cd <racine_répertoire_source_local>
Si un programme ./autogen.sh est présent, le lancer
$ ./autogen.sh
Un programme ./configure devrait être présent, soit initialement, soit créé par ./autogen.sh, le lancer
$ ./configure
./configure est un script shell rédigé par l'auteur du programme qui vérifie la présence et la situation des éléments du système qui seront nécessaires à l'étape de compilation. Si un programme Makefile.am (automake am) est présent, ./configure générera un programme Makefile.in (input in) utilisé par make
Lancer la compilation et l'édition de liens avec make et la cible, par défaut Makefile.in
$ make
Installer les fichiers binaires générés à l'étape précédente dans un sous-répertoire de /usr/local/bin/
$ sudo make install
En cas d'erreur ou de mises à jour des sources, pour effectuer une nouvelle configuration, compilation, supprimer les fichiers générés pendant les étapes de configuration et de compilation :
$ make clean
En l'absence de méthode systématique pour lister les dépendances manquantes et les paquets correspondants, on pourra essayer :
Installer les dépendances connues du programme. Par exemple dans le cas du programme Imagination
$ sudo aptitude install sox ffmpeg
Si le programme a une version présente dans les dépôts, afficher ses dépendances
$ apt-cache showsrc imagination # Affichage de la liste des dépendances Build-Depends: etc.....
puis installer les dépendances qui semblent pertinentes et toujours présentes dans la nouvelle version que l'on installe par les sources. Pour installer toutes les dépendances
$ apt-get build-dep imagination
Pour désinstaller le programme installé par make install
$ sudo make uninstall
Installation de la version en cours de développement (trunk 3.4) du logiciel Imagination
Récupération des sources à partir de sourceforge (gestion par subversion)
$ sudo aptitude install subversion
$ svn checkout https://svn.code.sf.net/p/imagination/code/trunk
Affichage de la dernière révision :
$ cd trunk
$ svn log -r HEAD
------------------------------------------------------------------------
r644 | gt67 | 2018-11-16 22:21:08 +0100 (ven. 16 nov. 2018) | 4 lignes
Fixed fullscreen.
Made the fade gradient to work in preview and export.
Updated po.
------------------------------------------------------------------------
La dernière révision est 644
Le fichier ./autogen.sh est présent, lancement de la configuration
$ ./autogen.sh
**Error**: You must have `autoconf' installed.
Download the appropriate package for your distribution,
or get the source tarball at ftp://ftp.gnu.org/pub/gnu/
**Error**: You must have `intltool' installed.
You can get it from:
ftp://ftp.gnome.org/pub/GNOME/
**Error**: You must have `libtool' installed.
You can get it from: ftp://ftp.gnu.org/pub/gnu/
**Error**: You must have `glib' installed.
You can get it from: ftp://ftp.gtk.org/pub/gtk
**Error**: You must have `automake' installed.
You can get it from: ftp://ftp.gnu.org/pub/gnu/
Pour supprimer les erreurs ci-dessus, installer les paquets demandés
$ sudo aptitude install autoconf intltool libtool automake
Les NOUVEAUX paquets suivants vont être installés :
autoconf automake autotools-dev{a} gettext{a} intltool libltdl-dev{a} libsigsegv2{a} libtool m4{a}
Nouvelle tentative de configuration
$ ./autogen.sh
**Error**: You must have `libtool' installed.
You can get it from: ftp://ftp.gnu.org/pub/gnu/
**Error**: You must have `glib' installed.
You can get it from: ftp://ftp.gtk.org/pub/gtk
Les erreurs ci-dessus peuvent être supprimés en installant les paquets libtool-bin et libglib2-dev
$ sudo aptitude install libtool-bin libglib2.0-dev
Nouvelle tentative
$ ./autogen.sh
.....
No package 'gtk+-2.0' found
.....
L'erreur ci-dessus peut-être supprimé en installant le paquet libgtk2.0-dev
$ sudo aptitude install libgtk2.0-dev
Nouvelle tentative
$ ./autogen.sh
.....
No package 'sox' found
......
Installer sox et libsox-dev
$ sudo aptitude install sox libsox-dev
Nouvelle tentative
$ ./autogen.sh
....
Makefile.am: error: required file './ChangeLog' not found
.....
config.status: error: cannot find input file: `Makefile.in'
Le fichier ./ChangeLog est nommé par erreur ./Changelog dans les sources, le renommer pour lever l'erreur
$ svn mv Changelog ChangeLog
A ChangeLog
D Changelog
$ ./autogen.sh
.....
.......
Imagination configuration:
--------------------------
Install in : /usr/local/bin
GTK version : 2.24.31
SOX version : 14.4.1
SVN revision: r644
Now type `make' to compile.
Lancer la configuration avec ./configuration
$ ./configuration
Lancer la compilation
$ make
.....
yes --nonet -o ./html/ ./../imagination.xsl \
./imagination.xml
yes : option invalide -- '-'
yes : option invalide -- '-'
Saisissez « yes --help » pour plus d'informations.
Makefile:678 : la recette pour la cible « html-build.stamp » a échouée
make[3]: *** [html-build.stamp] Erreur 1
make[3] : on quitte le répertoire « /home/philippe/trunk/doc/en »
Makefile:402 : la recette pour la cible « all-recursive » a échouée
make[2]: *** [all-recursive] Erreur 1
make[2] : on quitte le répertoire « /home/philippe/trunk/doc/en »
Makefile:445 : la recette pour la cible « all-recursive » a échouée
make[1]: *** [all-recursive] Erreur 1
make[1] : on quitte le répertoire « /home/philippe/trunk/doc »
Makefile:480 : la recette pour la cible « all-recursive » a échouée
make: *** [all-recursive] Erreur 1
La compilation échoue. Il est nécessaire d'installer docbook-xsl et xsltproc : cette information est fournie par le développeur. Ces deux paquets se retrouvent d'ailleurs dans les dépendances de compilation du paquet debian imagination:
$ apt-cache showsrc imagination |grep Build-Depends
Build-Depends: debhelper (>= 10), dh-autoreconf, dh-exec, doc-base, docbook-xsl, intltool, libgtk2.0-dev, libsox-dev, xsltproc
Installer les dépendances et relancer la configuration puis la compilation, et l'installation.
$ sudo aptitude install docbook-xsl xsltproc # On peut également installer toutes les dépendances avec
$ sudo apt-get build-dep imagination
$ make clean
$ ./autogen.sh
$ ./configuration
$ make
$ sudo make install