Parties

  1. Table des matières
    1. révisions types de fichiers
    2. root
    3. sudo
    4. sudo less
    5. sudo cp
  2. machine distante
    1. ouverture d'un compte
    2. connection par ssh
    3. connection et decouverte
    4. Editeur en mode texte: Nano
    5. affichage distant: DISPLAY ssh
    6. affichage distant: redirection
    7. copie de fichiers avec scp
    8. scp 2
    9. scp distant vers local
  3. installation d'un logiciel à partir des sources
    1. archives tar
    2. Télécharger une archive
    3. désarchivage du paquet
    4. options de configure
    5. appel de configure
    6. lancement de configure et plantage
    7. installation du paquet manquant et reconfiguration
    8. compilation
    9. installation
    10. decouverte des fichiers installés
    11. lancement de la commande
    12. PATH
    13. fin
    14. installer tout seul
    15. installer tout, lib dynamique
  4. apt, dpkg, présentation
    1. présentation de la gestion de paquets
    2. apt sources.list
    3. sources.list
    4. debian
    5. cache stats
    6. nombre de paquets installes
    7. apt-cache search
    8. apt-cache search bittorrent
    9. apt-cache show
  5. analyse du contenu d'un paquet .deb
    1. téléchargement d'un paquet
    2. analyse du contenu du paquet
    3. analyse du contenu du paquet (suite)
    4. Analyse du contenu d'un paquet (suite2)
    5. Analyse du contenu d'un paquet (data.tar.gz)
    6. Analyse du contenu d'un paquet (data.tar.gz suite)
  6. installation d'un logiciel
    1. installation d'un paquet simple
    2. installation d'un logiciel simple (2)
    3. installation d'un logiciel moins simple
    4. suppression d'un paquet
    5. dependences de xbomb
    6. libc
  7. base de données dpkg et interrogation
    1. a quel paquet appartient un fichier
    2. afficher des infos sur le paquet d'un ficher
    3. version de pango
    4. /lib/libe2p.so.2
    5. e2fslibs

1. Table des matières

1.1 Table des matières

Bienvenue à ce premier TP d'administration système.

La grande majorité de ce TP se fera à travers la ligne de commande. Prenez le temps de comprendre les différentes commandes. Si vous vous accrochez, vous verez qu'avec l'habitude, la ligne de commande devient un outil très puissant et efficace.

Cliquez sur "début du TP" pour commencer.

1.2 révisions types de fichiers

Révisions sur les types de fichiers


Cherchez sur le web, par exemple sur wikipedia (http://fr.wikipedia.org/wiki/Liste_d'extensions_de_fichiers), des informations sur les types de fichiers suivants. Prenez le temps de bien comprendre à quoi sert chacun de ces types de fichiers avant de répondre.

1.3 root

Sur un système UNIX l'accès à divers fichiers et logiciels nécessaires à l'administration système est limité.
Si n'importe quel utilisateur pouvait y accéder, il pourrait
- détruire délibérément ou par erreur des données d'autres utilisateurs
- perturber délibérément ou par erreur le fonctionnement de la machine
- accéder à des informations confidentielles
- etc.

Pour ces raison, certaines taches d'administration sont réservées à un utilisateur particulier qui s'appelle "root".
Ce contrôle se fait généralement en limitant les droits d'accès aux fichiers et aux répertoires.

Parmi les opérations suivantes lesquelles sont réservées à l'utilisateur "root"?
Essayez de faire ces différentes opérations en tant que "etudiant".
(par contre n'essayez surtout pas de les faire en tant que root!)

1.4 sudo

La commande sudo


Traditionnellement, les administrateurs système travaillaient en tant que root. Pour cela il suffit de s'identifier en tant que root lorsqu'on se connecte au système (il faut, bien sur, connaître le mot de passe de root, qui est généralement très secret). On peut aussi devenir root en tapant la commande "su -" et en rentrant le mot de passe.

Malheureusement, lorsqu'on travaille en tant que root on peut très facilement commettre de erreurs qui peuvent avoir des conséquences graves (par exemple: suppression de fichiers vitaux pour le système).

Pour éviter ces problèmes, on conseille souvent de ne pas travailler en tant que root, et d'utiliser la commande "sudo" lorsqu'on a besoin de faire une opération en tant que root. C'est ce que nous allons faire dans ces TP. Dans ces TP, vous n'aurez pas le mot de passe root.

IMPORTANT:
- Dans ces TP nous ne travaillerons JAMAIS dans un shell en tant que root
- vous n'avez pas le mot de passe root.

Dans /etc/sudoers est spécifié quels utilisateurs peuvent utiliser sudo et comment.
Sur vos machines le compte "etudiant" peut utiliser sudo. Sudo vous demandera une fois un mot de passe (il s'agit de celui de "etudiant" et pas celui de "root"). Sudo se souviendra ensuite pendant quelque temps (dizaines de minutes) que vous avez rentré le bon mot de passe et ne vous le redemandera pas.

Exemple:

etudiant@machinetp:~$ cat /etc/shadow
cat: /etc/shadow: Permission non accordée
etudiant@machinetp:~$ sudo cat /etc/shadow
Password: (saisie du mot de passe)
root:$1$sdsQ//Ib$iVsdDDUtfkBFNB1d9rJW0:13521:0:99999:7:::
daemon:*:13521:0:99999:7:::
bin:*:13521:0:99999:7:::
...
etudiant@machinetp:~$




Quelle commande faut-il taper pour editer le fichier /etc/ssh/ssh_config avec l'editeur "gedit" en tant que root?


1.5 sudo less

Essayez de lire le fichier /etc/shadow avec la commande "less /etc/shadow"

Que se passe-il ?

Regardez les droits d'accès à ce fichier avec "ls -la /etc/shadow"

Maintenant essayez de lire le contenu de ce fichier en utilisant sudo

Quelle commande faut-il taper?

1.6 sudo cp

Créez un fichier essai.txt et vérifiez qu'il appartient bien à "étudiant".
Tapez la commande "sudo cp essai.txt copie-essai.txt"
A qui appartient le fichier copié (copie-essai.txt)?

2. machine distante

2.1 machine distante

Dans cette partie du TP, nous allons apprendre à se connecter sur une machine distante et à y travailler.

En administration système, il est fréquent de devoir travailler sur des machines auxquelles on n'a pas d'accès physique (par exemple, un serveur installé dans un data-center)

Voici quelques transparents du cours sur ce sujet:
xxx

2.2 ouverture d'un compte

ouverture d'un compte à votre voisin

Nous allons commencer par créer un compte à votre voisin, pour qu'il puisse se connecter sur votre machine.

  1. La création doit se faire en tant qu'administrateur ("root").
  2. La création se fait avec la commande "sudo adduser login_utilisateur"
  3. Plus tard, vous pourrez modifier son mot de passe avec: "sudo passwd login_utilisateur"
    (si vous rentrez un mot de passe trop court, vous aurez un warning , vous pouvez l'ignorer)
Vérifiez que le compte a bien été crée en regardant la fin du fichier "/etc/passwd", la dernière ligne doit commencer par "login_utilisateur". (on verra au cours suivant ce que ça veut dire).

2.3 connection par ssh

connection par ssh


Maintenant qu'il a un compte sur votre machine, votre voisin peut se connecter dessus à distance, à l'aide de la commande "ssh nom_utilisateur@adresse_ip_de_votre_machine"

Pour cela vous devez trouver l'adresse IP de votre machine (cours réseau)

Quelle commande faut-il taper pour obtenir l'adresse IP de votre machine?
(saisissez la commande ci-dessous)

2.4 connection et decouverte

Connexion sur la machine

On veut se connecter sur le compte que votre voisin vient de vous créer sur sa machine. Pour ca, on va utiliser la commande ssh. Regardez "man ssh" pour savoir comment préciser le nom de l'utilisateur. Pour le "hostname" (en francais: nom de la machine) utilisez son adresse ip.

Connectez vous sur la machine de votre voisin.

Une fois connecté, tapez la commande "w" pour obtenir des informations sur l'activité de la machine et savoir qui est loggué dessus.

Vous devriez obtenir quelque-chose de cette forme:
 01:08:53 up 3:13, 2 users, load average: 0.81, 0.10, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
etudiant tty1 - 9:56pm 24:04 0.28s 0.28s -bash
toto pts/1 192.168.0.10 10:31pm 0.00s 0.32s 0.10s sshd

Utilisez la commande "man w" pour comprendre les différents champs. Les trois champs "load average" en haut, à droite, sont particulièrement intéressants. Ils indiquent la charge (activité) de la machine. Une machine sur laquelle un seul processus est actif en permanence a une charge de 1. Si deux processus tournent à plein régime, la charge est de 2...

Tapez la commande "ps -ef" pour obtenir la liste des processus. Parmi les programmes suivants, lesquels ont au moins un processus correspondant à votre nom d'utilisateur?


2.5 Editeur en mode texte: Nano

Éditeur en mode texte: Nano

Lorsqu'on travaille sur une machine distante on souhaite souvent modifier des fichiers texte.

Il existe des éditeurs de texte fonctionnant directement dans votre terminal (pas d'affichage graphique):
Nous allons essayer "nano", qui est plus simple.

Dans votre répertoire personnel, tapez "nano exemple1.txt".
Tapez du texte à l’intérieur.
Pour enregistrer: ctrl-o
Pour quitter: ctrl-x

vérifiez que le fichier a bien été édité (less exemple1.txt)

2.6 affichage distant: DISPLAY ssh

Affichage graphique distant

Il est bien plus agréable de pourvoir éditer du texte avec un éditeur graphique.

Sur votre connexion ssh à la machine distante, tapez la commande "gedit".
Vous devriez voir apparaître une fenêtre chez vous. Refermez cette fenêtre.

Comme on l'a vu en cours, les commandes graphiques sont envoyées vers un affichage spécifié par la variable DISPLAY.

Dans un terminal sur votre propre machine (pas dans une connexion ssh), tapez "echo $DISPLAY" pour déterminer le nom de l'affichage.
Ensuite, dans un terminal ou vous êtes connecté par ssh sur la machine de votre voisin, tapez "echo $DISPLAY".


Vous obtenez:


2.7 affichage distant: redirection

Explications


"localhost" est le nom de la machine qui exécute la commande (127.0.0.1).
"localhost:0.0" c'est l'affichage principal (physique) de la machine qui exécute la commande.

localhost:10.0 (ou 11.0,12.0,13.0...) est un affichage particulier, en fait il n'affiche pas du tout sur "localhost" mais fait passer l'affichage à travers votre connexion ssh (c'est donc sécurisé), vers l'affichage de la machine physique ou vous êtes.

Pour ceux qui veulent expérimenter:

Dans certains cas on peut vouloir changer l'endroit ou s'affichent les fenêtres. Voici quelques exemples.
Attention: pour des raisons de sécurité l'affichage d'une machine à l'autre (sans passer par ssh) n'est pas permis par défaut. Par ailleurs l'affichage sur la même machine (par un autre utilisateur) doit être autorisé (commande xhost +).

display-0


d1


d2


d3


2.8 copie de fichiers avec scp

Copie de fichiers avec scp

Comme on l'a vu en cours, la commande scp permet de copier des fichiers d'une machine à l'autre.

La syntaxe est:
scp nom-util@nom-machine-src:chemin-src nom-util@nom-machine-dest:chemin-dest
Au final, ca peut devenir très simple.
Voici quelques exemples:
scp ordi2.toto.org:a.txt .
scp 192.168.1.3:a.txt .
scp b.txt ordi2.toto.org:
scp /etc/passwd ordi2.toto.org:/tmp

1. avec gedit, créez un fichier appelé essai.txt sur votre machine
2. Copiez ce fichier vers le répertoire personne du compte que votre voisin vous a crée sur sa machine.
3. En supposant que l'adresse IP de votre voisin était 192.168.123.123 et que votre compte sur sa machine est "dupond", quelle commande parmi les suivantes fallait-il taper?

2.9 scp 2

Essayons un cas un petit peu plus compliqué.

Votre machine:
IP: 192.168.0.10
compte: dupond

Machine distante:
IP: 192.168.123.123
compte: wang

Vous voulez copier le fichier "passwd" qui se trouve dans le répertoire /etc de votre machine vers le répertoire /tmp de la machine distante.

Quelle commande taper?

2.10 scp distant vers local

Essayons maintenant une copie dans l'autre sens (distant vers local):

Votre machine:
IP: 192.168.0.10
compte: dupond

Machine distante:
IP: 192.168.123.123
compte: wang

Vous voulez copier le fichier "passwd" qui se trouve dans le répertoire /etc de la machine distante vers le répertoire /tmp de votre machine

Quelle commande taper?

3. installation d'un logiciel à partir des sources

3.1 installation d'un logiciel à partir des sources

Installation d'un logiciel à partir des sources

Dans cette partie du TP nous allons télécharger les codes sources d'un logiciel, puis nous allons le compiler et l'installer. C'est une opération très courante, qu'il faut savoir faire.

Attention: il y a plusieurs manières très différentes d'installer des logiciels, par exemple: à partir du code source (logiciel.tar.gz ...), ou à partir de paquets binaires (apt-get). Ce sont des approches complètement différentes, à ne surtout pas confondre.

Rappel: il est dangereux de travailler (configurer et compiler) en tant que "root".
Dans ces TP nous ne travaillerons jamais dans un shell en tant que root.
Travaillez donc en tant que "etudiant". Lors de l'installation, il faudra utiliser "sudo" pour que l'installateur puisse copier les fichiers vers des répertoires protégés.

Voici les transparents du cours sur l'installation:
x

3.2 archives tar

Archives TAR

Pour vous aider à comprendre ce qu'est une archive, et comment on la manipule, nous allons créer une archive, puis la desarchiver avec la commande "tar".

A. création de quelques répertoires et fichiers qui seront archivés:

1. Créez un répertoire "essai".
2. dans ce répertoire créez deux fichiers "a.txt" et "b.txt", un sous-répertoire "sousrep" avec un fichier "c.txt" (vous pouvez, par exemple, utiliser gedit)

B. création de l'archive

1. remontez dans le répertoire ou est contenu "essai" (si vous tapez "ls" vous devez voir "essai")
2. tapez "tar cvf essai.tar essai"
3. vérifiez qu'un nouveau fichier appelé "essai.tar" a été crée. Vous venez de créer une archive.

C. desarchivage

1. copiez l'archive dans /tmp
2. allez dans le répertoire /tmp : "cd /tmp"
3. desarchivez avec la commande "tar xvf essai.tar"
4. vérifiez que vous retrouvez les fichier et répertoires "a.txt, b.txt ..."

Dans ces étapes (B et C) vous avez archivé et desarchivé une archive ".tar".
Ce fichier ".tar" n'est pas compressé.

D. archives compressée

Il est fréquent de compresser les fichiers archive pour qu'ils prennent moins de place.
1. toujours dans /tmp, supprimez le répertoire essai (rm -rf essai)
2. compressez l'archive : "gzip essai.tar" et vérifiez que le fichier a changé d'extension (.tar.gz)
3. on peut décompresser et desarchiver d'un coup: "tar xzvf essai.tar.gz"

3.3 Télécharger une archive

Enregistrez l'archive suivante: sysadmin-fichiers-tp1.tar.gz
Elle contient tout les fichiers nécessaires à ce TP.

Pour des-archiver vous pouvez utiliser les commandes suivantes.

tar xzvf nom-de-l-archive.tar.gz
ou bien
tar xjvf nom-de-l-archive.tar.bz2

Remarquez la différence entre les deux "z" (xzvf) et le "j" (xjvf)

z: archives .tar.gz
j: archives .tar.bz2

(bz2 est un format de compression plus performant que gz)



3.4 désarchivage du paquet

On vous demande de faire toutes ces opérations en ligne de commande, sans utiliser d'interface graphique. Vous devez vous habituer à utiliser la ligne de commande. Vous serez alors plus efficace et vous pourrez plus facilement travailler sur des machines distantes.

Desarchivez l'archive ngrep-1.44-1.tar.bz2. Ceci doit créer un répertoire "ngrep-1.44-1".
Rentrez dans le répertoire et découvrez les différents fichiers.

Est-ce que les fichiers suivants sont présents?






3.5 options de configure

Avant de pouvoir compiler le logiciel, il faut le configurer. La configuration vérifie aussi que tout les éléments necessaires sont bien présents. La configuration va generer les fichiers Makefile qui permettront de compiler le logiciel avec la commande "make". La configuration se fait à l'aide du fichier executable "configure" qui est fourni avec le logiciel.

Tapez: "./configure --help"

D'après l'affichage, à quoi sert l'option "--prefix" ?



3.6 appel de configure

En vous aidant de la documentation écrite par "./configure --help", quelle commande faut-il taper pour configurer le logiciel en indiquant qu'on veut l'installer dans le répertoire "/root/essai" ?

3.7 lancement de configure et plantage

Lancez la configuration avec la commande précédente.

Le programme "configure" lance une série de vérifications. Parfois, il peut trouver des solutions lorsqu'il manque certains éléments, mais si un élément indispensable n'est pas installé, le programme s'arrête.

C'est le cas ici.

Lisez les messages d'erreur affichés lors de la configuration.
configure cherche, entre autres, les fichiers ".h" (entetes, ou headers en anglais) necesaires pour compiler le ngrep.

Comment s'appelle le logiciel dont il manque les entêtes?

3.8 installation du paquet manquant et reconfiguration

"pcap" n'est pas installé. Il s'agit d'une librairie permettant de capturer des paquets sur le réseau, qui est nécessaire pour le fonctionnement de ngrep. On va donc l'installer en utilisant apt-get.

Tapez la commande suivante (nous verrons plus tard comment ça marche):
sudo apt-get install libpcap-dev
Remarques:
Les librairies ont souvent deux paquets associés :
- l'un pour contenant les fichiers (librairies dynamiques) nécessaires aux autres programmes utilisant cette librairie. Ici c'est libpcap0.7
- l'autre contenant les fichiers (librairies statiques, entêtes .h ...) nécessaires aux personnes qui veulent développer ou compiler des programmes utilisant cette librairie. Ici c'est libpcap0.7-dev
Ici, nous voulons compiler un programme qui a besoin de libpcap, il nous faut donc la version de développement. La version de developement depend de l'autre version aussi. Donc apt-get propose d'installer les deux. Il faut accepter.

Maintenant, relancez la configuration. Cela devrait bien se passer maintenant. Un fichier appelé "Makefile" est crée. Il vous permettra de compiler le logiciel ngrep.

Lorsqu'on dispose d'un fichier appelé "Makefile", quelle commande faut-il taper pour compiler?


3.9 compilation

compilation

La compilation prend quelques instants.
Lisez les messages affichés et essayez de comprendre, en gros ce qu'il se passe.
Dans ces messages vous remarquerez qu'une commande est lancée plusieurs fois pour compiler différents fichiers.
Quelle est le nom de la commande qui est utilisée ici pour compiler?
(donnez juste le nom de la commande)

3.10 installation

Regardez si le répertoire "/root/essai" existe encore ou pas.

Maintenant qu'on a compilé le logiciel, on doit "installer" le logiciel.
C'est à dire, on doit copier les fichiers nécessaires dans les répertoires dont la racine a été spécifié lors de la configuration.
Cette copie se fait automatiquement en tapant une commande.
En regardant votre cours, quelle commande faut-il taper pour installer le logiciel ngrep?
(essayez d'abord, lisez attentivement les message d'erreur, s'il y en a)

3.11 decouverte des fichiers installés

Allez dans le répertoire "/root/essai" et parcourez les différents répertoires et sous répertoires qui y ont été crées.

Au final, quels éléments ont été installés par ce logiciel ?

Si vous avez des doutes, imaginez ce qu'il serait arrivé si au lieu de spécifier
./configure --prefix=/root/essai
nous avions spécifié:
./configure --prefix=/usr

Comparez les noms de répertoires crées dans /root/essai avec les répertoires importants de l'arborescence UNIX.
x

remarque: il manque /usr/share/man sur ce schéma

3.12 lancement de la commande

Lancez le logiciel ngrep en tapant la commande "ngrep".
Ça ne marche pas, pourquoi?

Lisez attentivement le message d'erreur et essayez de comprendre.

Quel est le chemin absolu du répertoire ou se trouve le fichier exécutable "ngrep" ?

3.13 PATH

Lorsque vous tapez une commande, le shell va chercher un fichier exécutable correspondant dans une série de répertoires donnés par la variable d'environnement PATH.

Or, vous venez d'installer ngrep dans un répertoire qui n'est pas dans cette liste.

Tapez "echo $PATH" pour voir le contenu de cette variable.

Vous avez alors plusieurs possibilités pour exécuter ngrep:
  1. changer votre variable PATH
  2. indiquer le chemin complet de l'exécutable
Nous utiliserons pour l'instant la 2ieme solution.

Quel est le chemin complet, absolu, de l'exécutable ngrep ?
(indiquez le chemin complet, avec le nom de fichier "ngrep")

3.14 fin

Il se trouve que ngrep doit être exécuté en tant que root.
Tapez la commande "sudo /root/essai/bin/ngrep".
Vous devriez voir s'afficher plein de choses qui correspondent au trafic réseau de votre machine.
Vous pouvez l'arrêter avec "control-c"

Bravo. Vous avez réussi à installer un logiciel à partir des sources.

3.15 installer tout seul

C'est à vous


Dans les questions précédente nous avons installé ngrep à partir de ses sources.
Maintenant vous allez installer le paquet zlib-1.2.3.tar.bz2, a un autre endroit (par exemple /root/essai2 )

Il s'agit d'un paquet très très simple.

Suivez toutes les étapes nécessaires:
  1. desarchivage
  2. configuration
  3. compilation
  4. installation
Parcourez tous les fichier installés et essayez de comprendre à quoi il servent.

Quel est le nom du fichier correspondant à la librairie installé?

3.16 installer tout, lib dynamique

L'option --shared


Reconfigurez avec l'option --shared (en plus de --prefix...), puis recompilez et re-installez.
Regardez les nouveaux fichiers installés.

Des nouveaux éléments (deux liens symboliques et un fichier) sont installés dans le répertoire lib.

Quel est le nom le plus court parmi ces liens symboliques?

(réfléchissez ensuite à quoi sert ce fichier, et à quoi sert l'option --shared)


4. apt, dpkg, présentation

4.1 apt, dpkg, présentation

Dans les questions précédentes nous avons appris à installer des logiciels à partir d'une archive contenant leur code source.

Nous allons maintenant une manière très différente (et beaucoup plus simple) pour installer et gérer des logiciels.

Dans cet partie du TP, nous allons découvrir le système de gestion de paquets de Debian, et, entre-autres les commandes "apt-get", "apt-cache" et "dpkg". Nous verrons comment installer et desinstaller des paquets en gérant les dépendances.

Voici quelques transparents du cours à ce sujet:
x
x

4.2 présentation de la gestion de paquets

Présentation de la gestion de paquets

Pensez à regarder votre cours (disponible aussi ici en PDF) pour revoir l'ensemble du fonctionnement du système de gestion de paquets.

Vous trouverez aussi de nombreuses sources de documentation sur internet. Prenez un peu de temps pour trouver celle qui vous convient le mieux.
Par exemple:
http://www.debian.org/doc/manuals/apt-howto/index.fr.html
http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool
http://www.coagul.org/article.php3?id_article=157

Pour résumer:

autres commandes utiles:

apt-cache search toto
recherche tous les paquets dont la description contient le terme "toto". Cette commande cherche dans tous les paquets qui existent (pas seulement ceux qui sont installés).

apt-cache show nompaquet
affiche des informations sur nompaquet

dpkg -l (L minuscule)
liste de tous les paquets installés sur votre système

dpkg -L nompaquet (L majuscule)
liste de tous les fichiers installés sur votre système appartenant à nompaquet

dpkg -S nomfichier (S majuscule)
rechercher a quel paquet(s) appartient nomfichier. Cette commande cherche uniquement dans les paquets deja installés sur votre système.





4.3 apt sources.list

Fichier de configuration

Votre machine est configurée pour chercher les paquets à partir de deux sources différentes:
Ceci est spécifié dans un fichier de configuration du système apt.
(pour trouver son nom, réfléchissez et cherchez ... ou regardez votre cours. Dans quel répertoire se trouvent tous les fichiers de configuration du système?)

En utilisant les infos de la question précédente, et en regardant le fichier de configuration, donnez l'URL de la source principale.

4.4 sources.list

Certains fichiers de config, comme sources.list, ont une page man qui peut être accédé par "man nom-fichier-config" (donc ici "man sources.list").

Parcourez rapidement la page man.

Vous y trouvez une description du "format d’une entrée dans sources.list" :
deb uri distribution [composant1] [composant2] [...]

En utilisant cette info, trouvez dans votre fichier de config sources.list le nom de la distribution sur laquelle vous travaillez.

(attention, ne confondez pas le fichier de config sources.list avec la page man sources.list qui documente ce fichier)

4.5 debian

La distribution s'appelle bien lenny. Cherchez sur le web et lisez un peu plus d'infos sur "lenny".
Quel est le nom du système d'exploitation auquel appartient cette distribution?

4.6 cache stats

La commande "apt-cache stats" permet d'obtenir des informations sur le nombre de paquets qui sont disponibles.

Au total, quel est l'ordre de grandeur du nombre de paquets sont disponibles?

4.7 nombre de paquets installes

Retrouvez la commande qui permet de lister les paquets effectivement installés sur votre machine.

En utilisant un tube et la commande "wc", comptez combien de lignes sont affichées par cette commande.

Quel est l'ordre de grandeur du nombre de paquets installés?

4.8 apt-cache search

En utilisant la commande appropriée, recherchez les paquets qui ont un lien avec le jeux d'échecs. (on cherchera ("échecs" en français) dans tous les paquets existants, pas dans les paquets installés).

Un grand nombre de lignes s'affichent, chacune correspondant à un paquet.

Donnez le nom d'un des deux paquets permettant de jouer à une version japonaise des échecs.

Si vous ne trouvez pas le bon paquet, vous pouvez utiliser un tube avec "grep -i japon"


4.9 apt-cache search bittorrent

Environ combien de paquets disponibles ont une description qui parle de "bittorrent"?

(attention à l'orthographe de "bittorrent" : 2 "t" et 2 "r")

4.10 apt-cache show

En utilisant la commande apt-cache, affichez des informations sur le paquet "mldonkey-server".

Lisez la description du paquet.

Dans quel langage de programmation est écrit le logiciel "mldonkey-server"?

5. analyse du contenu d'un paquet .deb

5.1 analyse du contenu d'un paquet .deb

Analyse du contenu d'un paquet .deb

Dans les questions suivantes nous allons regarder ce qui est contenu dans un paquet debian.

Les paquets Debian se présentent sous la forme d'un fichier.deb

Il est très rare qu'on ait à manipuler directement des fichiers .deb
D'habitude "apt-get" s'occupe tout seul de télécharger et d'installer les paquets sans qu'on les voit.

Mais pour comprendre le fonctionnement du système, c'est important de comprendre ce qu'il y a à l'intérieur de ces paquets.

x

5.2 téléchargement d'un paquet

Parmi les fichiers du tp-1 retrouvez le paquet .deb appelé xbill

5.3 analyse du contenu du paquet

Analyse du contenu d'un paquet

Un paquet .deb est en fait une simple archive au format "ar" (ce qui ressemble à une archive "tar", mais n'est pas tout à fait la même chose).

On va désarchiver ce paquet pour découvrir ce qu'il y a dedans.
  1. créez un répertoire "analyse" et rentrez dedans.
  2. depuis ce répertoire on va désarchiver le paquet: "ar xv (chemin)/xbill_2.1-6_i386.deb"
  3. regardez les fichier qui ont été crées dans votre répertoire
Combien de fichiers ont été crées?

5.4 analyse du contenu du paquet (suite)

Analyse du contenu du paquet (suite)

Le paquet xbill est bien constitué de 3 fichiers: control.tar.gz data.tar.gz debian-binary

Parmi ces fichiers crées il y a deux archives au format "tar.gz".
Désarchivez l'archive "control.tar.gz" et regardez attentivement le contenu des fichiers crées:
Quel type d'information est-ce qu'il y a dans ces fichiers?

5.5 Analyse du contenu d'un paquet (suite2)

Le fichier "control" contient une description détaillé (c'est que vous obtiendrez si vous utilisiez la commande "apt-cache show xbill")

Le fichier "postinst" est un script shell (un petit programme) qui va être exécuté juste après (post) l'installation (inst) de ce paquet.

Le fichier "postrm" est un script shell (un petit programme) qui va être exécuté si ce paquet est installé et que vous le supprimez (rm). Il sera exécuté juste après (post) la suppression du paquet.



En lisant le script correspondant (essayez d'en comprendre les grandes lignes), quel fichier supplémentaire est supprimé par le script lorsque l'on desinstalle le paquet xbill avec l'option "purge" (purge = supprimer tous les fichiers de configuration et de données) ?

5.6 Analyse du contenu d'un paquet (data.tar.gz)

Désarchivez le fichier data.tar.gz et regardez la liste des fichiers et répertoires créez.
Il s'agit du principal contenu de ce paquet. Ce sont les fichiers et répertoires qu'il va installer dans le système.

En conclusion: lorsqu'on installe ce paquet (par exemple avec apt-get install xbill), le système fait deux choses:
  1. il desarchive data.tar.gz dans le répertoire racine "/". De cette manière il copie tous les fichiers de xbill dans les répertoires du système.
  2. il exécute le script postinst (postinst = après installation). Ce script règle juste quelques petits détails concernant le fichier de score pour le jeu xbill.
Voila, l'installation d'un paquet n'a plus de mystère pour vous.


Parcourez les répertoires "usr" et "var" qui ont été crées lorsque vous avez desarchivé data.tar.gz
Vous pouvez utiliser "ls -R usr" pour récursivement afficher le contenu de cette arborescence.
Regardez quelques-uns des fichiers ".xpm" à l'aide de la commande "eog".

Trouvez le fichier "xbill.6.gz" (il s'agit de la page man)
Lors de l'installation de ce paquet, dans quel répertoire sera installé le fichier "xbill.6.gz" ?

(attention : on demande dans quel répertoire il sera installé, pas dans quel répertoire il se trouve actuellement dans vos fichiers)

5.7 Analyse du contenu d'un paquet (data.tar.gz suite)

Dans quel répertoire sera installé le fichier exécutable qui permettra de lancer le jeu "xbill"?
(attention : on demande dans quel répertoire il sera installé, pas dans quel répertoire il se trouve actuellement dans vos fichiers)

6. installation d'un logiciel

6.1 installation d'un logiciel

Dans la partie précédente nous avons vu ce qu'il y avait dans un paquet .deb.
Dans cette partie nous allons installer des logiciels avec "apt-get install".
La plupart du temps, nous ne manipulerons pas directement des paquets .deb
En effet, apt-get les télécharge et les installe tout seul.

6.2 installation d'un paquet simple

Installation d'un paquet simple


Quelle commande faut-il taper pour installer le logiciel "xbomb" ?

6.3 installation d'un logiciel simple (2)

(remarque: xbomb est peut-etre déjà installé sur votre machine. Dans ce cas, desinstallez-le avec "sudo apt-get remove xbomb", puis reinstallez-le avec "sudo apt-get install xbomb", pour voir les messages)

Lisez attentivement l'affichage de la commande d'installation. Il s'agit d'un logiciel très simple.
Trouvez (et lisez) les descriptions correspondant à chacune des lignes.

sudo apt-get install xbomb

  1. Lecture des listes de paquets... Fait
  2. Construction de l'arbre des dépendances... Fait
  3. Les NOUVEAUX paquets suivants seront installés :
  4. xbomb
  5. 0 mis à jour, 1 nouvellement installés, 0 à enlever et 43 non mis à jour.
  6. Il est nécessaire de prendre 23,6ko dans les archives.
  7. Après dépaquetage, 77,8ko d'espace disque supplémentaires seront utilisés.
  8. Réception de : 1 http://ftp2.fr.debian.org lenny/main xbomb 2.1a-6.1 [23,6kB]
  9. 23,6ko réceptionnés en 0s (91,8ko/s)
  10. Sélection du paquet xbomb précédemment désélectionné.
  11. (Lecture de la base de données... 77227 fichiers et répertoires déjà installés.)
  12. Dépaquetage de xbomb (à partir de .../xbomb_2.1a-6.1_i386.deb) ...
  13. Paramétrage de xbomb (2.1a-6.1) ...


6.4 installation d'un logiciel moins simple

installation d'un logiciel moins simple

Installez le logiciel "frozen-bubble". Vous devriez voir afficher quelque-chose ressemblant à ça:

sudo apt-get install frozen-bubble
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
fb-music-high frozen-bubble-data libsdl-console libsdl-gfx1.2-4 libsdl-image1.2
libsdl-mixer1.2 libsdl-net1.2 libsdl-pango1 libsdl-perl libsdl-ttf2.0-0 libsmpeg0
Paquets suggérés :
ttf-freefont
Les NOUVEAUX paquets suivants seront installés :
fb-music-high frozen-bubble frozen-bubble-data libsdl-console libsdl-gfx1.2-4 libsdl-image1.2
libsdl-mixer1.2 libsdl-net1.2 libsdl-pango1 libsdl-perl libsdl-ttf2.0-0 libsmpeg0
0 mis à jour, 12 nouvellement installés, 0 à enlever et 43 non mis à jour.
Il est nécessaire de prendre 22,9Mo dans les archives.
Après dépaquetage, 39,1Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n]

(il faut repondre O (oui))


En utilisant "apt-cache show" regardez à quoi correspondent les différents paquets supplémentaires installés:
et pour chacun essayez de comprendre rapidement en quoi ce paquet pourrait être nécessaire pour l'installation de "frozen-bubble".

6.5 suppression d'un paquet

Lors de l'installation de "frozen-bubble", apt-get a déterminé qu'il fallait aussi installer (entre autres) le paquet "frozen-bubble-data". C'est qu'on appelle une dépendance.

Qu'arrive-il si on essaye de desinstaller (supprimer) le paquet frozen-bubble-data?
apt-get remove frozen-bubble-data
(attention! tapez la commande, mais répondez non ( n ) à la confirmation)

Quel paquet, en plus de "frozen-bubble-data" serait supprimé?

6.6 dependences de xbomb

Dépendances de xbomb

Analysez les capacités dont dépend "xbomb".
(soit avec "apt-cache show", soit avec "apt-cache depends")

xbomb a besoin de quelque librairies X (X est le système que vous utilisez actuellement pour afficher vos fenêtres).

En plus de ces librairies X, xbomb a besoin d'une autre, très fréquemment utilisé. Laquelle?


6.7 libc

Librairie standard du C

xbomb, comme une grande partie des paquets installés, dépend de la librairie standard du C. Les programmes écrits en C (ou qui utilisent des éléments écrits en C) dépendent de cette librairie.

C'est dans cette librairie que se trouvent des fonctions C comme "printf", "malloc", "fopen", "strcmp" ...

Prenez le temps de lire la description de cette librairie (apt-cache show ...)

7. base de données dpkg et interrogation

7.1 base de données dpkg et interrogation

Lorsqu'on installe un paquet avec apt-get ou dpkg, des informations détaillées le concernant sont ajoutées dans une base de données. Grâce à cette base de données, apt ou dpkg pourront, par exemple, effacer tous les fichiers associées à un paquet, ou bien nous dire à quel paquet appartient un fichier.

7.2 a quel paquet appartient un fichier

A quel paquet appartient un fichier?


Par exemple, si nous tombons sur un fichier appelé "/usr/bin/gcc" et que nous voulons savoir à quel paquet il appartient, on peut taper la commande: "dpkg -S /usr/bin/gcc"

Quelle est le nom du paquet correspondant à ce  fichier?

7.3 afficher des infos sur le paquet d'un ficher


Supposons que vous exploriez votre système et que vous tombiez sur le répertoire "/etc/pango"

En utilisant la commande "dpkg" et "apt-cache" avec les options d'interrogation appropriées, déterminez à quoi correspond "pango" :


7.4 version de pango

quelle est la version de "pango" installée sur votre système?
(le champ Version de la description)

7.5 /lib/libe2p.so.2

Quel est le nom du paquet auquel appartient le fichier /lib/libe2p.so.2 ?

7.6 e2fslibs

A quoi sert le paquet e2fslibs ?