original in de Mario M. Knopf
de to en Mario M. Knopf
Mario appr�cie de travailler avec Linux, les r�seaux et tout sujet relatif � la s�curit�.
Il arrive fr�quemment que des programmes que l'on d�sire tester n'existent qu'au format tar.gz sans �tre disponibles au format RPM ou Debian. Dans un tel cas, vous t�l�chargez le paquet (package) source, vous le d�compactez et le compilez manuellement. Jusque l�, c'est tout bon. Oui, mais que faire si vous voulez supprimer ce programme ?
Le fichier Makefile peut contenir une routine appropri�e pour d�sinstaller le programme mais ce n'est pas syst�matique. Bien s�r, il reste la possibilit� d'installer le programme dans un r�pertoire temporaire et d'inscrire tous les fichiers qui ont �t� cr��s ou modifi�s par l'installation et ce en pr�vision d'une suppression ult�rieure. Mais convenons que cette proc�dure est plut�t p�nible et astreignante surtout si des programmes sont fr�quemment compil�s � partir des sources. CheckInstall [1] �crit par Felipe Eduardo S�nchez D�az Dur�n r�soud ce probl�me.
Il est de r�gle de compiler et d'installer un programme r�pondant au standard GNU Autoconf en utilisant la s�quence bien connue de commandes
./configure && make && make
install.
Le script shell configure tente de deviner les valeurs correctes de diff�rentes variables d�pendantes du syst�me, qui seront utilis�es apr�s, au cours de la compilation. Il v�rifie si tous les requis pour une compilation correcte sont rencontr�s et utilise ces valeurs pour g�n�rer un Makefile dans chaque r�pertoire du paquet. En outre, le script configure g�n�re divers autres fichiers. En r�sum�, il s'agit de :
Apr�s que le script configure ait achev� sa t�che avec succ�s, vous tapez la commande make pour compiler le paquet. Ce qui va g�n�rer les binaires ex�cutables. Il y a la possibilit� de lancer, imm�diatement apr�s un make, un self-test avec la commande make check. Mais il s'agit d'une �tape �ventuelle car le paquet doit supporter cette proc�dure suppl�mentaire. Si le make a accompli son oeuvre, vous pouvez alors installer le programme compil� gr�ce � la commande make install - pour des raisons �videntes, vous devez b�n�ficier des droits d'utilisateur privil�gi� pour l'accomplissement de cette �tape. Apr�s que le programme ait �t� install� vous pouvez enlever les binaires et les fichiers objets du r�pertoire qui contient le code source en tapant la commande make clean. Si vous pr�f�rez aussi effacer les fichiers cr��s par le script configure, alors tapez make distclean. Cependant ces deux derni�res �tapes sont, tout comme le make check, optionnelles et sont habituellement utilis�es par le d�veloppeur durant la phase de d�veloppement et de test. Elles peuvent aussi �tre utilis�es par l'utilisateur pour �pargner la capacit� du disque dur ou pour conserver une structure de r�pertoires claire. En outre, make distclean permet de compiler le paquet pour un type d'ordinateur diff�rent.
Des informations plus d�taill�es sur GNU Autoconf sont disponibles dans le manuel en ligne � l'adresse [2]. En plus d'une introduction basique, vous en apprendrez plus sur le � GNU Build System �, en cr�ant vos propres scripts configure , en programmant en M4 et en cr�ant vos propres macros, programmes shell portables et autres.
Ainsi que nous l'avons d�j� mentionn�, la s�quence de commande pour g�n�rer, � partir de ses sources, un programme r�pondant au standard GNU Autoconf, est :
./configure && make && make install
Arriv� � ce stade, c'est le moment d'utiliser CheckInstall. La commande checkinstall remplace la commande make install . �tant entendu que les deux autres commandes sont maintenues et utilis�es tout comme auparavant. Ainsi, la nouvelle s�quence de commandes, quand on utilise CheckInstall, devient :
./configure && make && checkinstall
Pourtant, l'instruction checkinstall lance bien make install par d�faut et supervise tous les �v�nements en �criture engendr�s par l'installation. A cet effet CheckInstall utilise le programme Installwatch [3], �crit � l'origine par Pancrazio de Mauro. Apr�s que make install se soit achev� avec succ�s, CheckInstall g�n�re un paquet Slackware, Debian ou RPM et l'installe avec le gestionnaire par d�faut de la distribution tout en laissant une copie du paquet dans le r�pertoire source ou dans le r�pertoire de stockage standard. Par ailleurs, il est possible de changer le r�pertoire de stockage par d�faut � travers la variable PAK_DIR au sein du fichier de configuration. La copie ainsi � adress�e � peut �tre install�e, bien s�r en tenant compte de possibles d�pendances, sur d'autres machines du r�seau sans avoir � recompiler � chaque fois les sources du paquet.
CheckInstall ne se limite pas � l'utilisation de make install mais coop�re avec d'autres instructions d'installation. Si, par exemple, le script d'installation est setup.sh, la s�quence de commande sera :
./configure && make && checkinstall setup.sh
Par ailleurs, il est possible de lancer CheckInstall avec diverses options. La commande suivante propose une vue d'ensemble de toutes les options disponibles qui sont r�parties dans les sections Install options, Scripting options, Info display options, Package tuning options, Cleanup options et About CheckInstall:
# checkinstall -h
Si CheckInstall est lanc� avec une de ces options, cette derni�re supplantera celles qui sont reprises dans le fichier de configuration checkinstallrc.
Mais CheckInstall a aussi ses limites. Il ne peut manipuler des programmes li�s (linked) statiquement, parce que Installwatch n'est pas capable de surveiller les fichiers modifi�s durant la proc�dure d'installation. En g�n�ral, il y a deux types de biblioth�ques de programme : des biblioth�ques li�es statiquement ou dynamiquement. Ces biblioth�ques sont int�gr�es dans un programme par une directive include. Les programmes li�s statiquement ont d�j� toutes les fonctions de biblioth�ques n�cessaires et ne doivent pas les charger en m�moire lors de leur ex�cution. En outre, ils sont ind�pendants des biblioth�ques install�es sur le syst�me utilis� car le Linker a imbriqu� la biblioth�que dans le programme ex�cutable au moment de la compilation.
CheckInstall fait d�j� parti, depuis longtemps, de l'ensemble des logiciels propos�s par les distributions majeures et peut �tre install� avec le gestionnaire de paquet du syst�me. Si �a n'est pas le cas, vous pouvez t�l�charger un fichier � tar-balls � ou un paquet pr�-compil� convenant � diverses distributions, disponible sur le site web du projet [4].
L'installation de CheckInstall est tr�s simple et se d�roule en peu d'�tapes mais pour une installation r�ussie, vous avez paradoxalement besoin de CheckInstall. Apr�s l'instruction incontournable make install, vous tapez checkinstall, qui g�n�re un paquet binaire appropri� venant du programme compil�. Alors vous pouvez installer ce paquet avec votre gestionnaire de paquet et il est aussi possible de d�sinstaller ce paquet proprement. Mais avant que CheckInstall ne cr�e le paquet, vous devez r�pondre � une question sur le gestionnaire de paquet utilis� et v�rifier l'exactitude des champs d'information. Ces derniers appara�tront peu apr�s dans l'en-t�te du paquet.
La proc�dure d'installation de la nouvelle version b�ta checkinstall-1.6.0beta4.tgz est expos�e dans l'encart qui suit. Cela installera CheckInstall, Installwatch et makepak, une version modifi�e de makepkg. Si les changements de la nouvelle version vous int�ressent, jetez un oeil sur la Release Notes [5] et/ou dans le Changelog [6].
$ tar xzf checkinstall-1.6.0beta4.tgz
$ cd checkinstall-1.6.0beta4
checkinstall-1.6.0beta4 $ make
[...]
checkinstall-1.6.0beta4 $ su
Password:
checkinstall-1.6.0beta4 # make install
[...]
checkinstall-1.6.0beta4 # checkinstall
checkinstall 1.6.0beta4, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R
*************************************
*** RPM package creation selected ***
*************************************
This package will be built according to these values:
1 - Summary: [ CheckInstall installations tracker, version 1.6.0beta4 ]
2 - Name: [ checkinstall ]
3 - Version: [ 1.6.0beta4 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ checkinstall-1.6.0beta4 ]
9 - Alternate source location: [ ]
10 - Provides: [ checkinstall ]
11 - Requires: [ ]
Enter a number to change any of them or press ENTER to continue:
Installing with make install...
========================= Installation results =========================
[...]
========================= Installation successful ======================
Copying documentation directory...
./
./NLS_SUPPORT
./README
./FAQ
./TODO
./CREDITS
./INSTALL
./Changelog
./BUGS
./installwatch-0.7.0beta4/
./installwatch-0.7.0beta4/README
./installwatch-0.7.0beta4/TODO
./installwatch-0.7.0beta4/VERSION
./installwatch-0.7.0beta4/INSTALL
./installwatch-0.7.0beta4/CHANGELOG
./installwatch-0.7.0beta4/BUGS
./installwatch-0.7.0beta4/COPYING
./RELNOTES
./COPYING
Copying files to the temporary directory...OK
Striping ELF binaries and libraries...OK
Compressing man pages...OK
Building file list...OK
Building RPM package...OK
NOTE: The package will not be installed
Erasing temporary files...OK
Writing backup package...OK
Deleting temp dir...OK
****************************************************************
Done. The new package has been saved to
/usr/src/redhat/RPMS/i386/checkinstall-1.6.0beta4-1.i386.rpm
You can install it in your system anytime using:
rpm -i checkinstall-1.6.0beta4-1.i386.rpm
****************************************************************
checkinstall-1.6.0beta4 # cd /usr/src/redhat/RPMS/i386/
i386 # rpm -i checkinstall-1.6.0beta4-1.i386.rpm
i386 #
L'utilisateur d'une distribution bas�e sur Debian installera le paquet avec dpkg -i. Les utilisateurs de Slackware utiliseront installpkg.
En utilisant la fonction query de votre gestionnaire de paquet, en l'occurence ici RPM, vous pouvez v�rifier si le paquet a �t� proprement install� dans la base de donn�es du gestionnaire et voir les champs d'information compl�mentaires de l'en-t�te du paquet.
$ rpm -qi checkinstall
Name : checkinstall Relocations: (not relocatable)
Version : 1.6.0beta4 Vendor : (none)
Release : 1 Build Date : Mo 06 Dez 2004 17:05:45 CET
Install Date: Di 07 Dez 2004 01:41:49 Build Host : deimos.neo5k.lan
Group : Applications/System Source RPM : checkinstall-1.6.0beta4-1.src.rpm
Size : 264621 License : GPL
Signature : (none)
Packager : checkinstall-1.6.0beta4
Summary : CheckInstall installations tracker, version 1.6.0beta4
Description :
CheckInstall installations tracker, version 1.6.0beta4
CheckInstall keeps track of all the files created or
modified by your installation script ("make install"
"make install_modules", "setup", etc), builds a
standard binary package and installs it in your
system giving you the ability to uninstall it with your
distribution's standard package management utilities.
Vous pouvez modifier le fichier texte /usr/lib/local/checkinstall/checkinstallrc, suffisamment comment�, en vue de changer le comportement par d�faut de CheckInstall.
Du fait que CheckInstall vous demande quel type de paquet doit �tre engendr�, � chaque utilisation, il est plus judicieux de reprendre cette valeur de mani�re permanente dans la variable INSTYPE. Il est �galement utile de s'attarder sur les variables INSTALL, PAK_DIR et RPM_FLAGS en alternative de DPKG_FLAGS. Avec les deux derni�res variables, vous pouvez d�finir quelques � flags (drapeau) � d'installation optionnels et en modifiant PAK_DIR, vous pouvez d�terminer un autre r�pertoire qui contiendra la copie du paquet. INSTALL vous permet de d�cider entre simplement g�n�rer le paquet ou l'installer.
$ cat /usr/lib/local/checkinstall/checkinstallrc
####################################################################
# CheckInstall configuration file #
########################################
####################################################################
# These are default settings for CheckInstall, modify them as you #
# need. Remember that command line switches will override them. #
####################################################################
# Debug level
# 0: No debug
# 1: Keep all temp files except the package's files
# 2: Keep the package's files too
DEBUG=0
# Location of the "installwatch" program
INSTALLWATCH_PREFIX="/usr/local"
INSTALLWATCH=${INSTALLWATCH_PREFIX}/bin/installwatch
# Location of the makepkg program. "makepak" is the default, and is
# included with checkinstall. If you want to use Slackware's native "makepkg"
# then set this to "makepkg"
MAKEPKG=/sbin/makepkg
# makepkg optional flags. These are recommended if running a newer Slackware
# version: "-l y -c n"
MAKEPKG_FLAGS="-l y -c n"
# Is MAKEPKG running interactively? If so, you might want
# to see what it's doing:
SHOW_MAKEPKG=0
# Where will we keep our temp files?
BASE_TMP_DIR=/var/tmp ## Don't set this to /tmp or / !!
# Where to place the installed document files
DOC_DIR=""
# Default architecture type (Leave it empty to allow auto-guessing)
ARCHITECTURE=""
# Default package type. Leave it empty to enable asking everytime
# S : Slackware
# R : RPM
# D : Debian
INSTYPE="R"
# Storage directory for newly created packages
# By default they will be stored at the default
# location defined for the package type
PAK_DIR=""
# RPM optional flags
RPM_FLAGS=" --force --nodeps --replacepkgs "
# dpkg optional flags
DPKG_FLAGS=""
## These are boolean. Set them to 1 or 0
# Interactively show the results of the install command (i.e. "make install")?
# This is useful for interactive installation commands
SHOW_INSTALL=1
# Show Slackware package installation script while it runs? Again, useful if
# it's an interactive script
SHOW_SLACK_INSTALL=0
# Automatic deletion of "doc-pak" upon termination?
DEL_DOCPAK=1
# Automatic deletion of the spec file?
DEL_SPEC=1
# Automatic deletion of "description-pak"?
DEL_DESC=1
# Automatically strip all ELF binaries?
STRIP_ELF=1
# Automatically strip all ELF shared libraries?
# Note: this setting will automatically be set to "0" if STRIP_ELF=0
STRIP_SO_ELF=1
# Automatically search for shared libraries and add them to /etc/ld.so.conf?
# This is experimental and could mess up your dynamic loader configuration.
# Use it only if you know what you are doing.
ADD_SO=0
# Automatically compress all man pages?
COMPRESS_MAN=1
# Set the umask to this value
CKUMASK=0022
# Backup files overwritten or modified by your install command?
BACKUP=1
# Write a doinst.sh file that installs your description (Slackware)?
AUTODOINST=1
# Are we going to use filesystem translation?
TRANSLATE=1
# Reset the owner/group of all files to root.root?
RESET_UIDS=0
# Use the new (8.1+) Slackware description file format?
NEW_SLACK=1
# Comma delimited list of files/directories to be ignored
EXCLUDE=""
# Accept default values for all questions?
ACCEPT_DEFAULT=0
# Use "-U" flag in rpm by default when installing a rpm package
# This tells rpm to (U)pdate the package instead of (i)nstalling it.
RPM_IU=U
# Inspect the file list before creating the package
CK_INSPECT=0
# Review the .spec file before creating a .rpm
REVIEW_SPEC=0
# Review the control file before creating a .deb
REVIEW_CONTROL=0
# Install the package or just create it?
INSTALL=0
CheckInstall est un outil remarquable qui facilite grandement l'administration d'un syst�me Linux. Particuli�rement si des programmes doivent �tre fr�quemment compil�s depuis leurs sources, CheckInstall vous donne la possibilit� de les enlever proprement sans risque de rendre le syst�me incoh�rent. Par ailleurs, vous pouvez aussi installer ces paquets sur d'autres machines sans avoir � re-compiler le programme � chaque fois, �videmment en prenant en consid�ration de possibles d�pendances de paquet. Cependant, ceci n'est pas un gros probl�me pour les machines identiques.
[1] http://asic-linux.com.mx/~izto/checkinstall/
[Page d'accueil de CheckInstall]
[2] http://www.gnu.org/software/autoconf/manual/autoconf-2.57/autoconf.html
[Manuel en ligne de GNU Autoconf]
[3] http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
[Installwatch]
[4] http://asic-linux.com.mx/~izto/checkinstall/download.php
[T�l�chargement de CheckInstall]
[5] http://asic-linux.com.mx/~izto/checkinstall/docs/RELNOTES
[Release Notes]
[6] http://asic-linux.com.mx/~izto/checkinstall/docs/Changelog
[Changelog]