Installation de programmes à partir des sources

Dernière mise à jour : Debian 9.6

Ce document décrit l'installation de programmes à partir des sources.

Sommaire

1 - Préalable

1.1 - Sources du programme

$ tar -xjvf imagination-3.1.tar.bz2
$ tar -xzvf poedit-2.2.tar.gz

1.2 - Installation des outils

$ 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

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

2 - Méthode générique

2.1 - Configuration - Compilation - Installation

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 :

$ cd <racine_répertoire_source_local>
$ ./autogen.sh
$ ./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

$ make      
 $ sudo make install
$ make clean 

2.2 - Recherche des dépendances

En l'absence de méthode systématique pour lister les dépendances manquantes et les paquets correspondants, on pourra essayer :

$ sudo aptitude install sox ffmpeg
$ 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   

2.3 - Désinstallation

Pour désinstaller le programme installé par make install

$ sudo make uninstall

3 - Exemple

Installation de la version en cours de développement (trunk 3.4) du logiciel Imagination

$ sudo aptitude install subversion
$ svn checkout https://svn.code.sf.net/p/imagination/code/trunk
$ 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

$ ./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}
$ ./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
$ ./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
$ ./autogen.sh
.....
No package 'sox' found
......

Installer sox et libsox-dev

$ sudo aptitude install sox libsox-dev
$ ./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.
$ ./configuration
$ 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
$ 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