Construire un paquet Debian simple

Build

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 
Maintainer: Nico Adminrezo <nico@adminrezo.fr>
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.