Professional Documents
Culture Documents
Best o f Best of
Best o f
J . - F. B O U C H A U D Y
G. GOU BET
E Y R O L L E S
E Y R O L L E S
Linux Administration
Jean-François Bouchaudy
Après des études de doctorat
en biophysique, Jean-François
Bouchaudy s’est orienté vers
Acquérir rapidement des compétences professionnelles l’informatique en se spécialisant
en administration Linux dans le développement
d’applications en C et
Réédition au format semi-poche de la 4e édition de Linux Administra- d’applications TCP/IP sous Unix.
tion, initialement publiée dans la collection « Les guides de formation Il anime des formations sur les
Tsoft ». Considéré par de nombreux administrateurs Linux comme une thèmes suivants : administration
des meilleures références en langue française sur le sujet, ce guide Unix et Linux, programmation
système Unix, langages C, C++
d’autoformation de 800 pages vous aidera à maîtriser rapidement tous
et Perl, TCP/IP, Samba, sécurité
les aspects de l’administration d’un serveur Linux : gestion des fichiers
réseau, etc.
et des utilisateurs, sauvegarde et restauration, administration réseau, sé-
curité, optimisation des performances, etc.
Gilles Goubet
Plus de 170 exercices corrigés vous permettront de tester vos connais-
Diplômé de l’ESIEE, Gilles
sances et de vous entraîner aux tâches qui constituent le quotidien d’un
Goubet est chef de projets
administrateur système et réseau.
Administration
(développement d’applications
Les auteurs ont choisi de mettre l’accent sur le mode commande, plu- en C, d’applications réseaux
tôt que sur les outils graphiques fournis avec telle ou telle distribution.
La connaissance des fichiers et des commandes qui se cachent der-
rière ces outils est en effet indispensable aux administrateurs opérant
et d’applications temps réel).
Il anime des formations Unix,
langage C, C++, Java, ADA,
J E AN-F R ANÇO I S B O U C HAU DY
Linux
dans un contexte professionnel, et offre l’avantage d’une certaine in-
dépendance vis-à-vis des distributions.
temps réel.
GI LLES GOU BET
Au sommaire
Linux
Linux et ses distributions • Gestion des utilisateurs • Fichiers et systèmes de
fichiers • Gestion de l’espace disque • Sauvegarde • Gestion des processus
• Installation d’applications (paquetages RPM et Debian) • Arrêt et démarrage
ISBN : 978-2-212-12074-5
9 7 8 2 2 1 2 1 2 07 4 5
Conception Nord Compo
l’impression • X-Window, Gnome et KDE • Bases de données sous Linux
(MySQL, PostgreSQL) • Le noyau (version 2.6) • Gestion des périphériques •
Installation de Linux • Gestion des performances • Sécurité Linux.
@ www.editions-eyrolles.com
• Les paquetages
(« packages »)rpm
• La commande en mode
texte rpm .
Module 8 : L’installation
d’application
Objectifs
Après la lecture de ce module, le lecteur sait installer une application à partir de ses
sources. Il sait aussi installer une application sous forme de paquetage. Enfin, il connaît
les solutions lui permettant une résolution automatique des problèmes liés à la
dépendance des paquetages.
Contenu
Sources et paquetages
Les paquetages RedHat (RPM)
Les paquetages Debian
Mises à jour et dépendances
Références
Le manuel : rpm(8), dpkg(8), apt-get(8)
Internet :
http://rpmfind.net
http://www.debian.org/distrib/packages
Sources et paquetages
Sources et paquetages
Introduction
L’installation d’une application sur un système Linux peut être accompli
essentiellement de deux manières :
• Soit à partir des sources. Il faut donc compiler l’application.
• Soit à partir d’un paquetage contenant les binaires de l’application.
Remarque
Pour la petite histoire, il faut mentionner que l’on peut manipuler des paquetages
contenant les sources et que la distribution Gentoo est entièrement basée sur
l’installation de paquetages sources.
main.o : main.c
gcc -c main.c
add.o : add.c
gcc -c add.c
mult.o : mult.c
gcc -c mult.c
$ make
gcc -c add.c
gcc -c mult.c
gcc -shared -o libz.so add.o mult.o
gcc main.o libz.so
$ make
make: `a.out' est à jour.
$
Paquetage GNU
Un paquetage GNU est en fait un tarball. La procédure d’installation suit toujours les
mêmes étapes :
- récupération du tarball
- décompression avec l’outil gzip du GNU
- restauration avec tar
- déplacement dans le répertoire principal créé à l’étape précédente
- activation du script shell configure
- compilation de l’application via la commande make
- installation du logiciel via la commande make install
L’exécution du script configure est l’étape essentielle de l’opération. L’installateur l’a
créé avec l’outil GNU autoconf. Il génère le fichier Makefile qui permet la
compilation du produit avec, comme intérêt majeur, de fabriquer un Makefile spécifique
de la plate-forme. Il prend en compte les outils de développement installés (ld, as, ar,
m4, make, lex, yacc...), leur emplacement, les options de compilation liées à
l’architecture matérielle, l’emplacement des fichiers et des commandes… Le même
tarball peut être utilisé pour les différentes plates-formes UNIX existantes et pour les
différentes distributions Linux. La portabilité UNIX, dans ce cas, n’est pas un vain mot.
Syntaxe d’utilisation d’un script configure
Un script configure peut être activé avec des options qui précisent notamment
l’emplacement des fichiers, ou bien le comportement du logiciel.
Nous mentionnons quelques options d’installation d’Apache.
--help : affiche la liste de toutes les directives de configuration, et la liste des modules
disponibles et leur état d’inclusion.
--quiet : mode silencieux.
--verbose : mode verbeux.
--show-layout : affiche les emplacements utilisés.
--prefix=/usr/httpd : spécifie la racine d’installation, par défaut /usr/local/apache.
--enable-shared=max : Apache utilise l’édition de liens dynamique, par défaut, il utilise
l’édition de liens statique.
La commande patch
La commande patch, créée par Larry Wall, le concepteur de PERL, effectue la mise à
jour de fichiers sources répartis dans une arborescence de fichiers. La commande
applique les modifications mémorisées dans un fichier créé par la commande
diff -c. Cette dernière génère les modifications qu’il faut apporter à un fichier pour
obtenir la version modifiée. Contrairement à la commande diff –e qui crée un script
ed, l’option –c ou –u génère une différence contextuelle qui prend en compte les lignes
qui entourent les lignes modifiées. Dans certains cas, la commande échoue et le précise
avec des balises qui encadrent les zones indécises.
Les mises à jour de sources sont disponibles sous forme de fichiers patch compressés.
Exemple simple d’utilisation de la commande patch :
$ cal > f1.txt
$ cp f1.txt f2.txt
$ echo "Salut ..." >> f2.txt
$ diff -c f1.txt f2.txt
*** f1.txt Fri Oct 12 14:36:31 2001
--- f2.txt Fri Oct 12 14:39:42 2001
***************
+ Salut ...
$ diff -c f1.txt f2.txt > patch.txt
$ patch -p0 f1.txt < patch.txt
Ressemble à une opération new-style context diff.
terminé
$ cat f1.txt
octobre 2001
S M Tu W Th F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Salut ...
$
Voici un exemple plus réaliste : Le système du développeur possède deux
arborescences, old et a_jour. Le programmeur crée le fichier patch qui permet de passer
de l’arborescence old à a_jour.
$ cd old
$ find .
.
./patch.gz
./main.c
./libz
./libz/mult.c
./libz/add.c
$ find ../a_jour
../a_jour
../a_jour/main.c
../a_jour/libz
../a_jour/libz/mult.c
../a_jour/libz/add.c
$ diff -u -r . ../a_jour
diff -u -r ./libz/add.c ../a_jour/libz/add.c
--- ./libz/add.c 2004-02-18 17:08:27.897275488 +0100
+++ ../a_jour/libz/add.c 2004-02-18 16:41:33.649678424 +0100
@@ -1,3 +1,4 @@
+/* ==== add.c === */
int add(int x, int y ) {
return x+y;
}
diff -u -r ./main.c ../a_jour/main.c
--- ./main.c 2004-02-18 17:08:18.814656256 +0100
+++ ../a_jour/main.c 2004-02-18 16:41:13.269776640 +0100
@@ -1,3 +1,4 @@
+/* === main.c ==== */
main() {
int a=3,b=4,c;
c = add(a,b);
Only in .: patch.gz
$ diff -u -r . ../a_jour |gzip > patch.gz
Sur le système cible, l’administrateur récupère le fichier patch.gz et l’installe dans son
répertoire a_jour qui correspond en fait chez le développeur au répertoire old. Grâce à
la commande patch il installe la mise à jour des sources.
$ gunzip -c patch.gz | patch -p0
patching file ./libz/add.c
patching file ./main.c
$
Le système CVS
CVS (Concurrent Version System) est un système de gestion de version qui peut
fonctionner en réseau. Ce logiciel est libre, sous licence GPL. Il est destiné à remplacer
RCS, pour des cas complexes. Beaucoup de logiciels libres sont développés sur Internet
grâce à CVS. Ce produit est d’abord destiné aux développeurs. Il peut être utilisé par
toute personne qui récupère la dernière version d’un logiciel ou les dernières
modifications dans le cas où l’on dispose déjà d’une version antérieure.
Exemple : récupération de Samba
Après avoir récupéré le logiciel CVS, il faut créer la variable d’environnement
CVSROOT qui donne l’adresse du serveur CVS, le compte sous lequel on se connecte
et le répertoire où se trouvent les fichiers CVS.
$ CVSROOT=":pserver:cvs@cvs.samba.org:/cvsroot"
$ export CVSROOT
On se déplace dans le répertoire qui est destiné à recevoir les sources de Samba, et on se
connecte au serveur en donnant le mot de passe « cvs ».
$ cd /usr/samba_src
$ cvs login
password : cvs
On télécharge les dernières modifications (ou tout le logiciel, si c’est la première fois).
La commande cvs checkout va automatiquement mettre à jour les fichiers (de
manière similaire à la commande patch).
$ cvs -z3 checkout samba
Enfin, il ne reste plus qu’à compiler Samba comme un paquetage GNU. Le script
configure se trouve dans le répertoire « source ».
Les paquetages
Les paquetages GNU apportent une solution à la portabilité d’une application UNIX,
mais elle ne résout en rien la gestion et la mise à jour d’un serveur Linux comportant
des dizaines d’applications et des centaines d’utilitaires, de documentation, de
bibliothèques partagées… La notion de paquetage (« package ») attendu alors doit être
plus évoluée. Un paquetage ne doit pas seulement contenir les fichiers d’une
application, mais doit reposer sur un format strict qui permet sa manipulation
automatique par l’intermédiaire d’un ensemble de commandes.
On veut notamment disposer des fonctionnalités suivantes :
• Installer automatiquement une application.
• Connaître les paquetages installés.
• Avoir des informations générales sur un paquetage.
• Désinstaller un paquetage.
La
Lamise
miseen
enœuvre
œuvrede
derpm
rpm
Installer un paquetage
# rpm -i le_paquetage.rpm
Retirer un paquetage
# rpm -e le_paquetage
Afficher les paquetages installés
# rpm -qa
Afficher les caractéristiques d’un paquetage
# rpm -qpi le_paquetage.rpm
Afficher les composants d’un paquetage
# rpm -qpl le_paquetage.rpm
Introduction
Le RPM (Red Hat Package Manager) est un système qui permet de gérer l’installation
ou la désinstallation d’applications fournies sous forme de paquetages (package). Ce
système, bien que créé par la société Red Hat, est un logiciel ouvert sous licence GPL
(cf. http://www.rpm.org).
Un paquetage se présente sous forme d’un fichier au format RPM. Ce fichier a
l’extension « .rpm ». Il contient les fichiers à installer, mais aussi des informations
générales sur le paquetage, comme la version, la description, et le script d’installation
du paquetage.
La gestion des paquetages est principalement réalisée par la commande rpm. Les
commandes KPackage, Glint et Gnome-RPM sont des interfaces graphique à la
commande rpm. Elles en simplifient l’usage par la convivialité du mode graphique.
Elles ne peuvent évidemment être exécutées que dans un environnement X (cf. Module
13 : X-Window).
La commande rpm2cpio convertit un fichier au format rpm en un fichier au format
cpio.
La commande rpm
La commande rpm gère les paquetages au format rpm.
Syntaxe
rpm -option_principale [ options_secondaires] [le_paquetage]
Options
Le tableau qui suit donne la liste essentielle des options « option_principale » de la
commande rpm, hormis celles de construction de paquetage.
Option Description
-i Installe un paquetage.
-U Mise à jour d’un paquetage.
-e Désinstalle un paquetage.
-q Affiche des informations sur un paquetage. L’option complémentaire « -
p » permet de préciser le nom d’un paquetage non installé. Le nom doit
alors être fourni sous la forme d’une URL pour FTP.
-V Vérifie un paquetage.
--version Affiche la version.
--help Affiche les options de la commande rpm.
--checking Vérifie la signature d’un paquetage.
ypbind-3.3-20
zlib-1.1.3-5
zlib-devel-1.1.3-5
XFree86-SVGA-3.3.3.1-49
XFree86-VGA16-3.3.3.1-49
XFree86-Mach32-3.3.3.1-49
XFree86-Mach64-3.3.3.1-49
XFree86-AGX-3.3.3.1-49
egcs-g77-1.1.2-12
…
Installer un paquetage stocké sur une autre machine (via FTP)
# rpm -i ftp://venus/RPMS/le_package.rpm
Forcer l’installation si le paquetage est déjà installé ou dépend d’autres
paquetages
# rpm -ivh --nodeps --force egcs-g77*.rpm
Connaître les dépendances d’un paquetage (-R ou --requires)
# rpm -qR egcs-g77
egcs = 1.1.2
/sbin/install-info
/bin/sh
ld-linux.so.2
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
Connaître les versions d’un paquetage, du gestionnaire rpm
# file egcs-g77*.rpm
egcs-g77-1.1.2-12.i386.rpm: RPM v3 bin egcs-g77-1.1.2-12
# rpm --version
RPM version 3.0
Afficher les scripts qui seront déclenchés automatiquement
# rpm -q --scripts pdksh
postinstall script (through /bin/sh):
if [ ! -f /etc/shells ]; then
echo "/bin/ksh" > /etc/shells
else
if ! grep '^/bin/ksh$' /etc/shells > /dev/null; then
echo "/bin/ksh" >> /etc/shells
fi
fi
postuninstall script (through /bin/sh):
if [ ! -f /bin/ksh ]; then
grep -v /bin/ksh /etc/shells > /etc/shells.new
mv /etc/shells.new /etc/shells
fi
Afficher les caractéristiques des fichiers : chemin, taille, date de
modification et signature md5
# rpm -q -l --dump -p egcs-g77*.rpm
/usr/bin/f77 3 922052494 0120777 root root 0 0 0 g77
/usr/bin/g77 68640 922052491 815e6c0fbd6de5459ecfc697fb203ae9 0100755
root
oot 0 0 0 X
/usr/info/g77.info.gz 265867 922052444
c2bbbe856c529e09d52be1e7c9aac694
100644 root root 0 1 0 X
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/f771 1881484 922052491
cc0e0f0993ef948a34eaf946058d05f2 0100755 root root 0 0 0 X
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/g2c.h 5614
922052489 26ccd6b28810977b3b0a5b53c1527965 0100644 root root 0 0 0 X
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/libg2c.a 2511742
922052489 9f78549164e2e0aa0b16edc6811f006f 0100644 root root 0 0 0 X
/usr/man/man1/f77.1 5 922052494 0120777 root root 0 1 0 g77.1
/usr/man/man1/g77.1 9271 922052439 c73cdd2b562212d0e720526ac277070d
0100644 root root 0 1 0 X
Vérifier un paquetage (cf. l'option --dump ci-dessus)
# rpm -V egcs-g77
# ls -l /usr/man/man1/f77.1g
-rw-r--r-- 1 root root 9271 Mar 21 1999 /usr/man/man1/g77.1
# chmod g+w /usr/man/man1/g77.1
# rpm -V egcs-g77
.M...... /usr/man/man1/g77.1
Afficher la liste des fichiers de documentation d’un paquetage
# rpm -q -d egcs-g77
/usr/info/g77.info.gz
/usr/man/man1/F77.1
/usr/man/man1/g77.1
Vérifier l’ensemble des paquetages installés
# rpm –Va
Vérifier la signature d’un fichier paquetage
On peut vérifier, avec l’option checksig, si un fichier paquetage a été modifié. La
commande rpm recalcule la somme MD5 et la compare avec celle incluse dans le
paquetage.
# rpm --checksig --nopgp egcs-g77*.rpm
egcs-g77-1.1.2-12.i386.rpm: size md5 OK
Si l’on a installé GPG, on peut se prémunir contre les chevaux de Troie. Il faut d’abord
installer la clé publique associée au logiciel ou à la distribution. Dans l’exemple suivant,
on installe la clé de la distribution Fedora, elle se trouve à la racine du premier CD-
ROM. On peut également la télécharger à partir du site RedHat. Ensuite, grâce à
l’option --checksig, on vérifie la signature numérique du fichier RPM.
# rpm --import RPM-GPG-KEY-fedora
# rpm --checksig cpio-2.5-5.i386.rpm
cpio-2.5-5.i386.rpm: (sha1) dsa sha1 md5 gpg OK
La commande dpkg
z Liste de paquetages installés
# dpkg -l
z Lister les fichiers d’un paquetage
# dpkg –L adduser
La commande apt-get
z Mettre à jour la liste des paquetages disponibles
# apt-get update
z Installer un paquetage
# apt-get install adduser
z Rechercher un paquetage
# apt-cache search chess
Introduction
Les paquetages Debian sont, avec les RPM, les paquetages les plus utilisés par les
systèmes Linux. Outre Debian, d’autres distributions comme Knoppix les utilisent. La
facilité de mise à jour en réseau grâce à la commande apt-get les a rendu populaires.
Les paquetages debian
Un paquetage Debian est un fichier qui contient les fichiers d’une application et les
données nécessaires à son installation.
Il y a deux types de paquetages : les paquetages sources et les paquetages binaires. Ces
derniers sont directement installables. Ils ont l’extension « .deb ». Les paquetages
sources sont composés de plusieurs fichiers dont les fichiers de contrôle qui possèdent
l’extension « .dsc ».
Le nom d’un paquetage suit une logique rigoureuse. L’exemple suivant
ethtool-1.8-2.deb
désigne la deuxième version (2) du paquetage (.deb) de la version 1.8 du logiciel
ethtool.
Les commandes de gestions de paquetage
dpkg
C’est la commande de gestion de paquetage de bas-niveau en mode ligne de commande.
Elle est similaire à la commande rpm. Elle permet l’installation d’un paquetage, sa
désinstallation, …
apt-get
C’est une commande haut-niveau en mode ligne de commande qui est une interface à la
commande dpkg. L’utilisateur précise le logiciel à installer et la commande le
recherche toute seule à partir de différentes sources configurées au préalable.
dselect
Cette commande de gestion de paquetage fonctionne en mode texte plein écran. Elle est
utilisée lors de l’installation du système Debian. C’est une interface à la commande
apt-get. Elle liste les paquetages installés et disponibles. Son utilisation est complexe.
tasksel
Cette commande en mode texte plein écran peut-être utilisée en complément ou en
alternative à dselect lors de l’installation du système. Elle permet l’installation de
grand groupes de logiciels (l’interface X, KDE, l’environnement C/C++, …). Son
utilisation est élémentaire.
Les distributions Debian
Les différentes distributions
Les distributions Debian se répartissent en fonction de la stabilité des logiciels :
Stable
Les logiciels de la distribution Stable sont tout à fait testés. S’ils sont modifiés, c’est
principalement pour corriger des problèmes liés à la sécurité.
Frozen
La distribution antérieurement en état « testing » est « gelée » (frozen). Plus aucun ajout
n’est effectué. Après une nouvelle phase de tests, elle deviendra la nouvelle distribution
« stable ».
Testing
Les logiciels en état testing fonctionnent mais sont toujours en phase de test. Aucun
effort particulier lié à la sécurité n’est effectué.
Unstable
Les logiciels en état unstable correspondent aux versions les plus récentes. Après la
correction des principaux bugs, ils peuvent passer dans la zone « Testing ».
Les noms de codes
Chaque distribution Debian (stable, testing, …) se voit attribuer un nom de code :
« potato », « woody », « sid » … Avec le temps, (après moult correctifs) une
distribution évolue de unstable en testing et enfin en stable. Durant ces évolutions, son
nom de code est conservé. Il y a une exception, le nom sid désigne toujours la
distribution unstable courante.
Actuellement la distribution stable a pour nom de code « woody » (Debian version 3).
L’ancienne version, Debian version 2.2, avait pour nom de code « potato ». La
prochaine version, actuellement en état « testing », a pour nom de code « sarge ». La
version en état « unstable » a pour nom de code « sid ».
Les distributions et les licences
Chaque distribution Debian (stable, testing, …) est divisée en plusieurs
composants basés sur le type de licence :
Main
Contient uniquement des logiciels libres, elle constitue la distribution officielle Debian.
Contrib
Les logiciels sont libres mais dépendent des paquetages qui ne le sont pas.
Non-Free
Les logiciels sont soit payant soit possédant des licences très restrictives.
Non-US/Main
Contient uniquement des logiciels libres mais qui ne peuvent être téléchargés à partir
des Etats-Unis comme par exemple des logiciels cryptographiques.
Non-US/Non-Free
Contient des logiciels soit payant soit possédant des licences très restrictives. Ces
logiciels ne peuvent être téléchargé à partir des Etats-Unis.
L’organisation d’une archive Debian
Un site FTP ou un CD-ROM Debian est composé d’une hiérarchie de répertoires qui
reflète les différentes distributions et leurs sections. La racine est le répertoire ./debian,
le sous-répertoire dists contient l’arborescence des distributions et le sous-répertoire
pool contient l’arborescence des paquetages.
Dans le répertoire dists, il y a un sous-répertoire par distribution (stable, testing, …).
Les archives comportent également des répertoires associés aux noms de codes, mais ce
sont en fait des liens symboliques vers les différentes distributions.
Chaque sections (main, contrib, …) est composé notamment des répertoires suivant :
./binary-i386/ Contient les binaires spécifiques d’une plate-forme.
./source/ Contient les sources.
Un répertoire binary* contient essentiellement le fichier Paquetage.gz qui décrit les
paquetages de la distribution ainsi que leur emplacement à partir de la racine de
l’archive.
Les fichiers paquetages eux, sont habituellement dans l’arborescence pool. Ce répertoire
contient un sous-répertoire par distribution (main, …). Ces répertoires contiennent un
répertoire par application. Ces répertoires sont répartis chacun dans un répertoire qui
reprend l’initiale du nom du logiciel, par exemple nessus est dans le répertoire. /n. Enfin
le répertoire associé à une application contient les fichiers paquetages (.deb).
Exemples de chemin :
./debian/dists/stable/main/binary-i386/Packages
./debian/pool/main/a/adduser/adduser*.deb
La commande dpkg
La commande dpkg est l’outil de bas niveau des paquetages Debian. On l’utilisera
exceptionnellement pour installer un paquetage. On lui préfère apt-get. Cette dernière
n’est en fait qu’une interface de haut niveau et fait donc appel à dpkg. On utilise
principalement dpkg pour afficher des informations sur un paquetage (liste des fichiers,
dépendances…).
Exemples
Afficher l’aide en ligne (-h ou --help).
# dpkg –h |more
Installer un paquetage (-i ou--install).
# dpkg –i adduser-3.11-1.deb
L’environnement APT
Introduction
L’environnement APT (Advanced Packaging Tool) offre à l’administrateur une solution
simple à la gestion des paquetages. L’installation d’un paquetage est triviale : les
dépendances et les conflits sont résolues automatiquement. De même, l’emplacement du
paquetage n’a pas être précisé.
Les commandes
apt-get C’est la commande principale de gestion de paquetage.
apt-cdrom Met à jour la liste des paquetages disponibles stockés sur un cdrom.
apt-cache Manipule le cache d’APT.
dselect Commande de haut-niveau interface à apt-get. Malheureusement assez
complexe.
Le fichier sources.list
Le fichier /etc/apt/sources.list contient les emplacements où sont recherché les
paquetages à installer.
Chaque ligne a la forme suivante :
(deb | deb-src ) <URL> <distribution> {<composant>}
<URL> ::= protocole://<hote>/<chemin>
<protocole> ::= cdrom | file | http | ftp | rsync | nfs
<distribution> ::= stable | testing | unstable | frozen
<composant> ::= main | contrib | non-free | non-US/main | non-US/contrib
Exemple de fichier
Dans le fichier suivant, les dernières lignes sont en commentaire. Elles correspondent
aux emplacements des paquetages source.
carapuce:~# more /etc/apt/sources.list
# Stable
deb http://ftp2.de.debian.org/pub/debian stable main contrib non-free
deb http://ftp2.de.debian.org/pub/debian-non-US stable/non-US main
contrib non-free
# Security updates for "stable"
deb http://security.debian.org stable/updates main contrib non-free
# Sources (Uncomment if you want the apt-get source function to work)
#deb-src http://ftp2.de.debian.org/pub/debian stable main contrib non-
free
#deb-src http://ftp2.de.debian.org/pub/debian-non-US stable/non-US
main contrib non-free
Les autres fichiers
/var/lib/dpkg/available
Ce fichier texte contient la liste des paquetages disponibles (installés, …).
/var/lib/dpkg/status
Ce fichier texte, complémentaire du précédent, donne l’état des paquetages disponibles
(installés, …).
/var/lib/apt/lists/
Ce répertoire contient les informations concernant les paquetages récupérables par apt-
get. Pour chaque couple source/distribution il y a deux fichiers *_Packages et
*_Release. Ces fichiers sont créés ou mis à jour par la commande « apt-get update ».
Exemples
Mettre à jour les informations concernant les paquetages disponibles. Cette opération
est un préalable aux actions suivantes (installation, mise à jour, …). Elle doit être
accomplit régulièrement.
# apt-get update
Simuler l’installation d’un paquetage.
# apt-get –s install adduser
Installer (ou mettre à jour) un paquetage.
# apt-get install adduser
Mettre à jour l’ensemble des paquetages.²
# apt-get -u upgrade
Mettre à jour le système par rapport à rapport à la dernière release.
# apt-get dist-upgrade
Visualiser l’emplacement d’un paquetage.
# apt-get --print-uris install adduser
Supprimer un paquetage et ses fichiers de configuration. Les paquetages
dépendants seront également supprimés.
# apt-get --purge remove adduser
Ajouter un cd-rom spécifique à la liste des emplacements de paquetage (au lieu
d’utiliser le réseau).
# apt-cdrom add
Récupère un paquetage (dans /var/cache/apt/archives/) sans l’installer.
# apt-get –d install netselect
Réinstaller un paquetage (endommagé par exemple).
# apt-get --reinstall install netselect
Supprime les éléments présents dans le cache (par exemple les fichiers paquetages
récemment installés).
# apt-get clean
Rechercher des paquetages.
# apt-cache search chess | head
xboard - An X Window System Chess Board.
xarchon - An X11 version of the game Archon.
phalanx - Chess playing program.
gnome-chess - GNOME Chess
3dchess - 3D chess for X11
gnushogi - A program to play shogi, the Japanese version of chess.
scid - Chess database
pgn-extract - a Portable Game Notation (PGN) extractor
cil - Chess In Lisp. A library for cmucl.
eboard - A graphical chessboard program (BETA VERSION)
Visualiser des informations concernant un paquetage.
# apt-cache show gnome-chess
Références
Man
apt-get(8), dselect(8), dpkg(8), apt-get-cache(8), apt-cdrom(8), dpkg-deb(8), deb(5),
sources.list(5).
Internet
Rechercher des paquetages Debian : http://www.debian.org/distrib/packages
APT-HOWTO : http://www.debian.org/doc/manuals/apt-howto/
Liste des mirroirs Debian : http://www.debian.org/mirror/mirrors_full
Manuel expliquant l’utilisation de la commande dselect :
http://www.debian.org/doc/manuals/dselect-beginner/
Manuel expliquant comment créer un dépôt Debian :
http://www.debian.org/doc/manuals/repository-howto/repository-howto.html
Urpmi (Mandrake)
z Rechercher un paquetage: # urpmq ksh
z Installer un paquetage # urpmi pdksh
Yum (YellowDog, Fedora, …)
z Rechercher un paquetage # yum search ksh
z Installer un paquetage # yum install pdksh
Apt4rpm (Connectiva, RedHat, SuSE, …)
z Rechercher un paquetage # apt-cache search ksh
z Installer un paquetage # apt-cache install pdksh
Introduction
L’installation d’un paquetage échoue si ce dernier nécessite la présence d’autres
paquetages. C’est le grave problème de la gestion des dépendances. D’autre part,
toujours lors de l’installation ou de la mise à jour d’un paquetage, il faut d’abord
récupérer les fichiers paquetages avant de les installer. Dans un monde idéal, ces
différentes opérations, recherche des paquetages disponibles, téléchargement et
installation du paquetage ainsi que des paquetages dépendants, devraient s’effectuer de
manière transparente.
Le système APT de la distribution Debian fut le premier à régler ces problèmes.
Maintenant, pour chaque distribution, il existe des systèmes similaires. L’objet du
présent chapitre est de vous les présenter, principalement Urpmi, Yum et Apt4rpm.
L’outil APT ayant déjà été étudié.
Panorama des solutions
Apt Outil de Debian, repose sur les paquetages Debian (.deb).
Urpmi Outil de Mandrake, repose sur le système RPM.
Yum Outil de Yellowdogs, s’applique aux distributions à base de RPM.
Apt4rpm Outil de Connectiva, c’est une adaptation de APT aux RPM.
Up2date Outil de RedHat destiné aux versions commerciales.
Emerge Outil de Gentoo, c’est une adaptation du système Portage de BSD. Les
paquetages sont sous forme de source. L’installation provoque leur
compilation.
Urpmi
L’outil Urpmi de Mandrake est un logiciel libre (GPL) qui facilite l’installation et la
configuration des paquetages RPM principalement en résolvant les dépendances. L’outil
graphique rmpdrake simplifie à l’extrême son utilisation. Les exemples qui suivent
sont basés sur les commandes en mode texte (urpmi, urpme, …). Les paquetages
peuvent être stockés sur cdrom, dans des fichiers ou sur des sites distants accessibles via
FTP ou HTTP.
Un des grands avantage d’urpmi, c’est que, comme APT dans le cas de Debian, c’est un
outil natif. Il est présent dés l’installation et les sites dépôts de paquetages sont gérés
officiellement par Mandrake.
Fichiers
/etc/urpmi/urpmi.cfg Contient la description des dépôts de paquetages.
/var/li/urpli/list.* Liste des paquetages connus d’Urpmi. Il y a une liste par dépôt
(medium dans le jargon Mandrake).
Exemples
Rechercher le nom d’un paquetage
# urpmq ksh
Les paquetages suivants contiennent ksh :
kdegraphics-kuickshow
libkdegraphics0-kuickshow
pdksh
Installer un paquetage (et tous les paquetages dépendants)
# urpmi pdksh
Veuillez insérer le medium nommé « Installation CD 2 (x86) (cdrom2) »
dans le périphérique [/dev/hdc]
Appuyez sur la touche Entrée quand vous êtes prêts...
installation de /var/cache/urpmi/rpms/pdksh-5.2.14-15mdk.i586.rpm
Préparation... ##################################################
1:pdksh ##################################################
Tester une installation (vérifier si elle est possible)
# urpmi --test telnet-server
installation de /var/cache/urpmi/rpms/telnet-server-krb5-1.3-
3mdk.i586.rpm
Préparation... ##################################################
L'installation est possible
Mettre à jour l’ensemble des paquetages installés
Attention : l’opération peut être longue !
# urpmi --auto --auto-select
tout est déjà installé
Supprimer un paquetage (et tous les paquetages dépendants)
# urpme pdksh
désinstallation de pdksh-5.2.14-15mdk.i586
Ajouter un dépôt de paquetage
# urpmi.addmedia updates \
ftp://ftp.free.fr/pub/Distributions_Linux/Mandrake/\
updates/9.2/RPMS with ../base/hdlist.cz
Mettre à jour les informations concernant les paquetages disponibles
# urpmi.update -a
Yum
L’outil Yum (Yellowdog Updater Modified) gère automatiquement les mises à jour des
logiciels des distributions Linux basées sur les RPM. Comme Apt ou Urpmi, il gère les
dépendances des paquetages. Yum est un logiciel libre (GPL) crée par des développeurs
de la distribution Yellowgdog. Il est disponible en standard et prêt à l’emploi dans la
distribution Fedora.
La commande principale est yum. Elle sert à installer, désinstaller, rechercher un
paquetage, etc. A chaque fois que l’on active, elle vérifie si sa base est à jour. Si elle ne
l’est pas, le logiciel télécharge la description des nouveaux paquetages disponibles
Fichiers
/etc/yum.conf Le fichier de configuration de Yum.
/var/cache/yum Les données gérées par Yum.
Exemples
Rechercher un paquetage
# yum search ksh
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in available packages for a providing package
Available package: zsh.i386 0:4.0.7-1.1 from base matches with
Shell semblable à ksh, mais avec des améliorations.
Available package: pdksh.i386 0:5.2.14-23 from base matches with
Clone du domaine public du shell Korn (ksh).
Available package: pdksh.i386 0:5.2.14-23 from base matches with
pdksh
3 results returned
Looking in installed packages for a providing package
No packages found
# yum –C search ksh # la recherche se fait à partir du cache
Installer un paquetage
# yum install pdksh
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: pdksh 5.2.14-23.i386]
Is this ok [y/N]: y
Getting pdksh-5.2.14-23.i386.rpm
pdksh-5.2.14-23.i386.rpm 100% |===================| 180 kB 00:05
Running test transaction:
Test transaction complete, Success!
pdksh 100 % done 1/1
Apt4rpm
Apt4rpm est une adaptation du logiciel APT de la distribution Debian, pour les
distributions basés sur les RPM de RedHat. Ce logiciel libre a été développé par
l’équipe de la distribution Connectiva.
Le fichier sources.list
Le fichier source.list décrit les dépôts de paquetages.
Redhat
L’exemple qui suit est adapté à des distributions RedHat. Les dépôts mentionnés
correspondent aux dernières versions libres de RedHat. Toute les lignes sont en
commentaire sauf celle correspondant à la version installé (9.0).
# more /etc/apt/sources.list
# List of available apt repositories available from ayo.freshrpms.net.
# This file should contain an uncommented default suitable for your
system.
#
# See http://ayo.freshrpms.net/ for a list of other repositories and
mirrors.
#
# $Id: sources.list,v 1.8 2003/04/16 09:59:58 dude Exp $
Nettoyer le cache
# apt-get clean
Mettre à jour l’ensemble des paquetages
# apt-get upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded
XFree86 XFree86-100dpi-fonts XFree86-75dpi-fonts XFree86-Mesa-libGL
XFree86-Mesa-libGLU XFree86-base-fonts XFree86-font-utils XFree86-libs
XFree86-libs-data XFree86-tools XFree86-truetype-fonts XFree86-twm
XFree86-xauth XFree86-xdm XFree86-xfs bash cdda2wav cdrecord coreutils
cups cups-libs cvs eog ethereal evolution foomatic gaim gdm
ghostscript glibc glibc-common glibc-devel gnupg gstreamer gstreamer-
tools gtkhtml hpijs httpd iproute kdebase kdegraphics kdelibs krb5-
devel krb5-libs lftp libpcap mkisofs mutt net-snmp netpbm netpbm-
progs nfs-utils nmap nscd openssh openssh-askpass openssh-askpass-
gnome openssh-clients openssh-server openssl openssl-devel pam_smb pan
perl perl-CPAN printman redhat-config-date redhat-config-network
redhat-config-network-tui redhat-config-printer redhat-config-printer-
gui rhpl rsync samba samba-client samba-common sane-backends sendmail
slocate tcpdump unzip up2date up2date-gnome xinetd xpdf
The following packages have been kept back
grip gstreamer-plugins gthumb
85 packages upgraded, 0 newly installed, 0 removed and 3 not upgraded.
Need to get 174MB of archives.
After unpacking 2649kB of additional disk space will be used.
Do you want to continue? [Y/n]
Références
Man – Urpmi
urpmi(8), urpme(8), urpmi.addmedia(8), urpmi.update(8), urpmi.removemedia(8),
gurpmi(8), urpmf(8), urpmq(8), rpmdrake(8)
Internet – Urpmi
Une introduction à Urpmi :
http://www.linux-mandrake.com/cooker/urpmi.html
Le site officiel de Urpmi :
http://www.urpmi.org/
Howto :
http://myweb.tiscali.co.uk/eggnbacon/docs/urpmi-howto/index.html
Man –Yum
Yum(8), yum-arch(8), yum.conf(5)
Internet –Yum
Howto :
http://www.phy.duke.edu/~rgb/General/yum_HOWTO/yum_HOWTO/
Téléchargement
http://apt.freshrpms.net
Man – apt4rpm
apt-cache(8), apt-get(8), apt.conf(5), sources.list(5)
Internet – apt4rpm
Téléchargement :
http://apt.freshrpms.net
Howto :
http://bazar.conectiva.com.br/~godoy/apt-howto/
Dépôts libres pour Redhat et Fedora :
http://apt-rpm.tuxfamily.org
Objectif :
Apprendre à gérer les paquetages de
Linux
Durée : 25 minutes.
Exercice n°1
Affichez les paquetages installés, combien sont-ils ?
Exercice n°2
Affichez les paquetages du CD-ROM d’installation, combien sont-ils ?
Exercice n°3
Affichez les informations du paquetage dont la commande bash fait partie.
Exercice n°4
Installez le paquetage « gnuchess ». Affichez sa description au préalable !
Exercice n°5
Désinstaller le paquetage gnuchess.
Exercice n°6
Installez le paquetage « gnuchess » en utilisant un outil de type APT (urpmi, yum ou
apt-get).