Administration & Sécurité des Systèmes d’Exploitation Par : Samir CHERIF cherif.samir@gmail.com
Administration & Sécurité des Systèmes d’Exploitation Chapitre 2 Installation et gestion des paquetages Par : Samir CHERIF cherif.samir@gmail.com
Administration & Sécurité des Systèmes d’Exploitation Archivage et Compression
Compiler et installer des programmes à partir des sources Les archives: On appelle archive un ensemble de fichiers qui ont une relation et stockés dans un fichier unique (pour faciliter la copie, par exemple). La commande permettant de rassembler fichiers et sous-répertoires dans une archive est tar. C'est pourquoi il est courant de dire qu'un fichier tar est une archive.
Compiler et installer des programmes à partir des sources La commande tar (=Type ARchive) est une ancienne commande Unix qui permet d'archiver des fichiers Utiliser pour faire des sauvegardes d'un ensemble de fichiers en un seul fichier. Par défaut la taille du fichier .tar créer, est identique a la taille de l’ensemble des fichier source
Compiler et installer des programmes à partir des sources La commande d’archivage tar: tar fonction options fichiers Fonctions courantes: -c: Crée une nouvelle archive. -t: liste les fichiers rassemblés dans un fichier tar. -x: Extrait le contenu d'un fichier tar. Options courantes: -f file: Spécifie le nom du fichier tar.
Compiler et installer des programmes à partir des sources La commande d’archivage tar: tar -cvf monbackup.tar ~ tar -cvf usr.tar /usr tar -tvf monbackup.tar tar -xvf monbackup.tar
Compiler et installer des programmes à partir des sources Principe de compression: L'idée de base est de supprimer les redondances. Donc éliminé les informations inutiles. Exemple Sur un fichier texte, la ligne : " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " (30 lettre X) occupe 30 Octets. Si on remplace la ligne par " 30*X ", nous n'occupons plus sur le disque que 4 Octets. Les algorithmes de compression sont plus complexes dans la réalité mais le principe est le même.
Compiler et installer des programmes à partir des sources Principe de compression: Avantages Contre Inconvénients ??
Compiler et installer des programmes à partir des sources La compression des fichiers : La compression permet d'économiser l'espace de stockage et les besoins inhérents au transfert de fichiers. Il existe de nombreux utilitaires de compression de fichiers: compress, uncompress: Le plus ancien algorithme de compression gzip, gunzip: Le plus utilisé. bzip2, bunzip2: Le meilleur algorithme de compression. Une fois qu'une archive a été créée, elle peut être compressée.
Compiler et installer des programmes à partir des sources Exemple $ gzip -v backup.tar backup.tar: 53.8% -- replaced with backup.tar.gz $ bzip2 -v backup.tar backup.tar: 2.260:1, 3.540 bits/byte, 55.75% saved, 22773760 in, 10 077 846 out.
Compiler et installer des programmes à partir des sources La compression des fichiers : $ ls -l backup.tar -rw-r--r-- 1 rarrigon users 22 773 760 nov 10 11:07 backup.tar $ gzip -v backup.tar backup.tar: 53.8% -- replaced with backup.tar.gz $ ls -l backup.tar.gz -rw-r--r-- 1 rarrigon users 10 507 393 nov 10 11:07 backup.tar.gz $ gunzip backup.tar.gz $ bzip2 -v backup.tar backup.tar: 2.260:1, 3.540 bits/byte, 55.75% saved, 22773760 in, 10 077 846 out.
Compiler et installer des programmes à partir des sources Archivage et compression des fichiers : tar -cvzf backup.tgz ~ Backup du répertoire utilisateur avec gzip tar -cvjf backup.tbz ~ Backup du répertoire utilisateur avec with bzip2 tar -xvzf backup.tgz Décompression et extraction de backup.tgz avec gunzip tar -xvjf backup.tbz Décompression et extraction de backup.tbz avec bunzip2
Administration & Sécurité des Systèmes d’Exploitation Compiler et installer des programmes à partir des sources 1- Les Bibliothèques
Compiler et installer des programmes à partir des sources Les bases de la compilation Il existe des types de langage de programmation : - Les « langages de script », permettent de lancer directement des programmes écrits dans ces langages de programmation. - Les « langages compilés » comme le C ou le C++, exigent au contraire que le programme écrit dans ce langage soit converti, « compilé », en un fichier binaire en langage machine, pour pouvoir être exécuté.
Compiler et installer des programmes à partir des sources Les bases de la compilation La compilation a lieu en principe une fois et ensuite, c'est le fichier binaire qui sera exécuté, et non sa «source» en C, ou C++. La compilation traduit un texte lisible par l'homme, la «source», en un fichier lisible par la machine, le fichier «binaire». La première chose dont on a besoin pour compiler est un compilateur. Sous Linux, le compilateur est gcc pour les programmes écrits en C et g++ pour les programmes écrits en C++.
Compiler et installer des programmes à partir des sources Les bases de la compilation le programmeur n'écrit pas la totalité de ces programmes. Il utilise des bibliothèques qui lui fournissent un ensemble de fonctions déjà disponibles communément utilisées. Le programmeur introduit seulement un lien dans le fichier source, lien qui renvoie à une bibliothèque ou à une fonction de cette bibliothèque. Le binaire compilé aura besoin de cette bibliothèque pour être exécuté.
Gérer les bibliothèques partagées Les Liens: Ce lien peut être statique ou dynamique. Un lien statique signifie que l'exécutable final contiendra les fonctions de la bibliothèque dans ses propres fichiers. Sous Linux, la bibliothèque prend alors l'extension .a Inconvénient: Le programme final est très volumineux et il consomme beaucoup de ressource mémoire lors de chargement.Si plusieurs programmes utilisent la même bibliothèque, donc sa taille va etre multiplier plusieurs fois Un lien dynamique signifie que la bibliothèque devra être chargée en mémoire RAM quand le programme aura besoin d'exécuter les fonctions qu'elle contient. Sous Linux, la bibliothèque prend alors l'extension .so
Gérer les bibliothèques partagées Les répertoires par défaut des bibliothèques standards : /lib: utilisé principalement par les programmes de /bin. /usr/lib: utilisé principalement par les programmes de /usr/bin. Le fichier /etc/ld.so.conf est utilisé par le système pour indiquer les éventuelles autres localisations des bibliothèques.
Gérer les bibliothèques partagées Les répertoires par défaut des bibliothèques standards : Le fichier /etc/ld.so.conf sert donc à configurer les chemins de recherche des bibliothèques partagées. Par défaut, le chargeur rechercher les bibliothèques partagées dans les répertoires /lib et /usr/lib. Pour ajouter un chemin de recherche, on peut ajouter une ligne dans le fichier ld.so.conf
Gérer les bibliothèques partagées Les répertoires par défaut des bibliothèques standards : Le fichier ld.so.conf n'est pas utilisé directement par le chargeur, à la place celui-ci utilise un cache binaire avec les informations des bibliothèques. Ce cache est stocké dans le fichier /etc/ld.so.cache. Pour que les bibliothèques des chemins de ld.so.conf soient intégrés au cache, il faut utiliser la commande ldconfig. Une erreur courante est de modifier ld.so.conf et d'oublier de lancer ldconfig.
Gérer les bibliothèques partagées Dépendance de bibliothèques : Pour afficher la liste des dépendances d'un programme (ou d'une bibliothèque) en termes de bibliothèques partagées, utilisez ldd.
Gérer les bibliothèques partagées Chargeur de liens : Le chargeur de liens ld.so cherche la bibliothèque dont un programme a besoin et la charge en mémoire RAM. L'ordre de recherche de ld.so est : 1- LD_LIBRARY_PATH 2- Le fichier cache /etc/ld.so.cache 3- Les répertoires par défaut /lib et /usr/lib
Gérer les bibliothèques partagées LD_LIBRARY_PATH Vous pouvez tester l'effet d'une nouvelle bibliothèque avant de l'utiliser pour tous vos programmes. Pour ce faire, vous pouvez installer les bibliothèques partagées dans un dossier et puis définissez la variable d'environnement LD_LIBRARY_PATH. Cette variable d'environnement spécifie les répertoires supplémentaires pour la recherche pour les bibliothèques. export LD_LIBRARY_PATH=/usr/local/testlib
Administration & Sécurité des Systèmes d’Exploitation Compiler et installer des programmes à partir des sources 3- Compilation et installation
Compiler et installer des programmes à partir des sources Outils GNU: L'installation d'un programme à partir des sources se résume à la suite de commandes : # ./configure # make # make install La dernière commande demande généralement les droits super-utilisateur (root) pour s'exécuter avec succès.
Compiler et installer des programmes à partir des sources Outils GNU: Sous Linux, toutes les sources peuvent être compilées avec la chaine d'outils standard de GNU. gcc est un compilateur C g++ est un compilateur C++
Compiler et installer des programmes à partir des sources ./configure C'est la première commande que vous devez taper. En pratique elle va faire 2 choses : Tout d'abord vérifier que toutes les dépendances sont présentes. Configurer et écrire un fichier Makefile qui contiendra les ordres de compilation.
Compiler et installer des programmes à partir des sources ./configure Pour la partie configuration, il y a un certain nombre de paramètres à passer à la commande. Pour en avoir la liste : $ ./configure --help Le paramètre le plus utilisé est --prefix= qui spécifie le répertoire dans lequel on veut installer le logiciel. Par défaut c'est /usr/local, ce qui est très bien lorsqu'on est dans une distribution standard.
Compiler et installer des programmes à partir des sources make C'est la 2e commande. Celle ci ne vous demandera rien, elle effectue juste la compilation. Elle sera plus ou moins longue selon la taille du projet. Elle peut s'arrêter en cas de problème de compilation.
Compiler et installer des programmes à partir des sources Make install Cette command est séparée de make, bien que les règles font qu'en général make install effectue le make si besoin. En effet, cette commande doit être tapée en tant que root si des droits spéciaux sont requis pour l'installation du logiciel. c'est le cas si vous installez celui-ci ailleurs que dans votre home.
Compiler et installer des programmes à partir des sources Outils GNU: Beaucoup d'archives contiennent des fichiers d'information (README, INSTALL) qui expliquent comment le programme doit être compilé et installé. Les fichiers Makefile.in et configure.in sont les fichiers de base servant à produire le Makefile final. Le fichier configure est généralement un script qui va explorer le système et produire un Makefile final.
Compiler et installer des programmes à partir des sources Recap
Compiler et installer des programmes à partir des sources Exemple simple de make:
Compiler et installer des programmes à partir des sources Autre Exemple : Etape extraction
Compiler et installer des programmes à partir des sources Autre Exemple : Etape extraction A titre d’exemple Contenu de configure.in
Compiler et installer des programmes à partir des sources A titre d’exemple Contenu de Makefile.in
Compiler et installer des programmes à partir des sources ./configure
Compiler et installer des programmes à partir des sources make L’échec de ./configure empêche la compilation et donc l’installation
Administration & Sécurité des Systèmes d’Exploitation Installation & Gestion des Packages et Programmes sous Linux
Compiler et installer des programmes a partir des paquetage Notion de Paquetage les packages sont faits pour faciliter la vie des administrateurs dans l'administration des logiciels : Installation Mise a jour Désinstallation Gestion des conflits Gestion des dépendances Gestion de la sécurité
Compiler et installer des programmes a partir des paquetage Installation d’un paquetage (Pratique) Récupérer le paquetage Vérifier si il est installé L’installé Le désinstallé
Compiler et installer des programmes a partir des paquetage Composition des paquetage un paquetage = tar.gz + informations Après l’installation : tar.gz -> fichiers disques informations -> base de données
Compiler et installer des programmes a partir des paquetage Les types de Paquetage Deux grande famille : Debian / Redhat RedHat (Fedora …) Paquetage de type RPM Outil d’installation : rpm Debian (Ubuntu …) Paquetage de type Deb Outil d’installation : dpkg
Compiler et installer des programmes a partir des paquetage Outils RedHat Rpm et Yum
Compiler et installer des programmes a partir des paquetage Outils RedHat Rpm
Compiler et installer des programmes a partir des paquetage nommage la convention de nommage des packages rpm est la suivante : nom-version-release.architecture.rpm Exp : xsnow-1.41-1.i386.rpm
Compiler et installer des programmes a partir des paquetage nommage Nom : Représente le nom du package (en général le nom du logiciel) Version : Définie par le ou les développeurs du logiciel Release : Définie par celui qui fabrique le package Architecture : Représente la catégorie de processeur sur laquelle peut être installée le package : ppc : powerpc (mac) sparc : stations sun i* : processeurs Intel
Compiler et installer des programmes a partir des paquetage Portabilité Tous ces packages contiennent des programmes compilés, donc non portables. Ils dépendent également des librairies utilisées lors de la compilation, et sont donc souvent non portables entre distributions différentes.
Compiler et installer des programmes a partir des paquetage Installation de package Commandes rpm –i : installe sans remplacer une version précédente Options -h: afficher une barre de progression -v: installation bavarde (Utile lors d’une erreur) Exemple rpm –ivh xsnow-1.41-1.i386.rpm
Compiler et installer des programmes a partir des paquetage Mise a jour des packages Commandes rpm –U : installe ou remplace un package rpm –F : installe (et remplace) un package seulement si une version était déjà installée Attention gestion des versions : on ne peut mettre a jour qu'avec une version >= a l'ancienne
Compiler et installer des programmes a partir des paquetage Suppression de package Commande rpm –e pour effacer Attention il y a des sécurités : on ne peut supprimer un package si d'autres en dépendent (normal!)
Compiler et installer des programmes a partir des paquetage Sécurité des RPM Commandes rpm –V : pour voir si quelqu'un ou quelque chose n'a pas modifié des fichiers du package (taille, droits, checksum ...)
Compiler et installer des programmes a partir des paquetage Interrogation rpm -q package Afficher les dépendance du paquet rpm -qi package Affiche une page d'information sur le package rpm -ql package Affiche la liste des fichiers du package rpm -qf fichier Affiche le package propriétaire du fichier rpm -qa renvoie la liste de tous les packages installés.
Compiler et installer des programmes a partir des paquetage Probléme Problème de gestion des dépendances en cas de MAJ des versions ou même d’installation? Solution : Les installeurs en ligne
Compiler et installer des programmes a partir des paquetage Outils RedHat Yum
Compiler et installer des programmes a partir des paquetage YUM Outils (sous forme de commandes) qui permet de gérer les packages RPM en ligne. C'est une sur-couche à RPM gérant les dépendances en téléchargeant ce qui est nécessaire. Cherche les paquets sur différentes sources (sites internet …) que l'on appelle des dépôts. Dépôt: regroupe un ensemble de packages. Chaque dépôt doit être ajouté à la configuration de Yum pour être utilisé.
Compiler et installer des programmes a partir des paquetage Configuration de YUM Yum utilise des dépots, qui regroupent un ensemble de logiciel. Chaque dépot doit être ajouté à la configuration de Yum pour être utilisé. Il faut créer un fichier avec le contenu adéquat pour chaque dépôt dans le dossier /etc/yum.repos.d avec un nom de la forme nomdepot.repo. Un RPM peut s'occuper d'ajouter le dépot.
Compiler et installer des programmes a partir des paquetage Configuration de YUM Une fois YUM configuré, il faut mettre à jour tout votre système via la commande (toujours en root) : # yum update Si c'est la première fois que vous mettez votre système à jour sur une installation toute fraîche, lancez la commande # yum update yum Cette commande permet à YUM de se mettre à jour indépendamment des autres paquets.
Compiler et installer des programmes a partir des paquetage Configuration de YUM Pour installer un paquet : # yum install <nom du paquet> Pour supprimer un paquet : # yum remove <nom du paquet> #yum search <nom du paquet> Trouve le paquet sur le depôt rpm
Compiler et installer des programmes a partir des paquetage YUM YUM simplifie bien la vie des utilisateurs, c'est certain. Avec YUM vous disposez toujours des derniers paquets car celui-ci interroge les dépôts à chaque opération. Il existe quelques interfaces graphiques simplifiant encore l'utilisation de YUM : yumex kyum smartpm
Compiler et installer des programmes a partir des paquetage Outils Debian Dpkg Ou Apt
Compiler et installer des programmes a partir des paquetage Outils Debian Dpkg
Compiler et installer des programmes a partir des paquetage dpkg La distribution Debian utilise son propre système de paquetage dont les fichiers sont reconnaissables par l’extention .deb Les systèmes basés sur Debian utilise généralement des utilitaires de gestion de paquets: dpkg (debian package) apt (Advanced Packaging Tool ), dselect … Pour simplifier, apt est considéré comme une surcouche sur dpkg
Compiler et installer des programmes a partir des paquetage dpkg Il a été créé par Ian Jackson en 1993. dpkg est similaire à RPM dans la mesure où il est utilisé pour installer, supprimer et fournir des informations à propos des paquets .deb. Pour l'installation de paquets, dpkg dispose d'une interface graphique (Gdebi).
Compiler et installer des programmes a partir des paquetage Installation # dpkg -i paquet.deb L'option -i, ou –install, installe le ou les paquets indiqués, au format .deb. # dpkg -i -R *.deb L'option -R, ou –recursive , installe tous les paquets se trouvant dans le répertoire de travail et ses sous-répertoires.
Compiler et installer des programmes a partir des paquetage Suppression # dpkg -r nom_du_paquet L'option -r ou –remove supprime le (ou les) paquet(s) indiqué(s) mais pas les fichiers de configuration associés au(x) paquet(s). # dpkg -P nom_du_paquet L'option -P ou –purge permet de supprimer les fichiers de configuration associés en même temps que le paquet indiqué.
Compiler et installer des programmes a partir des paquetage Lister / Info Quel package à installé le fichier fichier.conf ? : # dpkg -S fichier.conf Où sont les fichiers du package PAK ? : # dpkg -L PAK Lister tous les paquetages installés : # dpkg –l Lancer l'outil de configuration de PAK : # dpkg -reconfigure PAK
Compiler et installer des programmes a partir des paquetage Outils Debian apt
Compiler et installer des programmes a partir des paquetage APT Advanced Packaging Tool ou APT est un gestionnaire de paquets utilisé par Debian et ses dérivés. APT simplifie : l'installation la mise à jour la désinstallation la gestion des dépendances
Compiler et installer des programmes a partir des paquetage Les sources d’APT APT interroge les serveurs déclarés dans le fichier /etc/apt/sources.list Prend en charge directement le téléchargement et l'installation des dépendances. Plusieurs interfaces graphiques à APT sont disponibles: Aptitude, Synaptic ... Le fichier /etc/apt/sources.list permet de décrire de façon permanente les sources de paquets (cdrom, url ..) à télécharger
Compiler et installer des programmes a partir des paquetage apt-get apt-get est le programme de gestion de paquets en mode invite de commande fourni avec le paquet apt de Debian. Par exemple, la sortie suivante pourrait être obtenue en installant le logiciel de messagerie instantanée Pidgin : # apt-get install pidgin Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : libpurple-bin libpurple0 pidgin-data Paquets suggérés : tcl8.4 tk8.4 evolution-data-server Les NOUVEAUX paquets suivants seront installés : libpurple-bin libpurple0 pidgin pidgin-data 0 mis à jour, 4 nouvellement installés, 0 à enlever et 1 non mis à jour. Il est nécessaire de prendre 9 988ko dans les archives. Après cette opération, 30,5Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ?
Compiler et installer des programmes a partir des paquetage apt-get (suite) Réception de : 1 http://ftp.fr.debian.org sid/main pidgin-data 2.6.1-2 [7 227kB] Réception de : 2 http://ftp.fr.debian.org sid/main libpurple0 2.6.1-2 [1 908kB] Réception de : 3 http://ftp.fr.debian.org sid/main libpurple-bin 2.6.1-2 [96,1kB] Réception de : 4 http://ftp.fr.debian.org sid/main pidgin 2.6.1-2 [757kB] 9 988ko réceptionnés en 5s (1 680ko/s) Sélection du paquet pidgin-data précédemment désélectionné. (Lecture de la base de données... 95642 fichiers et répertoires déjà installés.) Dépaquetage de pidgin-data (à partir de .../pidgin-data_2.6.1-2_all.deb) ... Sélection du paquet libpurple0 précédemment désélectionné. Dépaquetage de libpurple0 (à partir de .../libpurple0_2.6.1-2_amd64.deb) ... Sélection du paquet libpurple-bin précédemment désélectionné. Dépaquetage de libpurple-bin (à partir de .../libpurple-bin_2.6.1-2_all.deb) ... Sélection du paquet pidgin précédemment désélectionné. Dépaquetage de pidgin (à partir de .../pidgin_2.6.1-2_amd64.deb) ... Traitement des actions différées (« triggers ») pour « hicolor-icon-theme »... Traitement des actions différées (« triggers ») pour « man-db »... Traitement des actions différées (« triggers ») pour « menu »... Traitement des actions différées (« triggers ») pour « desktop-file-utils »... Paramétrage de pidgin-data (2.6.1-2) ... Paramétrage de libpurple0 (2.6.1-2) ... Paramétrage de libpurple-bin (2.6.1-2) ... Paramétrage de pidgin (2.6.1-2) ...
Compiler et installer des programmes a partir des paquetage APT Commande apt-get update Construit la base en interrogeant chacune des sources, conformément aux choix des sources présentes dans sources.list Met à jour la liste des paquets à partir des sources du fichier Remarque: Il faut remettre à jour cette base régulièrement afin de la synchroniser avec l'évolution des paquets sur les sites-sources apt-get upgrade Met à jour tous les paquets installés (ayant des versions récentes) Apt-get dist-upgrade Met à jour toute la distribution apt-get install <paquet> Installe un paquet apt-get remove <paquet> Désinstalle le paquet spécifié
Compiler et installer des programmes Convertion de packetages alien Commande de conversion entre différents formats de paquet, notamment entre le RPM le format deb de Debian Commande alien --to-rpm <paquet.deb> Convertit un paquet .DEB en .RPM alien --to-deb <paquet.rpm> Convertit un paquet .RPM en .DEB alien --to-tgz <paquet.rpm> Convertit un paquet .RPM en .TGZ