Search google

Google
 

This is the place where I leave my scripts, my useful files, glad to have your suggestions. If you want to make discuss, please contact me at YM id bornbygoogle or my mail bornbygoogle@yahoo.com or simply let ur mail. I'll try to contact as soon as possible :) Nice to see you :D

Thursday, January 17, 2008

APT : Advanced Package Tool

apt, et toutes les fonctions qui lui sont associées, est un outils extrêmement puissant qui permet de gérer les packages de façon très très fine. Bien sûr, comme tout logiciel permettant "de tout faire", il y a de très nombreuses options à connaître pour accéder à toutes ses possibilités.

Cependant, pour commencer, seules quelques unes d’entre elles sont à maîtriser. Et ce sont celles-là que je me propose de présenter dans ce document.

:
Pour les angoissés de la ligne de commande, il existe un excellent GUI (Graphical User Interface/Interface Graphique Utilisateur) de l'outil apt: synaptic. Cette interface implique que le serveur X fonctionne, c'est à dire d'être dans un environnement grahique.
Une autre interface existe: dselect

Si un jour vous "cassez" votre serveur X ou votre environnement graphique de travail (vous ne pourrez donc plus vous loguer dans un environnemnt graphique) vous serez heureux de connaître ces quelques commandes pour les lancer depuis une console virtuelle.

APT : Le fichier sources.list

Le fichier de configuration de apt est /etc/apt/sources.list. C’est dans celui-ci qu'il faut indiquer à apt où il doit regarder pour mémoriser l’ensemble des package disponibles sur le système.
Le nom de ce fichier n’est pas innocent puisqu’il contient la liste des sources qui contiennent les packages mis à notre disposition.

Je ne m’étendrais pas plus sur la syntaxe de ce fichier étant donné que si vous avez installé les pages de man en français, alors en tapant:

man sources.list

vous obtiendrez une information riche et complète.

Liste des packages

Le nombre de packages disponibles varie de plus de 8 700 pour la version stable de Debian à plus de 19 900 pour la version unstable.

Après avoir lu assidument la page man de sources.list et avoir configuré correctement le fichier /etc/apt/sources.list, il est nécessaire d'informer apt des modifications apportées à son fichier de configuration.

Pour ce faire, et en tant que root, lancer la commande:

apt-get update

:
Le symbole # indique que la commande est lancée en tant que root.

Cette commande permet à apt de mettre à jour sa base de données contenant l’intégralité des informations (et non les packages eux-même!) sur les packages dont l’emplacement se trouve sur le ou les serveurs indiqués dans le fichier sources.list.

:
Pour la suite des évènements, il faut que les packages apt-cacher, apt-rdepends, apt-show-versions et apt-file soient installés sur votre machine.

Si ce n’est pas le cas, installez-les ainsi:

apt-get install apt-cacher apt-rdepends apt-show-versions apt-file

Pour visualiser la longue liste de packages disponibles, taper la commande suivante:

apt-cache pkgnames

Classer le résultat par ordre alphabétique

apt-cache pkgnames |sort

Et pour avoir le temps de lire:

apt-cache pkgnames |sort |less

  • Pour faire défiler ligne par ligne: appuyer sur Enter
  • Pour faire défiler écran par écran: appuyer sur barre d’espace
  • Pour remonter dans la liste: appuyer sur la flèche up
  • Pour aller directement à la fin: appuyer sur la combinaison de touches shift g
  • Pour retourner au début: appuyer sur g
  • Sortir de la commande: appuyer sur q

Information complète de chaque package

apt-cache dumpavail |less

Rechercher un package

Pour rechercher dans la liste un/des package/s dont le nom serait ou contiendrait peut-être le mot wmaker il suffit de taper /wmaker comme ceci (voir dernière ligne du cadre ci-dessous):

fookb-wmaker
foomatic-bin
foomatic-db
foomatic-db-engine
foomatic-db-gimp-print
foomatic-db-gutenprint
foomatic-db-hpijs
foomatic-filters
foomatic-filters-ppds
foomatic-gui
fop
fop-doc
foremost
forg
formed
forrest
fort77
fortran77-compiler
fortran95-compiler
fortran-compiler
fortune
fortune-cookie-db
fortune-mod
fortunes
fortunes-bg
fortunes-bofh-excuses
fortunes-br
fortunes-cs
fortunes-de
fortunes-debian-hints
fortunes-eo
fortunes-eo-ascii
fortunes-eo-iso3
/wmaker

Ne pas oublier de taper le slash "/"

apt met alors en surbrillance, en premières lignes, toutes les itérations du mot wmaker

  • Pour aller d’itération en itération utilisez la touche n (pour next).

Recherche plus précise

La méthode décrite ci-dessus ne permet pas une recherche "serrée" de tous les packages relatifs/dépendant d'un pakage bien précis.

Par exemple, si vous souhaitez installer l’équivalent de photoshop sous Linux, alors vous savez peut-être simplement que le logiciel en question s’appelle The GIMP. Mais bien évidemment, plusieurs packages devront être installés pour avoir une installation complète de The GIMP.

apt peut fournir seulement la liste des packages ayant un lien avec The GIMP:

apt-cache search gimp

Et là, sous vos yeux ébahis
et d’émotion emplis,
défile la liste complète
des fichiers à la conquéte
desquels était partie votre requète............. Marquons une pose!

Mais lequel de ces pakages faut-il choisir ?

Les dépendances

Pour savoir quels packages il faut installer pour avoir une installation complète de The GIMP utiliser cette commande:

apt-cache depends gimp

gimp
Dépend: wget
Dépend: gimp-data
Dépend: libaa1
Dépend: libart-2.0-2
Dépend: libatk1.0-0
Dépend: libc6
Dépend: libcairo2
Dépend: libexif12
Dépend: libexpat1
Dépend: libfontconfig1
Dépend: libfreetype6
Dépend: libgimp2.0
Dépend: libglib2.0-0
Dépend: libgtk2.0-0
Dépend: libice6
Dépend: libjpeg62
Dépend: liblcms1
Dépend: libmng1
Dépend: libpango1.0-0
Dépend: libpng12-0
Dépend: libsm6
Dépend: libtiff4
Dépend: libwmf0.2-7
Dépend: libx11-6
Dépend: libxcursor1
Dépend: libxext6
Dépend: libxfixes3
Dépend: libxi6
Dépend: libxinerama1
Dépend: libxmu6
Dépend: libxpm4
Dépend: libxrandr2
Dépend: libxrender1
Dépend: libxt6
Dépend: zlib1g
|Suggère: gimp-help-en
Suggère:
gimp-help-cs
gimp-help-de
gimp-help-en
gimp-help-fr
gimp-help-it
gimp-help-ko
gimp-help-nl
gimp-help-no
gimp-help-ru
gimp-help-sv
gimp-help-zh-cn
Suggère: gimp-python
Suggère: libgimp-perl
Suggère: gimp-data-extras
Suggère: libasound2
Recommande: gimp-svg
Recommande: gimp-print
Est en conflit avec: gimp-data
Est en conflit avec: libgimp2.0
Remplace: gimp-data

En fait, cette commande ne sert qu’à vous renseigner présicément sur tous les packages qui doivent ou devront être installés pour que tout fonctionne bien.

On voit donc très clairement, dans un premier temps, les packages dont dépend la package gimp, puis les packages suggérés (donc non nécéssaires), les packages recommandés (encore moins nécessaires que les packages suggérés) puis les conflits que nous rencontrerons si certains packages sont déjà présents sur notre système et enfin les packages qui seront remplacés (c’est à dire supprimés puisque la version de gimp que l’on envisage d’installer est plus récente qu’une éventuelle version 1.3 qui existe peut-être déjà sur notre système).

:
Les packages suggérés et recommandés ne sont pas à négliger et peuvent apporter des fonctionnalités intéressantes.
Par exemple, le package recommandé gimp-svg apporte le support SVG à Gimp.
suggérés et recommandés veulent tout simplement dire non indispensables pour ontenir une installation cohérente et stable.

Il est fort probable que l’énorme majorité de ces packages soit déjà présente sur notre système. Et si d’aventure quelques uns venaient à manquer, apt le signalera lors de l’installation du package gimp et demandera s'il doit ou non les installer.

Si nous répondon non alors toute l’installation s’arrêtera et aucune modification ne sera apportée à notre système.

L’option -p

Essayons à nouveau la commande ci-dessus en ajoutant l’option ainsi:

apt-cache depends -p gimp

Si The GIMP n’est pas installé, la commande ci-dessus ne renvoie rien indiquant ainsi que tous les packages nécessaires à The GIMP sont déjà installés. Cette option affiche donc les package

Il est même possible de ne visualiser que ceux qui ne sont pas installés:

apt-cache depends -p gimp |grep NotInstalled

:
Il est important de retenir que les informations affichées jusqu'à présent concernent un package (gimp) qui n’est toujours pas installé ! Et ça marche strictement de la même façon pour des packages déjà installés.

Mais que va donc installer apt ?

Une fois un package installé, il est possible de savoir ce qu’il y a de nouveau sur la machine. De même qu'il est possible de connaître la commande à taper pour lancer The GIMP

On fait appelle aux deux commandes suivantes:

apt-file update

apt-file list gimp

...capable de vous fournir la liste des fichiers contenus dans un package, que celui-ci soit installé ou non sur votre PC !

La première commande ne sert qu’à mettre à jour la base de données de apt.

:
La deuxième commande est un peu traitre en ce sens qu’elle renvoie la liste des fichiers contenus dans tous les packages dont le nom commence par gimp.

Pour éviter d’être submergé d’informations non désirées, il faut restreindre le champ d’application de cette commande:

apt-file list gimp |grep "^gimp:"

gimp: usr/bin/gimp
gimp: usr/bin/gimp-2.2
gimp: usr/bin/gimp-remote
gimp: usr/bin/gimp-remote-2.2
gimp: usr/lib/gimp/2.0/environ/default.env
gimp: usr/lib/gimp/2.0/modules/libcdisplay_colorblind.la
gimp: usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so
gimp: usr/lib/gimp/2.0/modules/libcdisplay_gamma.la
gimp: usr/lib/gimp/2.0/modules/libcdisplay_gamma.so
gimp: usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.la
gimp: usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so
gimp: usr/lib/gimp/2.0/modules/libcdisplay_proof.la
[...]

...qui indique que la commande à taper pour lancer/exécuter The GIMP est gimp ou gimp-2.2
On en déduit que les binaires (équivalent des .exe sous windows) se trouvent dans /bin , ou /sbin , ou /usr/bin , /usr/sbin etc...

Une alternative à cette dernière commande est:

dpkg -L gimp

Puis-je faire confiance à apt ?

Bien que saugrenue, cette question mérite une petite explication.

En effet, et cela est particulièrement vrai pour la version "unstable", les packages présents sur les serveurs dont l’URI est indiqué dans le fichier sources.list, évoluent au file du temps. Leur version change. Cela implique qu’avant d’installer un package, il faut mettre à jour la base de données de apt avec la commande:

apt-get update

Il en va de même pour les commandes apt-file et apt-cache. Cela veut dire qu'il faut également s'assurer que leurs données sont à jour en lançant les deux commandes suivantes:

apt-file updates

apt-cache gencaches

Dois-je installer un package ?

Au delà de la simple considération de l’envie d’installer ou non un package, on peut, en toute logique, se demander si le package n’est pas déjà installé et s’il l’est, a t-on la dernière version?

Pour voir si un package est installé et si c’est la dernière version, deux commandes sont disponibles:

apt-cache show gimp

Et là plusieurs options s’offrent à nous:

  • apt ne renvoie aucun message: ce package n’est pas installé. On peut donc l’installer si on le souhaite.
  • apt renvoie un message où le nom du package n’apparait qu’une seule fois: la dernière version du package est effectivement installée.
  • apt renvoie un message où le nom du package apparait deux fois: la première itération correspond à la dernière version du package disponible qui est plus récente que celle qui est installée sur notre PC (c’est la deuxième itération).

:
Pour être sûr des informations que renvoie la commande apt-cache show penser à la mettre à jour avec apt-cache update

Mais comme la sortie de la commande ci-dessus est assez confuse, il vaut mieux utiliser celle-ci, beaucoup plus claire:

apt-cache policy gimp

gimp:
Installé : 2.2.15-2
Candidat : 2.2.15-2
Table de version :
*** 2.2.15-2 0
500 ftp://ftp.de.debian.org unstable/main Packages
500 ftp://ftp.nerim.net unstable/main Packages
100 /var/lib/dpkg/status

Ou bien:

apt-cache policy gimpuui

W: Impossible de trouver le paquet gimpuui

Quels packages mettre à jour ?

A cette question, une seule réponse:

apt-show-versions |sort |less

ou:

apt-show-versions gimp

Cette commande renvoie une ligne pour chaque package installé et indique, à la suite du nom du package, s’il est à jour (uptodate) ou bien s’il peut être mis à jour (upgradable) et vers quelle version.

Avant d'utiliser cette commande, il est nécessaire de mettre à jour son cache en tant que root:

apt-show-versions -i

Installer un package

Après avoir trouvé le package que vous cherchiez, (on supposera que c’était windowmaker), vous savez qu’il ne se nome pas exactement windowmaker mais wmaker et qu’apparemment il y a d’autres packages qui parlent aussi de lui. Mais bon, tentons d’installer notre package en supposant que vous n’avez aucune idée de la version de ce dernier car vous n’avez absolument rien suivi de tout ce que je vous ai raconté jusqu’à présent et que vous êtes un utilisateur pressé.

Contrôlons maintenant la version du package qui sera installé:

apt-cache showpkg wmaker

...et installons-le avec la commande:

apt-get install wmaker

:
Il est possible qu’apt demande s’il doit installer également les packages dont dépend wmaker. Répondez alors par O/N ou Y/N mais si vous répondez N, alors votre package ne s’installera pas.

:
Prenez également l’habitude de lire les messages que renvoie apt. La plupart du temps la réponse au problème qui se présente est comprise dans le message renvoyé.

Désinstaller un package

:
Lorsque l'on retire un package du système, apt n’efface pas les fichiers de configuration de ce package (ces fichiers se trouvent la plus part du temps dans le répertoire /etc ). Ceci permet de réinstaller le package ultérieurement plus rapidement et surtout de retrouver sa configuration.

:
De nombreux logiciels créent, lors de leur utilisation, des fichiers de configuration dans les répertoires personnels des utilisateurs.
Ces fichiers ne sont jamais supprimés lors de la désinstallation d’un package.

Comme apt fait tout, vite et bien, il indiquera lors de la déinstallation d’un package les répertoires dans lesquels se trouvent des fichiers qu’il n’a pas supprimé.

Lors de la sésinstallation de wmaker ou bien on souhaite conserver les fichiers de configuration:

apt-get remove wmaker

ou bien on souhaite les supprimer également:

apt-get --purge wmaker

:
Dans les deux cas, il faut lire très attentivement les messages que vous renvoie la commande. En effet, apt indique quels autres packages il doit désinstaller en même temps que celui que l'on souhaite supprimer. Et il nous demande notre accord ! Donc nous sommes seuls responsables des conséquences de nos actes

Le package n'est pas supprimé

Cependant, et quand bien même nous donnons notre accord pour la suppression du package, il arrive qu’au final, si nous prenons la peine de lire jusqu’au bout les messages que nous adresse apt, notre package ne soit pas supprimé. Quelle en est la raison ?

Dans certains cas, apt peut outre-passer nos ordres s’il estime qu’en supprimant le package que nous lui demandons de supprimer, cela rompt des dépendances (les packages qui dépendent de celui que nous souhaitons supprimer) et la stabilité du système.

Comme apt nous indique les dépendances qui seraient cassées en cas de désinstallation de notre package, nous pouvons, si et seulement si nous savons ce que nous faisons, procéder avec ordre et méthode. C’est à dire commencer par désisntaller les packages dépendant du notre puis enfin désinstaller ce dernier.

Afficher les dépendance

Pour mieux voir les packages qui ont besoin, pour être stables et en état de fonctionnement, de celui que nous souhaitons supprimer, on les affiche ainsi:

apt-cache rdepends wmaker

Suppression forcée

apt-get remove --force-yes wmaker

La première fois, c’est le genre de commande qu’on lance les mains jointes à genoux devant son PC ! Malheureusement, un avé Maria ou un Pater Noster ne peuvent plus rien pour nous. En revanche, un bon jeu de CD d’install peut s’avérer de première nécessité !

Réinstaller un package déjà installé

Il arrive, pour des raisons obscures, que nous souhaitions ré-installer un package déjà installé.

:
Si le package a une nouvelle version, c’est cette dernière qui sera installée !

Il devient donc nécessaire de savoir quelle version est déjà installée (voir plus haut). Ensuite, utiliser cette commande

apt-get install --reinstall wmaker

Dupliquer une installation

Cette opération peut s'avérer fort intéressante car elle permet le plus simplement du monde d'installer à l'identique (en terme de noms et de versions de packages) plusieurs machines.

La première chose à faire est de récuprer, sous forme d’un fichier, la liste complète des packages installés sur la machine de référence:

dpkg --get-selections > myselections

Puisque cette commande prend en compte tous les paquets installés plus ceux qui ont été récemment purgés ou désinstallés, mieux vaut utiliser celle-ci:

dpkg --get-selections |grep install |grep -v deinstall > myselections

Après avoir transférez ce fichier myselection sur un autre ordinateur et on installe l’ensemble des package avec:

dselect update

dpkg --set-selections <>

apt-get -u dselect-upgrade

ou

dselect install

Créer un package debian

Si vous souhaitez créer/compiler un package directement à partir des sources du package, il existe une commande qui télécharge les sources et compile le package ensuite.

Mais il nécessaire de préalablement installer le package apt-build:

apt-get install apt-build

Ensuite la commande pour construire un package est:

apt-get source -b

Mais attention, cette commande, nécessite de disposer de nombreux packages de développement.

No comments:

Convert Megaupload links to Rapidshare links !

If someone want to convert Megaupload to Rapidshare links, please let me know, I'll do it for you ! ( for free, all ). If you want, please send those links to me, with the mail title : Convert to Rapidshare !. My mail is bornbygoogle@yahoo.com. Or YM ID : bornbygoogle.

Nice to help you ! :)