DebSousDeb - Débuter sous Debian

Débuter sous Debian ou la Découverte au Jour le Jour de la Distribution Debian

23 décembre 2009

apt-file : trouver le fichier d'un paquet

Mémento des commandes abordées dans ce chapitre :

# apt-file search <nom du fichier>  (recherche dans quel paquet se trouve le fichier)

# apt-file list <nom_du_paquet> (liste des fichiers d'un paquet)

# apt-file update (synchronisation des paquets à partir du fichier sources.list)

Pour ceux qui se prennent souvent la tête pour savoir à quel paquet appartient tel fichier même si celui-ci n'est pas installé, il existe un utilitaire bien pratique : apt-file.
Il n'existe pas par défaut sur votre distribution préférée et il faut donc l'installer :
# apt-get install apt-file

Une fois que c'est terminé, il faut mettre à jour sa petite base en faisant :
# apt-file update

Par cette commande, on récupère de façon exhausitve les informations du contenu de l'ensemble des paquets (via votre configuration de votre fichier /etc/apt/sources.list).

Exemple :
Vous avez besoin du fichier curses.h pour la compilation d'un programme en C. Pour savoir dans quel paquet, il peut se trouver :
# apt-file search curses.h
utoconf-archive: /usr/share/doc/autoconf-archive/html/mp_with_curses.html
doc-linux-ja-html: /usr/share/doc/HOWTO/ja-html/LFS-BOOK/appendixa/ncurses.html
doc-linux-ja-html: /usr/share/doc/HOWTO/ja-html/LFS-BOOK/chapter05/ncurses.html
doc-linux-ja-html: /usr/share/doc/HOWTO/ja-html/LFS-BOOK/chapter06/ncurses.html
libncurses5-dev: /usr/include/curses.h
libncurses5-dev: /usr/include/ncurses.h
libncursesw5-dev: /usr/include/ncursesw/curses.h
libncursesw5-dev: /usr/include/ncursesw/ncurses.h
libslang2-dev: /usr/include/slcurses.h
lsb-build-base3: /usr/include/lsb3/curses.h
php-doc: /usr/share/doc/php-doc/html/book.ncurses.html
php-doc: /usr/share/doc/php-doc/html/intro.ncurses.html
php-doc: /usr/share/doc/php-doc/html/ref.ncurses.html
python2.4-dbg: /usr/include/python2.4_d/py_curses.h
python2.4-dev: /usr/include/python2.4/py_curses.h
python2.4-doc: /usr/share/doc/python2.4/html/lib/module-curses.html
python2.5-dbg: /usr/include/python2.5_d/py_curses.h
python2.5-dev: /usr/include/python2.5/py_curses.h
python2.5-doc: /usr/share/doc/python2.5/html/lib/module-curses.html


Une autre commande utile permet de connaître les fichiers qui sont installés avec un paquet. Pour ceux qui ont suivi ce billet, il comprendront vite que ça revient à faire un dpkg -L <nom du paquet>
# apt-file list htop
htop: /usr/bin/htop
htop: /usr/share/applications/htop.desktop
htop: /usr/share/doc/htop/AUTHORS
htop: /usr/share/doc/htop/README
htop: /usr/share/doc/htop/changelog.Debian.gz
htop: /usr/share/doc/htop/changelog.gz
htop: /usr/share/doc/htop/copyright
htop: /usr/share/man/man1/htop.1.gz
htop: /usr/share/menu/htop
htop: /usr/share/pixmaps/htop.png

Posté par tagger à 22:25 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

19 décembre 2009

Sécurité apt : problème de clé publique

Il est possible que vous rencontriez le probème suivant lorsque vous installer un paquet d'une source non-officielle :
W: GPG error: http://mirror.home-dn.net stable Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.

Dans ce cas, vous devez signifier à apt quelles sont les sources auxquelles vous pouvez faire confiance. Il faut ajouter la clé du nouveau dépôt pour que apt puisse l'utiliser et lui faire toute confiance.
La clé dans notre cas est  07DC563D1F41B907 et correspond au dépot marillat
# gpg --keyserver pgpkeys.mit.edu --recv-key 07DC563D1F41B907
gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
gpg: clé 1F41B907: clé publique « Christian Marillat <marillat@debian.org> » importée
gpg: aucune clé de confiance ultime n'a été trouvée
gpg:        Quantité totale traitée: 1
gpg:                       importée: 1

Il faut maintenant ajouter cette clé dans la configuration d'apt :
# gpg -a --export 07DC563D1F41B907 | sudo apt-key add -

Cette clé est ajouté au fichier /etc/apt/trusted.gpg. Vous pouvez visionner la liste des clés qui ont été ajoutées via la commande apt-key
# apt-key list
/etc/apt/trusted.gpg
--------------------
pub   1024D/6070D3A1 2006-11-20 [expiré: 2009-07-01]
uid                  Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>

pub   1024D/ADB11277 2006-09-17
uid                  Etch Stable Release Key <debian-release@lists.debian.org>

pub   1024D/BBE55AB3 2007-03-31 [expire: 2010-03-30]
uid                  Debian-Volatile Archive Automatic Signing Key (4.0/etch)
sub   2048g/36CA98F3 2007-03-31 [expire: 2010-03-30]

pub   1024D/F42584E6 2008-04-06 [expire: 2012-05-15]
uid                  Lenny Stable Release Key <debian-release@lists.debian.org>

pub   4096R/55BE302B 2009-01-27 [expire: 2012-12-31]
uid                  Debian Archive Automatic Signing Key (5.0/lenny) <ftpmaster@debian.org>

pub   2048R/6D849617 2009-01-24 [expire: 2013-01-23]
uid                  Debian-Volatile Archive Automatic Signing Key (5.0/lenny)

pub   1024D/16BA136C 2005-08-21
uid                  Backports.org Archive Key <ftp-master@backports.org>
sub   2048g/5B82CECE 2005-08-21

pub   1024D/1F41B907 1999-10-03
uid                  Christian Marillat <marillat@debian.org>
uid                  Christian Marillat <marillat@free.fr>
sub   1536g/C28DCC42 1999-10-03
sub   1024D/5D3877A7 2002-08-26

Posté par tagger à 18:34 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

21 janvier 2007

Dépôt debian-volatile : kesako ?

Comme nous avons pû le voir lors de l'installation de l'anti-virus ClamAV, nous avons utilisé un dépôt nommé "debian-volatile". C'est un dépôt un peu particulier en définitive. En fait, il sert essentiellement aux logiciels qui ont besoin d'évoluer très rapidement et qui, par leur criticité, ne peuvent être dans une version instable.

Voici la définition officielle fournie par le projet Debian :
"Certains paquets ont pour objet des cibles très mouvantes comme le filtrage de pourriels et la détection de virus, et même lors de l'utilisation de modèles de données mis à jour, ils ne fonctionnent pas vraiment pour la durée de vie entière d'une version stable. L'objectif principal de volatile est de permettre aux administrateurs système de mettre à jour leurs systèmes d'une façon agréable et cohérente sans avoir les inconvénients liés à l'utilisation d'unstable, et même sans avoir les inconvénients concernant les paquets sélectionnés."

Ce dépôt n'est pas prise en charge par l'équipe officielle de sécurité de Debian mais ne vous inquiétez pas un membre de cette équpe fait aussi partie de l'équipe "debian-volatile".

On y retrouve différents paquets : clamAV, jwhois, firehol etc ...

Pour se tenir informé des évolutions de ce dépôt, n'hésitez pas à vous abonner à la mailing list :
http://lists.debian.org/debian-volatile/

Pour trouver le mirroir le plus proche pour le dépôt "debian-volatile" :
http://www.debian.org/volatile/volatile-mirrors

Pour plus d'informations, allez sur le site officiel : http://www.debian.org/devel/debian-volatile/index.fr.html

Posté par tagger à 19:51 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

07 janvier 2007

Maintenir un système mixte : apt-get install /testing

Il peut être intéressant de vouloir installer une version plus récente d'un paquet que vous possédez déjà. Ici nous  allons  prendre l'exemple du jeu 3dchess. 

1. Mise à jour du fichier sources.list

Nous allons ajouter le dépôt de la branche testing dans le fichier /etc/apt/sources.list :
deb http://ftp.de.debian.org/debian testing main contrib non-free

Faites ensuite une mise à jour :
#apt-get update

2. Informations sur les versions

Avant d'installer le paquet 3dchess, nous allons voir quelle est la version du paquet déjà installé et quelle est la version que l'on peut installer via la commande apt-cache policy <nom du paquet> :
# apt-cache policy 3dchess
3dchess:
  Installed: 0.8.1-11
  Candidate: 0.8.1-12
  Version Table:
     0.8.1-12 0
        500 http://ftp.de.debian.org testing/main Packages
*** 0.8.1-11 0
        500 http://ftp2.fr.debian.org sarge/main Packages
        500 ftp://ftp.ipv6.opentransit.net stable/main Packages
        500 cdrom://[Debian GNU/Linux 3.1 r0a _Sarge_ - Official i386 Binary-1 (20050607)] unstable/main Packages
        100 /var/lib/dpkg/status

Ici, nous pouvons voir que la version installée de 3dchess est la 0.8.1-11 et que nous pouvons installer la version 0.8.1-12 par l'intermédiaire du dépôt http://ftp.de.debian.org testing/main Packages. Le nombre 500 affiche la priorité : le paquet pourra être installé à partir d'un autre dépôt que celui de la distribution par défaut.

3. Installation du paquet de la branche testing

Maintenant nous allons installer le paquet 3dchess de la branche testing via la commande apt-get en  précisant la  branche testing : apt-get install <nom du paquet>/testing.

#apt-get install 3dchess/testing
Reading Package Lists... Done
Building Dependency Tree... Done
Selected version 0.8.1-12 (Debian:testing) for 3dchess
The following packages will be upgraded:
  3dchess
1 upgraded, 0 newly installed, 0 to remove and 811 not upgraded.
Need to get 0B/33.6kB of archives.
After unpacking 16.4kB disk space will be freed.
(Reading database ... 103686 files and directories currently installed.)
Preparing to replace 3dchess 0.8.1-11 (using .../3dchess_0.8.1-12_i386.deb) ...
Unpacking replacement 3dchess ...
Setting up 3dchess (0.8.1-12) ...

4. Vérification de la version du paquet installé

Nous pouvons relancer la commande dkpg -l | grep -i <nom du paquet> afin de vérifier que le paquet a bien été installé dans la nouvelle version.

$dpkg -l | grep -i 3dchess
ii  3dchess                       0.8.1-12                      3D chess for X11

(cf article informations sur l'état des paquets)

Posté par tagger à 13:01 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

09 décembre 2006

Informations sur l'état des paquets

Mémento des commandes abordées dans ce chapitre :
$ dpkg --list ou dpkg -l (liste de tous les paquets de la base de données dpkg)
$ dpkg --list <nom du paquet> ou dpkg -l <nom du paquet> (liste l'état d'un paquet)
$ dpkg --list | grep ^rc (liste de tous les paquets supprimés)

Tous les paquets installés et même supprimés sont conservés dans la base de données des paquets qui se trouve sous /var/lib/dpkg. Il s'agit en fait d'une pseudo base de données puisque toutes les informations sont stockées dans des fichiers plats :
# cd /var/lib/dpkg
# ls -ltr

drwxr-xr-x  2 root root   4096 May 26  2005 parts
drwxr-xr-x  5 root root   4096 Sep 20  2005 methods
-rw-r--r--  1 root root      8 Sep 20  2005 cmethopt
-rw-r--r--  1 root root   2772 Apr 23  2006 diversions-old
-rw-r--r--  1 root root   2848 Apr 23  2006 diversions
-rw-r--r--  1 root root     87 May  6  2006 statoverride-old
-rw-r--r--  1 root root     47 May  6  2006 statoverride
-rw-r--r--  1 root root 942006 Nov 26 19:57 status-old
-rw-r--r--  1 root root 850011 Nov 26 19:57 available-old
-rw-r-----  1 root root      0 Dec  8 16:34 lock
drwxr-xr-x  2 root root 118784 Dec  8 16:34 info
-rw-r--r--  1 root root 943009 Dec  8 16:34 status
drwxr-xr-x  2 root root   4096 Dec  8 16:34 alternatives
drwxr-xr-x  2 root root   4096 Dec  8 16:34 updates
-rw-r--r--  1 root root 850886 Dec  8 16:34 available

le fichier status contient l'état des paquets ainsi que les informations de contrôle (à condition que le paquet n'est pas été supprimé avec l'option purge).
- le répertoire info contient la liste de tous les fichiers installés par le paquet (<nom du paquet>.list) ainsi que les fichiers conffiles (<nom du paquet>.conffiles).

1. Connaître le status d'un paquet

Pour connaître le status d'un paquet il faut utiliser la commande dpkg --list <nom du paquet> ou dpkg -l <nom du paquet>.
Prenons l'exemple du paquet opera que nosu avons installé :
$ dpkg --list opera
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/    Name       Version                           Description
+++-========-===================-=================
i i    opera       9.02-20060919.5             The Opera Web Browse

Nous avons 3 premières informations "lisibles" : le nom du paquet, la version et sa description.
Mais nous avons aussi les premières premières colonnes avec : i i .

La première colonne correspond à la demande de l'utilisateur :
u : état inconnu. le paquet n'est pas installé et ne l'a jamais été.
i : l'utilisateur a requis l'installation du paquet
r : L'utilisateur a requis la suppression du paquet
p : l'utilisateur a requis la purge du paquet
h : L'utilisateur a spécifé que ce paquet est figé. Aucune mise à jour automatique ne peut avoir lieu.

La deuxième colonne correspond à l'état actuel du paquet :
n : le paquet n'est pas installé
i : le paquet est installé
c : le paquet a été installé par le passé mais est maintenant supprimé. Seuls subsistent les conffiles.
u : le paquet a été dépaqueté mais n'est pas configuré.
f : la configuration du paquet a échoué
h : le paquet a été installé mais l'installation ne s'est pas déroulé correctement

Enfin, il peut y avoir une troisième colonne mais le plus souvent elle est à vide :
h : le paquet est figé de manière forcée car il constitue une dépendance versionnée d'un paquet manuellement figé
r : le paquet est hors service, il devra être résinstallé sinon même sa suppression est impossible
x : le paquet est cassé et figé de manière forcée.

Dans notre exemple, l'utilisateur a donc demandé l'installation du paquet (le premier i) et celui-ci est installé correctement (deuxième i).

Prenons un autre exemple avec le paquet libpostproc0 :
$ dpkg --list libpostproc0
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/   Name                Version                      Description
+++-============-=================-==================

r c   libpostproc0       20050427-0sarge0.1     postproc shared libraries

L'utilisateur a demandé  la suppression du paquet (r)  et le paquet a été  supprimé (c) mais ses conffiles existent toujours.

2. Liste des états de tous les paquets installés

Pour avoir la liste de tous les paquets installés avec leur état, il suffit de lancer la commande dpkg --list ou dpkg -l.

3. Liste de tous les paquets supprimés

Pour avoir la liste de tous les paquets supprimés par l'utilisateur, il suffit de rajouter un pipe pour trapper toutes les chaînes de caractères débutant par rc : dpkg --list | grep ^rc

Exemple :

$ dpkg --list | grep ^rc
rc dhcp-client           2.0pl5-19.1              DHCP Client
rc  exim4-base          4.50-8                    support files for all exim MTA (v4) packages
rc exim4-config         4.50-8                     configuration for the exim MTA (v4)
rc libpostproc0          20050427-0sarge0.1  postproc shared libraries
rc locales                 2.3.5-11                  GNU C Library: National Language (locale) da
rc localization-config  0.116                      configures different programs' locale settin
rc mozplugger           1.7.1-1                    Plugin allowing external viewers to be launc
rc  postfix                2.1.5-9                    A high-performance mail transport agent

Posté par tagger à 15:00 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

08 décembre 2006

Les paquets binaires : .deb

Mémento des commandes abordées :

$ ar -x <nom du paquet binaire>  (désarchiver un paquet binaire)
$ dpkg-deb --info <nom du paquet binaire> (permet d'afficher des informations sur le paquet notamment celle contenu dans le fichier control)
$ dpkg-deb --control <nom du paquet binaire> (extraction des fichiers de contrôle)
$ dpkg-deb --extract <nom du paquet binaire> (extraction des fichiers de configuration et de données)
#dpkg --install <nom du paquet binaire> (installation et configuration du paquet binaire)

Nous allons donner ici quelques explications sur la manipulation des fichiers binaires. Comme nous avons pu le voir précédemment un fichier binaire possède l'extention .deb.
Il peut contenir des programmes exécutables, des fichiers de configuration, de la documentation ainsi que des informations contenant les droits d'auteur.

1. Nommage d'un fichier binaire

Il n'existe pas de convention de nommage d'un fichier binaire. Chacun peut choisir le nom qu'il désire. Cependant, il arrive souvent que ces noms soient souvent explicites. Prenons, par exemple, un fichier binaire se trouvant encore dans notre cache donc dans le répertoire /var/cache/apt/archives. ici, nous allons regarder le paquet suivant :
strace_4.5.14-2_i386.deb

Le nom du fichier binaire se divise en trois partie :
- strace : le nom du paquet
- 4.5.14-2 : la version ainsi que la révision
- i386 : la version matérielle


2. Contenu d'un paquet binaire

Un fichier binaire peut être manipuler sur n'importe quel unix. le fichier .deb est simplement une archive BSD ar. Elle peut donc être vu par la commande ar.

Regardons un peu le contenu du fichier opera_9.02-20060919.5-shared-qt_en_i386.deb :
# ar -t opera_9.02-20060919.5-shared-qt_en_i386.deb
debian-binary
control.tar.gz
data.tar.gz

Si nous regardons maintenant le fichier binaire strace_4.5.14-2_i386.deb :
#ar -t /var/cache/apt/archives/strace_4.5.14-2_i386.deb
debian-binary
control.tar.gz
data.tar.gz

Comme nous pouvons le constater, tout paquet binaire comprend la même structure.

- debian-binary : numéro de version du format de paquet utilisé
- control.tar.gz : contient les informations liées au paquet (nom, version, description, dépendances, etc ...)
- data.tar.gz : contient les fichiers installés par le paquet sur le système de fichier racine.

Il est possible si vous le souhaitez de désarchiver le paquet avec la commande ar -x afin d'accéder aux 3 fichiers :
# ar -x opera_9.02-20060919.5-shared-qt_en_i386.deb

Nous avons donc les trois fichiers suivants maintenant :
# ls -ltr
-rw-r--r--   1 root   root           4 Dec  3 00:31 debian-binary
-rw-r--r--   1 root   root     5156155 Dec  3 00:31 data.tar.gz
-rw-r--r--   1 root   root        5878 Dec  3 00:31 control.tar.gz

On peut alors regarder le contenu du fichier debian-binary et décompresser/désarchiver les fichier .tar.gz :
# more debian-binary
2.0

Cela correspond à la version du format du paquet.

Si l'on regarde maintenant le contenu de l'archive data.tar.gz :
# tar tzvf data.tar.gz
drwxr-xr-x root/root         0 2006-09-19 16:04:23 ./
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/locale/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/locale/en/
-rw-r--r-- root/root      6715 2006-09-19 16:04:22 ./usr/share/opera/locale/en/license.txt
-rw-r--r-- root/root      7152 2006-09-19 16:04:22 ./usr/share/opera/locale/en/search.ini
-rw-r--r-- root/root       832 2006-09-19 16:04:22 ./usr/share/opera/locale/en/default.adr
-rw-r--r-- root/root    214673 2006-09-19 16:04:22 ./usr/share/opera/locale/english.lng
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/ini/
-rw-r--r-- root/root     96502 2006-09-19 16:04:22 ./usr/share/opera/ini/dialog.ini
-rw-r--r-- root/root      1741 2006-09-19 16:04:22 ./usr/share/opera/ini/fastforward.ini
-rw-r--r-- root/root     20665 2006-09-19 16:04:22 ./usr/share/opera/ini/standard_keyboard.ini
-rw-r--r-- root/root     55443 2006-09-19 16:04:22 ./usr/share/opera/ini/standard_menu.ini
... ... ... ... ... ... ...     ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ...     ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

etc etc ...

Ici on voit bien la liste des fichiers qui seront installés.

Et enfin regardons l'archive control.tar.gz :
# tar tzvf control.tar.gz
drwxr-xr-x root/root         0 2006-09-19 16:04:23 ./
-rwxr-xr-x root/root      5097 2006-09-19 16:04:23 ./postinst
-rwxr-xr-x root/root      1766 2006-09-19 16:04:23 ./prerm
-rwxr-xr-x root/root      1013 2006-09-19 16:04:23 ./postrm
-rw-r--r-- root/root        34 2006-09-19 16:04:22 ./conffiles
-rw-r--r-- root/root      5540 2006-09-19 16:04:24 ./md5sums
-rw-r--r-- root/root       860 2006-09-19 16:04:23 ./control

Voyons le détail des fichiers ci-dessus :

2.1 control

Ce fichier contient la description du paquet (nom du paquet, version etc ...) et la liste des dépendances qui doivent être satisfaites (exemple : Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6)). Ce fichier est utilisé par les outils de gestion de paquets pour obetnir toutes ces informations.

2.2 conffiles

Contient des fichiers de configuration utilisés par les outils de gestion de paquets afin de conserver les modifications effectuées sur ces fichiers.
Exemple de contenu du fichier conffiles pour le paquet opera :
/etc/opera6rc
/etc/opera6rc.fixed

2.3 md5sums

Ce fichier contient les signatures MD5 de tous les fichiers  installés par le paquets.

Exemple :
370bcc2150bfd404ae55ca33a1b88a51  usr/share/opera/locale/en/license.txt
06ca608752cd8986817b83451193099e  usr/share/opera/locale/en/search.ini
b2cdf9a67b286809c5473e926d86b9ac  usr/share/opera/locale/en/default.adr
ff1ff4e2acbb6bcab403f98108dbb1c5  usr/share/opera/locale/english.lng
8916d643b1939de737a76735b42576aa  usr/share/opera/ini/dialog.ini
bd7cd1396153a547f8195bf4b327256d  usr/share/opera/ini/fastforward.ini

2 .4 postinst

Ce script est appelé au moment de la configuration du paquet, parès l'installation de l'ensemble des fichiers. Il peut aussi être appelé par dpkg lors d'une mise à jour en erreur ou lors de la suppresions du paquet.

2.5 prerm

Ce script est appelé lors de la suppression du paquet ou lors d'une mise à jour également.

2.6 postrm

Ce script peut être appelé par dpkg au moment de la suppression du paquet.

Il existe encore d'autres fichiers mais je m'arrêterais ici.

3. Commandes utiles pour les paquets binaires

3.1 Informations sur les paquets

La commande dpkg -deb --info <nom_du_paquet_binaire> permet d'afficher les infos sur un paquet binaire.
$ dpkg-deb --info opera_9.02-20060919.5-shared-qt_en_i386.deb
nouveau paquet Debian, version 2.0.
taille 5162226 octets : archive de contrôle= 5878 octets.
    34 octets,     2 lignes     conffiles          
     860 octets,    21 lignes      control             
    5540 octets,    80 lignes      md5sums             
    5097 octets,   174 lignes   *  postinst            #!/bin/sh
  1013 octets,    37 lignes   * postrm             #!/bin/sh
    1766 octets,    62 lignes   *  prerm               #!/bin/sh
Package: opera
Version: 9.02-20060919.5
Section: non-free/web
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6) | xlibs | libxmu6, libqt3c102-mt (>= 3:3.2.1), libstdc++5
Recommends: libaspell15
Suggests: flashplugin-nonfree | libflash-mozplugin
Conflicts: opera-static
Replaces: opera-static
Provides: opera-static, www-browser
Installed-Size: 11348
Maintainer: Opera Packaging Team <packager@opera.com>
Description: The Opera Web Browser
  Welcome to the Opera Web browser. It is smaller, faster,
  customizable, powerful, yet user-friendly. Opera eliminates
  sluggish performance, HTML standard violations, desktop
  domination, and instability. This robust Web browser lets you
  navigate the Web at incredible speed and offers you the best
  Internet experience.
The binaries were built on RedHat-9.0 (shrike) using gcc-3.2.2.

Nous pouvons aussi extraire que les fichiers de contrôle du paquet via la commande dpkg-deb --control <nom du paquet binaire>. Un répertoire DEBIAN est alors créé contenant la liste des fichiers de contrôle (control, md5sum, conffiles etc ...)
$ dpkg-deb --control opera_9.02-20060919.5-shared-qt_en_i386.deb
$ ls ./DEBIAN
conffiles  control  md5sums  postinst  postrm  prerm
dqssqd

Dans la même logique, nous pouvons extraire séparement les fichiers de données du paquet binaire dans un répertoire temporaire avec la commande dpkg-deb --extract <nom du paquet binaire> <répertoire de destination>
Dans cet exemple, on extrait les fichiers de données et on a ainsi les repertoire etc et usr contenant les fichiers de configuration et les données du paquets.
$dpkg-deb --extract opera_9.02-20060919.5-shared-qt_en_i386.deb .
$ls
etc usr

3.2 Installation d'un paquet

Pour réaliser l'installation et la configuration d'un paquet, il suffit de lancer la commande dpkg --install <nom du paquet binaire> ou pour faire plus court dkpg -i <nom du paquet binaire> avec l'utilisateur root.
Exemple :
# dpkg --install opera_9.02-20060919.5-shared-qt_en_i386.deb
Selecting previously deselected package opera.
(Reading database ... 103741 files and directories currently installed.)
Unpacking opera (from opera_9.02-20060919.5-shared-qt_en_i386.deb) ...
Setting up opera (9.02-20060919.5) ...


Posté par tagger à 16:20 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

04 décembre 2005

Advanced Packaging Tool (1/3)

(Document inspiré notamment des livres "Debian GNU/linux - Installation, Administration, Exploitation" de Franck Ronnenburg chez CampusPress et "Cahier de l'Admin Debian GNU/Linux" de Raphaël Herzog chez Eyrolles).

Mémento des commandes abordées dans ce chapitre :

# apt-setup (ajout de sources pour le fichier sources.list)

# apt-spy -d <stable/testing/unstable> -s <localisation ; fr pour france> -o <fichier résultat> (ajout de sources pour le fichier sources.list en lui indiquant la distribution, la localisatin des mirroirs. apt-spy définira le meilleur mirroir en fonction des temps de réponse)

# netselect <mirroir1> <mirroir2> (test les temps de réponse des mirroirs passés en paramètre)

# netselect-apt <stable/testing/unstable> (test les temps de réponse des mirroirs pour une distribution avec consititution du fichier sources.list dans le répertoire courant). 

1. Le fichier /etc/apt/sources.list

Le fichier /etc/apt/sources.list décrit les différents emplacements possibles des paquets DEBIAN. APT rappatrie ensuite la liste des paquests disponibles pour chacune de ces sources, ainsi que leurs en-têtes. Il réalise cette opération en téléchargeant les fichiers Packages.gz ou Packages.bz2 (cas d'une source de paquets binaires) et Sources.gz ou Sources.bz2 (cas d'une source de paquets sources) et en analysant leur contenu.
Le fichier /etc/apt/sources.list contient sur chaque ligne une descrtiption de source, qui se décompose en 3 parties séparées par des blancs.

Le premier champ indique le type de la source :
. deb pour des paquets binaires
. deb-src pour des paquets sources.

Le deuxième champ indique l'URL de base de la source. L'URL peut débuter par :
. //file pour indiquer une source locale située dans l'arborescence de fichiers du système
. http:// pour indiquer une source accessible depuis un serveur web
. ftp:// pour une source diponible sur un serveur FTP

Le dernier champ a une syntaxe variable selon que la source correspond à un miroir Debian ou non. Dans le cas d'un miroir Debian, on nomme la distribution choisie (stable, testing, unstable ou leur nom de code du moment) puis les différentes sections souhaitées (main, contrib et non-free).

Voici un exemple d'un fichier sources.list :
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib


L'ordre dans le fichier sources.list est important puisque apt ira chercher le paquet sur la premiere source indiquée si celui-ci se trouve sur plusieurs mirroirs.

Ajouter des sources au fichier /etc/apt/sources.list

Il y a deux façons d'ajouter des sources au fichier. La plus classique consiste à éditer le fichier avec vi ou vim . Une autre solution est l'utilisation de la commande apt-setup. Avant toute chose, faire une sauvegarde de votre fichier sources.list

# cp -p /etc/apt/sources.list /etc/apt/sources.list.save

Puis lancer le programme apt-setup :

# apt-setup

apt_setup12


Vous obiendrez alors l'écran ci-dessus qui vous demandera quel type de ressource vous désirez (serveur mirroir http ou ftp, cdrom, en local).

Choisir le meilleur mirroir avec netselect, netselect-apt, apt-spy

- apt-spy
apt-spy
est un programme permettant de générer le fichier sources.list. Il est possible de lui indiquer différents paramètres. Il n'y a qu'un paramètre obligatoire c'est celui de la distribution (-d distribution où distribution peut prendre la valeur stable, testing ou unstable). Voir le man pour un complément d'information.

Exemple : ici on indique que l'on cherche les mirroirs situés pour la distribution stable (-d stable), situé en france (-s fr) et l'on redirige le résultat dans le fichier /tmp/sources.list pour ne pas écraser celui d'origine (-o /tmp/sources.list)

# apt-spy -d stable -s fr -o /tmp/sources.list
SERVER: ftp.fr.debian.org
Benchmarking FTP...
                Downloaded 9721752 bytes in 15.72 seconds
                Download speed: 604.08 kB/sec
Benchmarking HTTP...
                Downloaded 51636 bytes in 15.07 seconds
                Download speed: 3.35 kB/sec

SERVER: ftp2.fr.debian.org
Benchmarking FTP...
                Downloaded 9196248 bytes in 16.46 seconds
                Download speed: 545.65 kB/sec
Benchmarking HTTP...
                Downloaded 93546 bytes in 16.01 seconds
                Download speed: 5.71 kB/sec

SERVER: ftp.iut-bm.univ-fcomte.fr
Benchmarking FTP...
                Downloaded 9666128 bytes in 16.02 seconds
                Download speed: 589.07 kB/sec
...
...
...

Une manière pour choisir un mirroir est aussi d'utliser netselect. netselect va indiquer le miroir dont les temps de réponse sont les plus courts en fonction de la liste donnée en paramètre.

# netselect ftp.debian.org http.us.debian.org ftp.at.debian.org ftp.debian.org.br
 
163 ftp.at.debian.org

En l'occurence pour moi ce serait ftp.at.debian.org.

netselect-apt fait la même chose en consitituant le fichier sources.list dans votre répertoire courant. Il faut lui indiquer la distribution en paramètre

# netselect-apt stable

Posté par tagger à 12:19 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

03 décembre 2005

Advanced Packaging Tool (2/3)

Mémento des commandes abordées dans ce chapitre :

# apt-cache search mot_clé (recherche d'un paquet en lui indiquant un mot clé)

# apt-cache show nom_du_paquet (informations sur un paquet)

# apt-cache showpkg nom_du_paquet (informations sur un paquet avec liste détaillée des dépendances)

# apt-cache policy nom_du_paquet (affiche la version installée d'un paquet et les versions disponibles à partir des sources)

# dpkg -L nom_du_paquet (liste des fichiers installés pour un paquet)

# dpkg -l | grep -i nom_du_paquet (vérifier si un paquet est installé sur vitre système)

# dpkg -S nom_du_fichier (chercher à quel paquet appartient le fichier)

 

2. Obtenir des informations sur les paquets

Une des premières choses que l'on peut faire avant d'installer ou supprimer un paquet est de se renseigner sur celui-ci : connaître sa version, avoir un descriptif du paquet, connaître ses dépendances.
Pour cela, apt fournit un ensemble d'outils qui permettent d'obtenir des informations sur les paquets. Mais il n'est pas le seul comme nous le verrons plus loin.

Rechercher un paquet

Avec la commande apt-cache, il est possible de chercher un paquet à partir d'un mot clé. Voici la syntaxe :
apt-cache search mot_clé

Par exemple, nous recherchons les paquets en rapport avec firefox
#apt-cache search firefox

Afficher les informations d'un paquet

Avant d'installer un paquet par exemple, il peut être intéressant de verifier certaines informations comme sa description, sa version, ses dépendances. Cela peut être réalisé avec la commande suivante :
apt-cache show nom_du_paquet

Exemple :
#apt-cache show mozilla-firefox
Package: mozilla-firefox
Priority: optional
Section: web
Installed-Size: 24372
Maintainer: Eric Dorland <eric@debian.org>
Architecture: i386
Version: 1.0.4-2
Provides: www-browser
Depends: fontconfig, psmisc, debianutils (>= 1.16), libatk1.0-0 (>= 1.7.2), libc6 (>= 2.3.2.ds1-21), libfontconfig1 (>= 2.3.0), libfreetype6 (>= 2.1.5-1), libgcc1 (>= 1:3.4.1-3), libglib2.0-0 (>= 2.6.0), libgtk2.0-0 (>= 2.6.0), libidl0, libjpeg62, libkrb53 (>= 1.3.2), libpango1.0-0 (>= 1.8.1), libpng12-0 (>= 1.2.8rel), libstdc++5 (>= 1:3.3.4-1), libx11-6 | xlibs (>> 4.1.0), libxext6 | xlibs (>> 4.1.0), libxft2 (>> 2.1.1), libxp6 | xlibs (>> 4.1.0), libxt6 | xlibs (>> 4.1.0), zlib1g (>= 1:1.2.1)
Suggests: mozilla-firefox-gnome-support (= 1.0.4-2), latex-xft-fonts, xprint
Filename: pool/main/m/mozilla-firefox/mozilla-firefox_1.0.4-2_i386.deb
Size: 8880522
MD5sum: c9fff88c3bd14842ed1ac80f3e6ada9c
Description: lightweight web browser based on Mozilla
Firefox is a redesign of the Mozilla browser component, similar to
Galeon, K-Meleon and Camino, but written using the XUL user interface
language and designed to be lightweight and cross-platform.
.
This browser was previously known as Firebird and Phoenix.

Informations complémentaires sur un paquet

Il existe la commande suivante apt-cache showpkg nom_du_paquet.

Exemple :

# apt-cache showpkg gaim
Package: gaim
Versions:
1:1.2.1-1.4(/var/lib/apt/lists/security.debian.org_dists_sarge_updates_main_binary-i386_Packages)(/var/lib/apt/lists/security.debian.org_dists_stable_updates_main_binary-i386_Packages)(/var/lib/dpkg/status)
1:1.2.1-1.1(/var/lib/apt/lists/ftp.ipv6.opentransit.net_debian_dists_stable_main_binary-i386_Packages)(/var/lib/apt/lists/Debian%20GNU_Linux%203.1%20r0a%20%5fSarge%5f%20-%20Official%20i386%20Binary-1%20(20050607)_dists_unstable_main_binary-i386_Packages)

Reverse Depends:
  gaim-dev,gaim 1:1.2.1-1.4
  gaim-data,gaim 1:1.1.2
  nautilus-sendto,gaim 1.0
  gnome-fifth-toe,gaim
  gaim-themes,gaim
  gaim-otr,gaim 1:1.0.0
  gaim-guifications,gaim 1:2.0
  gaim-guifications,gaim 1:1.2
  gaim-extendedprefs,gaim 1:2.0
  gaim-extendedprefs,gaim 1:1.1
  gaim-encryption,gaim 1.2
  gaim-dev,gaim 1:1.2.1-1.1
  gaim-data,gaim 1:1.1.2
  education-desktop-gnome,gaim
Dependencies:
1:1.2.1-1.4 - gaim-data (5 1:1.2.1-1.4) libao2 (2 0.8.6) libaspell15 (2 0.60) libatk1.0-0 (2 1.7.2) libaudiofile0 (2 0.2.3-4) libc6 (2 2.3.2.ds1-21) libgcrypt11 (0 (null)) libglib2.0-0 (2 2.6.0) libgnutls11 (2 1.0.16) libgtk2.0-0 (2 2.6.0) libgtkspell0 (2 2.0.2) libice6 (16 (null)) xlibs (4 4.1.0) libpango1.0-0 (2 1.8.1) libsm6 (16 (null)) xlibs (4 4.1.0) libstartup-notification0 (2 0.8-1) libx11-6 (16 (null)) xlibs (4 4.1.0) libxext6 (16 (null)) xlibs (4 4.1.0) gnome-panel (18 2.1) kicker (18 3.1) docker (0 (null)) evolution-data-server (0 (null)) libzephyr3 (0 (null)) tcl8.4 (2 8.4.5) tk8.4 (2 8.4.5) gaim-gnome (0 (null)) gaim-common (0 (null)) gaim-gnome (0 (null)) gaim-common (0 (null))
1:1.2.1-1.1 - gaim-data (5 1:1.2.1-1.1) libao2 (2 0.8.6) libaspell15 (2 0.60) libatk1.0-0 (2 1.7.2) libaudiofile0 (2 0.2.3-4) libc6 (2 2.3.2.ds1-21) libgcrypt11 (0 (null)) libglib2.0-0 (2 2.6.0) libgnutls11 (2 1.0.16) libgtk2.0-0 (2 2.6.0) libgtkspell0 (2 2.0.2) libice6 (16 (null)) xlibs (4 4.1.0) libpango1.0-0 (2 1.8.1) libsm6 (16 (null)) xlibs (4 4.1.0) libstartup-notification0 (2 0.8-1) libx11-6 (16 (null)) xlibs (4 4.1.0) libxext6 (16 (null)) xlibs (4 4.1.0) gnome-panel (18 2.1) kicker (18 3.1) docker (0 (null)) evolution-data-server (0 (null)) libzephyr3 (0 (null)) tcl8.4 (2 8.4.5) tk8.4 (2 8.4.5) gaim-gnome (0 (null)) gaim-common (0 (null)) gaim-gnome (0 (null)) gaim-common (0 (null))
Provides:
1:1.2.1-1.4 - gaim-gnome
1:1.2.1-1.1 - gaim-gnome
Reverse Provides:

La section "Dependancies" signalent tous les paquets nécessaires à l'installation du paquet demandé (dans notre exemple gaim). La section "Reverse Depends" désigne les paquets qui ont besoin du paquet gaim.

Utiliser la commande dpkg pour en savoir plus 

la commande dpkg est est l'outil standard pour manipuler les paquets Debian. Il faut donc utiliser cette commande pour manipuer les fichiers au format .deb. La différence avec apt-get est qu'il ne tient pas compte des dépendances. Mais dpkg permet aussi d'obtenir un certain nombre d'information sur un paquet avant l'installation ou la suppression de celui-ci par exemple.

- Lister les fichiers installés par un paquet : dpkg -L nom_du_paquet

Exemple :
#dpkg -L gaim
/.
/usr
/usr/lib
/usr/lib/menu
/usr/lib/menu/gaim
/usr/lib/gaim
/usr/lib/gaim/autorecon.so
/usr/lib/gaim/docklet.so
/usr/lib/gaim/extplacement.so
/usr/lib/gaim/gaim-remote.so
/usr/lib/gaim/gestures.so
/usr/lib/gaim/gevolution.so
/usr/lib/gaim/history.so
/usr/lib/gaim/iconaway.so
/usr/lib/gaim/idle.so
/usr/lib/gaim/libgg.so
/usr/lib/gaim/libirc.so
/usr/lib/gaim/libjabber.so
/usr/lib/gaim/libmsn.so
/usr/lib/gaim/libnapster.so
/usr/lib/gaim/libnovell.so
/usr/lib/gaim/liboscar.so
/usr/lib/gaim/libyahoo.so
/usr/lib/gaim/libzephyr.so
/usr/lib/gaim/notify.so
/usr/lib/gaim/relnot.so
/usr/lib/gaim/spellchk.so
/usr/lib/gaim/ssl-gnutls.so
/usr/lib/gaim/ssl-nss.so
/usr/lib/gaim/ssl.so
/usr/lib/gaim/statenotify.so
/usr/lib/gaim/tcl.so
/usr/lib/gaim/ticker.so
/usr/lib/gaim/timestamp.so
/usr/lib/libgaim-remote.so.0.0.0
/usr/bin
/usr/bin/gaim
/usr/bin/gaim-remote
/usr/share
/usr/share/doc
/usr/lib/libgaim-remote.so.0
/usr/share/doc/gaim

- Pour vérifier le nom d'un paquet installé sur votre système : dpkg -l | grep nom_du_paquet
(dpkg -l fournit la liste de l'ensemble des paquets installés)

Exemple :
# dpkg -l | grep gaim
ii gaim           1.2.1-1.4     multi-protocol instant messaging client

- Voir à quel paquet appartient un fichier : dpkg -S nom_du_fichier

Exemple : nous allons rechercher a quel paquet appartient le fichier netstat
# dpkg -S /bin/netstat
net-tools: /bin/netstat

Le fichier /bin/netstat appartient donc au paquet net-tools :)

Rechercher des versions plus récentes d'un paquet

Il existe la commande suivante apt-cache policy nom_du_paquet.

Cette commande est très utile lorsque l'on désire installer une nouvelle version d'un paquet. Cette commande s'appuie bien sûr sur le fichier /etc/sources.list.

#apt-cache policy mozilla-firefox
mozilla-firefox:
  Installed: 1.0.4-2sarge5
  Candidate: 1.5.dfsg+1.5.0.7-2
  Version Table:
     1.5.dfsg+1.5.0.7-2 0
        500 http://ftp.de.debian.org testing/main Packages
     1.0.4-2sarge11 0
        500 http://security.debian.org sarge/updates/main Packages
        500 http://security.debian.org stable/updates/main Packages
*** 1.0.4-2sarge5 0
        100 /var/lib/dpkg/status
     1.0.4-2sarge4 0
        500 ftp://ftp.ipv6.opentransit.net stable/main Packages
     1.0.4-2 0
      500 cdrom://[Debian GNU/Linux 3.1 r0a _Sarge_ - Official i386 Binary-1 (20050607)] unstable/main Packages


Ici on s'aperçoit que le paquet mozilla-firefox est installé en version 1.0.4-2sarge5. Il existe une version plus récente (1.5.dfsg+1.5.0.7-2). Cette dernière peut être téléchargée sur le site mirroir http://ftp.de.debian.org testing/main Packages

Posté par tagger à 12:10 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :

02 décembre 2005

Advanced Packaging Tool (3/3)

Mémento des commandes abordées dans ce chapitre :

# apt-get clean (supprime les fichiers du cache dans le répertoire /var/cache/apt/archives)
# apt-get autoclean 
(supprime les paquest obsolètes n'apparaissant sur les mirroirs Debian)
# apt-get install -s nom_du_paquet (simule l'installation d'un paquet afin de voir les problèmes de dépendances)
# apt-get install nom_du_paquet (installe un paquet)
# apt-get --reinstall install nom_du_paquet (réinstalle un paquet par exemple pour un paquet endommagé)
# apt-get remove nom_du_paquet (supprime un paquet installé)
# apt-get --purge remove nom_du_paquet (supprime un paquet et ses fichiers de configuration)

3. Installation et suppression d'un paquet

3.1 Installation

Cache des fichiers .deb : /var/cache/apt/archives

Les fichiers téléchargés via la commande apt-get sont stockés dans le répertoire /var/cache/apt/archives. Si vous effectuez des mises à jour fréquentes, ce répertoire peut vite être saturé. Il existe pour cela deux commandes qui permettent de faire un tri :

- apt-get clean : permet de purger le répertoire

- apt-get autoclean : supprime les paquets qui ne sont plus utiles car plus téléchargeables (absent des mirroirs Debian). L'option de configuration APT::Clean-Installed évitera de supprimer les fichiers .deb pour les paquets encore installés.

Simulation de l'installation d'un paquet

Il est possible avant d'installer un paquet sur sons système, de faire une simulation d'installatin afin de voir éventuellement les problèmes de dépendances que ce paquet entraîne. La syntaxe de la commande est la suivante : apt-get install -s nom_du_paquet

Exemple : simulation de l'installation du paquet gaim
# apt-get install -s gaim

Installation d'un paquet

Avec l'outil apt, l'installation de paquet est devenue simple. Elle se réalise avec la commande suivante :
apt-get install nom_du_paquet

Exemple : installer le paquet gaim
# apt-get install gaim

Voilà c'est tout simple, apt va installer le paquet grâce aux serveurs mirroirs configurés dans le fichier /etc/apt/sources.list. Mais apt va également installer les dépendances du paquet contrairement à dpkg.

Réinstallation d'un paquet

Pour différentes raisons , vous pouvez avoir besoin de réinstaller un paquet. Une réinstallation peut être utile dans le cas d'un paquet endommagé ou pour installer les fichiers d'une nouvelle version. La commande est la suivante : apt-get install --reinstall install nom_du_paquet

Exemple : réinstaller le paquet gaim
# apt-get --reinstall install gaim

3.2 Suppression

Suppression d'un paquet

Si vous n'utilisez plus un paquet, vous pouvez le supprimer via la commande :
apt-get remove nom_du_paquet

Exemple : supprimer le paquet gaim
# apt-get remove gaim

Il est à noter que cette commande ne supprime pas les fichiers de configuration.

Suppression d'un paquet avec ses fichiers de configuration

Pour supprimer les fichiers de configuration liés à un paquet, il faut utiliser la commande suivante :
apt-get --purge remove nom_du_paquet

Posté par tagger à 20:37 - 03. Gestion des paquets - Commentaires [0] - Rétroliens [0] - Permalien [#]
Tags :



« Accueil  1