26/02/16
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.
Téléchargez les sources de la toute dernière version de Nmap.
Avec la commande tar :
Lancer le script configure
vérifie la présence sur votre machine des dépendances nécessaires pour compiler le programme
$ ./configure
Grâce au fichier Makefile généré par le script configure :
$ make
# make install
Lister l’ensemble des paquets installés sur la machine.
Afficher la version du paquet sudo installé.
Lister les fichiers installés par ce paquet.
De quel paquet est issu le binaire /bin/busybox ?
Supprimer le paquet correspondant en effaçant les fichiers de configuration.
Cette analyse sera menée à l’aide du paquet gpm qui permet la prise en compte de la souris en mode console.**
Avec la commande wget, récupérer le paquet gpm.
Lister les fichiers qui seront installés par ce paquet.
Installer ce paquet.
En plus d’être un lien symbolique, quelle est la nature du fichier /etc/rc2.d/S02gpm (que permet-il) ?
Ce fichier a été installé par le paquet gpm mais était-il listé quand vous avez répondu à la question 2.2 ?
Dans le manuel ‘dpkg(1)’, regarder les étapes réalisées par l’option ‘-i’ (‘–install’) lors de l’installation d’un paquet (au début de la rubrique ACTIONS). A votre avis, durant quelle étape a été créé ce fichier ?
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
Le fichier texte debian-binary contient seulement la version du format du paquet tandis que les deux autres fichiers vont être analysés.
Sans extraire les fichiers, lister le contenu de l’archive compressée data.tar.gz. Comparer avec la question 2.2. Qu’en déduisez-vous ?
Extraire les fichiers contenus dans l’archive compressée control.tar.gz.
Le fichier md5sums contient les empreintes MD5 des fichiers contenus dans l’archive data.tar.gz. A quoi peut servir un tel fichier ?
Le fichier “control” contient de multiples informations sur le paquet comme par exemple son nom, sa version, ses dépendances, sa description, etc.
Comme vous l’avez vu précédemment dans ‘dpkg(1)’, les scripts postinst, prerm, postrm sont des scripts qui sont lancés respectivement pendant la phase d’installation du paquet (juste après l’installation des fichiers) et pendant la désinstallation du paquet (avant et après la suppression des fichiers).
Pour finir, démarrer le service gpm.
A l’aide du cours et du TP en cours, utilisez le fichier compilé en 1 en le re-nomant “salut” et l’ajoutant à un paquet qui se nomera isen.
Faite l’installation et vérifiez la présence du nouveau binnaire
Faite l’opération inverse.
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
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.
# 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 …)
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
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.
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
# 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
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]