C06-pkg - TP LINUX - MTN

Guillaume ASTIER

26/02/16

De la source au binnaire

Récupérez le code source ci dessous dans un fichier que vous nomerez bjr_isen.c

/* Hello World program */

#include<stdio.h>

main()
{
    printf("Bonjour a tous");

}

Trouvez la commande qui permet de transformer le code source en C en binnaire.

Des sources à l’installation


    $ ./configure

Grâce au fichier Makefile généré par le script configure :

    $ make
    # make install

Gestion des paquets avec dpkg

Analyse d’un packet .deb

Cette analyse sera menée à l’aide du paquet gpm qui permet la prise en compte de la souris en mode console.**



Nous allons vérifier cette hypothèse en analysant le contenu du paquet.

Un paquet Debian est une archive réalisée avec ar (un tar minimaliste).

Grâce à l’option ‘x’ de cette commande, extraire le contenu du fichier gpm_1.20.4-6_i386.deb:

# ar xv gpm_1.20.4-6_i386.deb
    data.tar.gz
    control.tar.gz
    debian-binary



Creation d’un packet

CREATION D un DEPOT

Créer un différentiel Debian trivial

L’objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)… est de mettre à disposition vos paquets simplement

Introduction

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.


Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture supportées ; apt récupérera automatiquement le bon paquet pour la machine de l’utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels.

Installation des dépendances

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net… ou Utiliser python (plus bas …)

Préparation des répertoires

En root crée l’arboresence ci-dessous sur la machine server-isenXX

/home/
     /www/
         /debian/
                /binary
                /source

Modifiez les droits pour que les fichiers appartienent à www-data

Remplissage du référentiel

Copiez “vos” deb perso dans /home/www/debian/binary, puis placez vous dans /home/www/debian/

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
     isen

 1 entrée écrite dans le fichier Packages.

Server Web “simple”

Pour lancer un serveur web rapidement sans installer un paquet complet (ex : apache nginx. …) vous pouvez utiliser python :

apt install python

Placez vous dans /home/www/ et lancez le module web en python :

cd /home/www/
python -m SimpleHTTPServer 80

Test sur une machine distante

 # vim /etc/apt/sources.list.d/isen.list

 # Référentiel ISEN
 deb [trusted=yes] http://[IP ou NOM DE VOTRE MACHINE]/debian binary/
 #deb-src http://[IP ou NOM DE VOTRE MACHINE]/debian source/

 # apt-get update

ce qui devrait donner …:

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://[IP ou NOM DE VOTRE MACHINE]/debian/ binary/ Packages
         100 /var/lib/dpkg/status

Fichier preferences

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)


 $ vim Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: isen@isen.mtn
 Label: Repertoire de paquets persos
 Architecture: i386, amd64, all

Et le fichier /etc/apt/preferences des “clients” :

 Package: *
 Pin: origin [IP ou NOM DE VOTRE MACHINE]
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://[IP ou NOM DE VOTRE MACHINE]/debian/ binary/ Packages
     release o=[IP ou NOM DE VOTRE MACHINE],l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64, all
     origin [IP ou NOM DE VOTRE MACHINE]