C06-pkg - COURS LINUX - MTN

Guillaume ASTIER

26/02/16

L’ajout et la suppression de logiciels

Les différentes méthodes

Deux méthodes pour installer un logiciel :


Installation à partir des sources

Installer un logiciel à partir de ses sources

Les sources d’un logiciel sont généralement accompagnées des fichiers ‘configure’ et ‘Makefile.in’. Ces fichiers permettent de faciliter la compilation du logiciel. Les étapes à suivre sont alors les suivantes :



Compilation d’un lgociel depuis les sources

Dans certains cas il est possible que vous vous retrouviez avec une source donc les outils Makefile et/ou configure ne soit pas présent.

Comme vue dans les précédent TP et cours nous allons nous appuyer sur une source en .c car c’est le langage le plus proche de linux et unix.

/* commmentaire : bonjour isen source */

#include<stdio.h>
main()
{
    printf("Bonjour l'isen");
}

Pour compiler ce dernier nous avons besoin d’un compilateur pour trasnformer le code source en fichier binnaire compréhensible par la machine

gcc -Wall -o [NomDuFichierBinaire]  -c [NomFichierSource.c]

L’option Wall permet d’afficher les message de type préventif


Avantages

Inconvénients

Ressources associé et documentation MakeFile [TP associé][2]


Les gestionnaires de paquets

Un paquet (package) est une archive générée avec ‘ar’ qui contient au minimum :

L’extension pour les paquets Debian est *.deb.

Chaque distribution a son système de “paquet” (par exemple RedHat et Suse utilisent RPM).


Installer un programme à partir d’un paquet (Debian)

Debian utilise une convention de nommage pour les fichiers de paquet :

nompaquet_version-révisionDebian_plateforme.deb

 * nompaquet : nom du paquet.
 * version : version originale du logiciel du paquet.
 * révisionDebian : numéro de révision du paquet. 
    Ce numéro est donné par le mainteneur du paquet.
 * plateforme : la plateforme cible du paquet 
    (i386, amd64, alpha, etc).
 * Si le paquet n'est pas dépendant d'une plateforme, 
    il est noté all.
  

Le programme de base pour manipuler un paquetage est ‘dpkg’ :

  dpkg [option] [fichier.deb ...]

-i      : installe les fichiers contenus dans le paquet
-r      : désinstalle le paquet sans supprimer les 
          fichiers de conf
--purge : désinstalle le paquet et les fichiers de conf
-l      : liste de tous les paquets installés
-L      : affiche les fichiers contenus dans le paquet
-S      : affiche le nom du paquet contenant le fichier
  

Avantages

Inconvénients


Installer un programme à partir d’un dépôt (Debian)

Le système APT (Advanced Package Tool) permet une gestion intelligente des paquets (sources, versions, dépendances et conflits).

On définit les sources des paquets dans un fichier de configuration et ‘aptitude’ s’occupe d’aller chercher les paquets sur un CD ou un DVD, ou sur une source réseau.


# cat /etc/apt/sources.list
deb http://mirror.ovh.net/debian/ wheezy main contrib non-free
deb-src http://mirror.ovh.net/debian/ wheezy main contrib non-free
[...]
deb http://security.debian.org/ wheezy/updates main contrib non-free
  

Pour plus d’informations : ‘man sources.list’.


Les paquets debian

Fichiers .deb (paquets binaires)

Moyen puissant et pratique pour distribuer des logiciels aux utilisateurs

Un des deux formats de paquets les plus courants avec RPM

Universel :

* 30 000 paquets binaires dans Debian

* la plupart des logiciels libres sont empaquetés dans Debian !

* 12 portages (architectures), dont 2 non Linux (Hurd et kFreeBSD)

* Utilisé aussi par 120 distributions dérivées de Debian

Le format de paquet Deb

$ ar tv wget_1 .12 -2.1 _i386 . deb
rw -r --r -- 0/0 4 Sep 5 15:43 2010 debian - binary
rw -r --r -- 0/0 2403 Sep 5 15:43 2010 control . tar . gz
rw -r --r -- 0/0 751613 Sep 5 15:43 2010 data . tar . gz

Arborescence

Un paquet Debian est constitué de deux parties notables : un dossier contenant le nom du paquet, ses dépendances, etc. d’un côté, et les fichiers du programme de l’autre. L’arborescence d’un paquet Debian se présente sous cette forme :

dossier_du_paquet/
    DEBIAN/
        control
        preinst
        postinst
        prerm
        postrm
    usr/
    bin/
        votre_programme

Le fichier contôle contient les informations nécessaires à son installation. Il doit comporter les indications ci-dessous :


Ex :

Package: mtnisen
Version: 1.0_alpha
Section: admin
Priority: optional
Architecture: all
Depends: bash,figlet
Maintainer: Doc Brown
Description: Ne sert à rien a part à faire jolie
Homepage: http://isen.gastier.net

Les scripts d’installation suppression

Vous pouvez, si c’est nécessaire (c’est facultatif), ajouter des scripts qui seront exécutés avant/après l’installation/la suppression du paquet. Ils auront pour nom :

N’oubliez pas les droits 755 sur les fichiers


Compilation et installation

Une fois l’arborescance terminée il suffit de construie le paquet avec l’outil dpkg-deb :

sudo dpkg-deb --build nom_du_paquet

Une fois la construction terminée vous avez un paquet du nom de votre répertoire et pour l’installer il faut utiliser :

sudo dpkg -i nom_du_paquet.deb

Gestion des processus

Caractéristiques d’un processus

Linux étant un système multitâche, plusieurs programmes peuvent tourner en même temps.

Lorsque un programme est lancé, un processus est créé. Il s’agit d’une entité active qui possède des caractéristiques (priorité, registres, compteur ordinal, mémoire, etc.). Certaines caractéristiques varient dans le temps.

Le système identifie les processus à l’aide d’un identifiant (PID, Process Identification).

La gestion des processus sous Linux est dite hiérarchisée. Un processus peut lui même créer un autre processus (fork + exec). Il devient donc le processus parent (PPID, Parent Process ID)


Visualiser les processus

$ ps -ef
UID   PID  PPID  C STIME      TTY     TIME    COMMAND  
root    1    0     0 Dec 6      ?       1:02    init   
jean    319 300    0 10:30:30   ?       0:02    vim
olivier 321 319    0 10:30:34   ttyp1   0:02    csh  
olivier 324 321    0 10:32:12   ttyp1   0:00    ps
  

Autres commandes: ‘pstree’, ‘top’, etc.


Commandes de gestion des processus

Les commandes nice et renice permettent de positionner ou de modifier la priorité d’un processus. L’intervalle des valeurs possibles va de -20 (priorité la plus favorable) à 19 (la moins favorable).

# nice -n -20 find / -type f -name "*.sh"

$ renice 20 7643

La commande kill permet d’envoyer un signal à un processus. kill, killall, pgrep/pkill, xkill

kill 456
kill -9 -1
pkill firefox

Gestion de tâches dans une session interactive

Les processus interactifs sont lancés et gérés à partir du terminal de l’utilisateur. Ils peuvent fonctionner en deux modes :

Mode foreground:

    $ sleep 10
    [...]
  

Mode background:

   $ sleep 10 &
   [1] 3384
   $
  

La séquence de touches “ctrl-z” et les commandes jobs, bg, fg, permettent de faire passer un processus d’un mode à l’autre.