====== La gestion des packages .tgz ======
// Par [[wiki:contributeurs:Serge|Serge]] //
// Installer, gérer et fabriquer des packages //
Ce document est sous licence [[http://guilde.jeunes-chercheurs.org/Guilde/Licence/ldl.html|License pour Documents Libres de la guilde des doctorants]].
===== Introduction =====
Chaque distribution à son propre système de package, la Slackware utilise le système de package **.tgz**. Ne vous trompez pas, les .tgz sont bel et bien des packages et non pas un tarball (càd une simple archive). Nous allons voir les outils que nous avons à notre disposition pour la gestion de ces packages.
Utilisez autant que possible les packages pour votre distribution pour pouvoir la maintenir facilement. Si vous devez obligatoirement compiler un programme à partir des sources parce que vous ne trouvez pas de package déjà créé, alors créez vous même le package. C'est assez simple et votre installation restera simple à maintenir.
Lisez l'article [[installation:articles:post_installation]] qui explique déjà un minimum sur les packages.
===== Les outils de bases =====
Différents outils sont livré de base avec la Slackware pour la gestion des packages. Bien que simpliste, ils permettent quand même de gérer correctement les packages. Nous allons les passer en revu.
==== L'utilitaire pkgtool ====
Cet utilitaire complet vous permet de gérer tout les packages déjà installer d'en installer d'autres et même de reconfigurer votre systême.
{{wiki:pkgtool.jpg}}
* **CURRENT**: pour installer des packages depuis le répertoire courant.
* **Other** : pour installer des packages depuis n'importe quel répertoire.
* **Floppy** : pour installer des packages depuis une disquette.
* **Remove** : pour désinstaller un package du système.
* **Setup** : relance un script d'installation (voir [[installation:articles:installation_de_la_slackware]]).
* **Exit** : Quitter pkgtool.
Essayez d'utiliser au maximum cet outil quand vous souhaitez supprimer ou ajouter un package proprement à votre systême.
==== L'utilitaire installpkg ====
Cet utilitaire comme son nom l'indique permet d'installer directement un package en passant lui passant le nom complet du package. Par exemple:
''installpkg /var/update/apache-1.3.31-i486-1.tgz''
installera le package **apache-1.3.31-i486-1.tgz**.
==== L'utilitaire removepkg ====
Cet utilitaire lui permet d'enlever un package déjà installé sur le systême. Par exemple:
''removepkg gimp-1.2.5-i486-1 ''
Pour voir la liste des packets déjà installés, vous utilisez soit **pkgtool** décris plus haut, soit vous listez le contenu du répertoire ''/var/log/packages/''.
==== L'utilitaire upgradepkg ====
Cet utilitaire sert à mettre à jour des packages. En fait il installe le package que vous lui donnez en argument si et seulement si une version précédente du programme ou du package existe, autrement il n'installe pas le package. En réalité il n'installe pas simplement le nouveau package, mais dans un premier temps supprime l'ancien package avant d'installer le nouveau.
Utilisez toujours cet utilitaire quand vous mettez à jour des programmes de votre distribution.
==== L'utilitaire makepkg ====
Cet utilitaire permet de fabriquer ses propres packages à partir de source que l'on vient de compiler. Vois la rubrique dédié à la création des packages ci dessous. ===== Outil supplémentaire: Swaret =====
Swaret est surement l'outils qu'il manquait pour une gestion automatisé de mise à jour de la slackware. Malheureusement cet outil n'est pas installé par défaut dans la slackware et vous devez donc aller le récupérer sur [[http://www.swaret.org/?menu=downloads|http,//www.swaret.org/]].
Récupérer le package de la derniére version **stable** et installez le via installpkg.
==== Configuration de swaret ====
Une fois le swaret installé, nous devonsle configurer. La premiére chose à faire est de copier le fichier exemple de configuration que nous allons configurer:
''cp /etc/swaret.conf.new /etc/swaret.conf''
et editons ''/etc/swaret.conf'':
Voici les lignes que vous devez modifier afin de configurer correctement swaret:
* ''VERSION='': Version de la slackware que vous utilisez **ou** version dans laquelle vous voulez que swaret installe pour vous.
Par exemple ''9.1'' si vous avez une Slackware 9.1 et que vous voulez la garder à jour, ou ''10.0'' si vous voulez passer d'une 9.1 à une 10.0 automatiquement ou si vous voulez garder une 10.0 à jour. Si vous voulez tester la version en cours de developpement (qui sera la prochaine version offcielle), mettez alors ''CURRENT'' comme version.
* ''LANGUAGE='': Mettez ici ''FRANCAIS'' pour avoir swaret en Français.
* ''ROOT='': C'est la liste des serveurs auquel swaret va se connecter pour faire les mises à jour du systéme. Pour les francais je vous conseille d'ajouter en 1er dans la liste ''ROOT=ftp://ftp.kpn.be/pub/slackware/slackware-$VERSION'' afin d'avoir un serveur rapide.
* ''REPOS_ROOT='': Liste de serveur Repository pour des packages supplémentaires aux packages offciels.
Attention: Si vous utilisez un repository, faite bien attention que ce dernier fournit des packages pour la version de votre slackware, et qu'il est conforme à swaret en disposant des fichiers CHECKSUMS.md5, FILELIST.TXT, PACKAGES.TXT et MANIFEST.bz2 afin de gérer correctement les dépendances. Utilisez les repository référencé par swaret sur la page [[http://www.swaret.org/?menu=sp|http,//www.swaret.org/?menu=sp]].
* ''DEP_ROOT='': Serveur de dépendance pour gérer les dépendances entre package. Laissez ceux par défauts.
* ''RANDOMR='': Si on utilise un serveur "au hasard" ou pas. Laissez à 0 pour utilisez le premier serveur de la liste que nous avons ajouté.
* ''USEPKGDESC='': Utilise la description du package, tres utile pour installer un package avec des mots clefs si on ne connait pas son nom exact. Mettez un 1 içi.
* ''EXCLUDE='': Liste des packages que l'on ne veut pas mettre à jour car ils risqueraient de déconfigurer notre systême. Laissez les lignes présentes, sauf si vous savez exactement ce que vous faites.
* ''DEPENDENCY='': Indique si l'on utilise les dépendances ou pas, mettez 1 ici.
* ''DSEARCHLIB='': Indique si vous souhaitez la gestion de recherche de librairie dépendante. Mettez 1 ici.
* ''DSEARCHM='': Indique si l'on utilise slocate pour chercher les librairies dépendantes ou si l'on utilise find. Mettez 1 pour slocate et 0 pour find.
Attention: Par défaut sur la slackware, la base de donnée de slocate est généré tout les jours à 04h40 du matin. Si votre ordinateur est arrété à cette là, la base ne sera jamais mise à jour et donc inutilisable par swaret. Donc soit vous utilisez find à la place, soit vous modifiez la crontab de root pour modifier l'heure de lancement du "daily cron job".
* ''MD5CHECK='': Indique si vous souhaitez vérifier l'intégrité des packages via le contôle MD5, mettez 1 ici.
* ''GPGCHECK='': Indique si vous souhaitez vérifier l'intégrité des packages via le controle de signature GPG, laissez 0 ou 1 si vous savez gérer les signatures GPG avec les clefs publiques.
* ''DESC='': Affiche ou non la description des packages lors qu'un installation, mise à jour ou ré-installation.
* ''CACHE_DIR='': Chemin du réperoire cache de swaret. Attention à ce que la partition posséde pas mal s'espace libre, surtout lors d'une mise à jour compléte de la Slackware.
* ''LOG='': Indique si les opération sont logguées ou pas, laissez à 1.
* ''LOG_FILE='': Nom complet du fichier de log.
* ''WARNINGS='': Affiche ou pas les avertissements, laissez à1 est uen bonne idée.
* ''INFORMATION='': Affiche ou pas les informations.
* ''NIC='': Vous indiquez ici par quelle carte réseau vous êtes connecté au net.
* ''PROGRESS='': Style d'affichage de la progression des téléchargements, 0 pour des %, 1 pour la taille, 2 pour une barre de progression.
* ''TIMEOUT='': Temps en seconde avant d'abondonner une connexion à un serveur qui ne répond pas.
* ''RETRIES='': Nombre de tentatives de connexion avant d'abondonner.
* ''PASSIVE_FTP='': Mettez 1 si votre connexion internet est partagé ou protégé par un firewall.
* ''WGET_PROXY='': Mettez içi l'adresse du proxy si vous en utilisez un pour vos connexions HTTP/FTP (vous en utilisez surement pas, laissez le # devant).
* ''RSYNC_PROXY=''Mettez içi l'adresse du proxy si vous en utilisez un pour vos connexions RSYNC (vous en utilisez surement pas, laissez le # devant)
swaret est maintenant configuré, voyons son utilisation.
==== Utilisation de swaret ====
A chaque utilisation de swaret, vous devez au préalable lui demander de vérifier sa base de donnée locale, de vérifier si de nouveaux packages sont disponible. Pour cela, utilisez la commande:
''swaret --update''
Une fois la base de swaret mise à jour vous pouvez utiliser swaret.Voici les commande les plus utiles:
* ''--upgrade'' pour mettre à jour tous les packages installés. Si vous voulez mettre à jour seulement un package spécifique, passez son nom en argument.
* ''--install PACKAGE -a'' pour installer le package **PACKAGE** automatiquement.
* ''--reinstall PACKAGE -a'' identique mais pour ré-installer un package déjà installé.
* ''--remove PACKAGE -a'' identique mais pour désinstaller.
* ''--get MOT_CLEF'' télécharge dans le répertoire de cache les packages dont **MOT_CLEF** est dans la description.
* ''--dep'' vérifie les dépendances.
* ''--resume ''reprend les téléchargements intérompus.
* ''--puge'' purge le répertoire de cache, à faire à chaque fin d'utilisation de swaret.
* ''--check'' vérifie si une nouvelle version de swaret existe.
D'autres commandes existent, si vous souhaitez plus de détails lisez le **how to use** et la **FAQ** sur le site de swaret: [[http://www.swaret.org|http,//www.swaret.org]].
===== Faire son propre package =====
Quand vous ne trouvez pas le package du logciel que vous voulez installer, il reste une solution: récupérer les sources de ce dernier, faire son propre package et l'installer. Il existe deux méthodes pour faire cela: la methode automatique via un utilitaire comme **checkinstall** ou la méthode manuelle avec **makepkg**.
==== Utiliser checkinstall ====
Pour utiliser checkinstall il n'y a rien de plsu simple. Tout d'abord il faut installer checkinstall lui même (vous trouverez son package sur [[http://www.linuxpackages.net|linuxpackages]]). Quand vous souhaitez alors installer un programme via ses sources, configurez sa compilation avec le ''./configure'' des sources, puis lancez le ''make''. Puis au lieu de lancer le ''make install'' vous appelez ''checkinstall''. Ce dernier va alors créér pour vous le package et va l'installer. Simple non?
==== Utiliser makepkg ====
La méthode est assez simple, il suffit de configurer normalement les sources via le ''./configure'' des sources, de les compiler avec le ''make''. Aprés au lieu de lancer le ''make install'', nous allons créer un répertoire temporaire pour stocker les fichier binaires du packages, par exemple /pkgtmp. Nous installons alors les binaires dans ce répertoire via un ''make install DESTDIR=/pkgtmp'' ou ''make install ROOT=/pkgtmp'' ou encore ''make install prefix=/pkgtmp''. Cela dépend du Makefile de l'application, à vous de vérifier avant donc.
Si vous souhaitez que lorsque vous installerais ce package un script shell soit executé automatiquement (par exemple copie de fichiers, création de fichier supplémentaire ou tout autre choses qu'un script shell peu faire), creez alors un répertoire ''install/'' dans le répertoire temporaire (''/pkgtmp'' dans notre exemple) et placez y dedans votre script shell en faisant bien attention de l'appeller ''doinst.sh''.
Enfin pour créer le package, à la racine du répertoire temporaire, ''/pkgtmp ''dans notre exemple, et entrer la commande:
''makepkg nom_package.tgz''
++++ Tags | {{tag>administration articles dependances logiciels makepkg paquets pkgtool }} ++++