Construire un paquet Debian simple
Un logiciel minimaliste
Vous trouverez sur les Internets plein d’articles pour construire un paquet Debian y compris dans la documentation de Debian elle-même.
Le but de mon article est de construire un paquet tout bête quite à aller plus loin par la suite si vous voulez construire des paquets plus élaborés.
Le logiciel que vais construire est Masscan un scanner réseau plus rapide que Nmap (à ne pas confondre avec MassCan la société de massage canin 🐕 !).
Compiler et tester le paquet
Comme indiqué dans la documentation de Masscan, pour compiler la bête, il faudra procéder comme suit :
cd /tmp
sudo apt install git gcc make libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
# On peut "nettoyer" le binaire
strip --strip-unneeded bin/masscan
Et vous trouverez dans le répertoire bin le binaire masscan qui fonctionne d’ores et déjà :
./bin/masscan --help
./bin/masscan -p22 1.2.3.4
En faire un paquet Debian
Pour construire un paquet Debian vous aurez besoin d’un répertoire temporaire avec un sous-répertoire DEBIAN et l’arborescence d’un Linux :
mkdir /tmp/paquet
cd /tmp/paquet
mkdir -p DEBIAN bin usr/share/man/man8/ usr/share/doc/masscan
Placer dans les bons répertoires, le binaire, la documentation, le man :
cp /tmp/masscan/bin/masscan bin/
cp /tmp/masscan/doc/masscan.8 usr/share/man/man8/
# Le man peut être Gzippé :
gzip usr/share/man/man8/masscan.8
cp /tmp/masscan/LICENSE /tmp/masscan/README.md usr/share/doc/masscan/
cp /tmp/masscan/doc/howto-afl.md /tmp/masscan/README.md usr/share/doc/masscan/
Dans le répertoire Debian, le fichier control décrit le paquet
vi DEBIAN/control
Vous pouvez y écrire le genre d’infos suivantes :
Package: Nom du paquet
Version: Version du logiciel plus version du dernier patch qui commence à 1 et que vous incrémentez à chaque mise à jour. Ex: 1.5-2
Section: SECTION (à choisir parmi : admin cli-mono comm database debian-installer debug devel doc editors education electronics embedded fonts games gnome gnu-r gnustep graphics hamradio haskell httpd interpreters introspection java javascript kde kernel libdevel libs lisp localization mail math metapackages misc net news ocaml oldlibs otherosfs perl php python ruby rust science shells sound tasks tex text utils vcs video virtual web x11 xfce zope)
Priority: Si le logiciel n'est pas prioritaire : optional
Architecture: i386, amd64, arm64, armel, armhf, ...
Depends: Liste des dépendances et versions (on peut utiliser ldd masscan pour en avoir une idée)
Installed-Size: Taille en octets
Maintainer: Nom <mail@domain.com>
Description: Description du logiciel
Dans notre cas :
Package: masscan
Version: 2.0-1
Section: net
Priority: optional
Architecture: amd64
Depends: libc6 (>= 2.24)
Installed-Size: 440
Description: This is the fastest Internet port scanner.
It can scan the entire Internet in under 6 minutes,
transmitting 10 million packets per second.
It produces results similar to nmap, the most famous port scanner.
Internally, it operates more like scanrand, unicornscan, and ZMap,
using asynchronous transmission.
Reste à construire le paquet (on le nomme nomdulogiciel_version_architecture.deb) et à l’installer :
cd ..
# Construction :
dpkg -b paquet masscan_2.0-1_amd64.deb
# Installation :
dpkg -i masscan_2.0-1_amd64.deb
Et voilà, vous venez d’installer votre premier paquet Debian. Vous pouvez vérifier que masscan a bien été installé :
whereis masscan
dpkg -L masscan
man masscan
Par la suite nous verrons comment faire un dépôt de paquets Debian pour son organisation.