Cet article décrit un moyen simple de créer un paquet debian fait maison et de l'inclure dans un dépôt de paquets local. Bien que nous puissions utiliser un paquet Debian/Ubuntu existant, nous allons repartir de zéro en créant et empaquetant notre propre application triviale. Une fois notre package prêt, nous l'inclurons dans notre référentiel de packages local. Cet article illustre une approche très simpliste, mais il peut servir de modèle dans de nombreux scénarios différents.
Dans ce didacticiel, vous apprendrez :
- Comment créer un paquet debian trivial
- Comment créer un dépôt Debian local
- Comment ajouter le référentiel à la liste des sources de logiciels
Configuration logicielle requise et conventions utilisées
Catégorie | Exigences, conventions ou version du logiciel utilisée |
---|---|
Système | Debian |
Logiciel | Le package essentiel à la construction |
Autre | Un serveur Web Apache fonctionnel et des autorisations root |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Créer un exécutable binaire
La première chose que nous devons faire est de créer un programme C++ simple, de le compiler et de le tester. Si vous souhaitez plutôt écrire un programme C simple, consultez notre didacticiel complet sur la programmation C. Notre programme ne fera rien d'autre que d'afficher « linuxconfig.org » à l'écran. Voici le code :
#include <iostream>
int main() {
using namespace std;
cout << "linuxconfig.org\n";
}
Enregistrez le code ci-dessus sous linuxconfig.cc
. Pour compiler le programme, nous avons besoin du g++
compilateur, qui est fourni par le paquet build-essential. Nous pouvons l'installer en exécutant :
$ sudo apt-get install build-essential
Pour compiler le code, nous utilisons la commande Linux suivante :
$ g++ linuxconfig.cc -o linuxconfig $ ./linuxconfig linuxconfig.org
Tout s'annonce bien. À ce stade, nous devrions avoir un exécutable appelé "linuxconfig" qui imprime une chaîne à l'écran.
Créer un paquet Debian
Maintenant que notre petit programme est prêt sous la forme d'un binaire exécutable, nous pouvons créer un paquet debian. Pour ce faire, nous utilisons le dpkg-deb
outil. Tout d'abord, nous devons créer la structure du paquet debian. Les seuls fichiers requis pour construire un paquet debian sont :
- DEBIAN/contrôle
- les fichiers personnalisés doivent faire partie du package (non requis)
Créez d'abord un répertoire appelé linuxconfig
. Ce répertoire contiendra tous les fichiers de package nécessaires :
$ mkdir linuxconfig
Créez ensuite le répertoire DEBIAN et le fichier de contrôle :
$ mkdir linuxconfig/DEBIAN $ vi linuxconfig/DEBIAN/control
Dans le fichier de contrôle, nous entrons les informations suivantes :
Package: linuxconfig Version: 1.0 Section: custom Priority: optional Architecture: all Essential: no Installed-Size: 1024 Maintainer: linuxconfig.org Description: Print linuxconfig.org on the screen
Génial, la seule chose qui manque est notre programme linuxconfig. Dans linuxconfig
répertoire, nous créons une arborescence de répertoires qui représente le chemin d'installation de notre programme dans le système, et y copions l'
exécutable :
$ mkdir -p linuxconfig/usr/bin/ $ cp /path/to/linuxconfig linuxconfig/usr/bin/
À ce stade, nous sommes prêts à créer le package :
$ dpkg-deb --build linuxconfig dpkg-deb: building package `linuxconfig' in `linuxconfig.deb'. $ ls linuxconfig linuxconfig.deb
Vous pouvez modifier le nom du package afin qu'il inclue la version du programme et l'architecture du package. Par exemple :
$ mv linuxconfig.deb linuxconfig-1.0_amd64.deb
Terminé ! Notre colis est prêt ! (REMARQUE :ceci n'est qu'un exemple, la création de packages officiels nécessite plus de travail).
Configuration d'un référentiel de packages local
Pour créer un référentiel de packages local, nous avons besoin d'un fichier working. Dans ce cas, nous supposerons l'utilisation de Apache
avec les paramètres par défaut. Pour installer le serveur Web Apache, il suffit de lancer :
$ sudo apt-get install apache2
Une fois installé, pour vérifier que le serveur Web fonctionne, nous pouvons accéder à l'adresse IP de la machine (ou à "http://localhost", si vous exécutez un navigateur sur la machine elle-même) qui, dans notre cas, est http:// 10.1.1.4. On devrait voir le
fameux Ça marche ! message.
Le logiciel du serveur Web est en cours d'exécution, mais aucun contenu n'a encore été ajouté. Le DocumentRoot
du VirtualHost
Apache par défaut , est /var/www/html
:c'est ici que nous allons créer notre dépôt.
Créons le répertoire "debian" dans /var/www/html
et copiez le package linuxconfig-1.0_amd64.deb à l'intérieur :
$ sudo mkdir /var/www/html/debian $ sudo cp /path/to/linuxconfig-1.0_amd64.deb /var/www/html/debian/
L'étape suivante consiste en la génération d'une liste de paquets. Passons à debian
et utilisez le répertoire dpkg-scanpackages
utilitaire pour accomplir la tâche. Vous devrez peut-être installer le dpkg-dev
package au cas où dpkg-scanpackages
commande manquante :
$ dpkg-scanpackages . | gzip -c9 > Packages.gz dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
Notre dépôt local est maintenant prêt.
Ajout du référentiel aux sources logicielles
À ce stade, pour pouvoir installer notre package à partir du référentiel local que nous avons créé, nous devons modifier le /etc/apt/sources.list
fichier, ajoutez l'entrée relative à celui-ci (modifiez l'adresse IP pour refléter celle de votre machine), et
synchronisez les référentiels :
echo "deb [trusted=yes] http://10.1.1.4/debian ./" | tee -a /etc/apt/sources.list > /dev/null
Assurez-vous d'ajouter le [trusted=yes]
ci-dessus pour éviter le message d'erreur suivant :
Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default.
Synchroniser les référentiels :
$ sudo apt-get update Ign:1 http://10.1.1.4/debian ./ InRelease Ign:2 http://10.1.1.4/debian ./ Release Ign:3 http://10.1.1.4/debian ./ Packages Ign:3 http://10.1.1.4/debian ./ Packages Ign:3 http://10.1.1.4/debian ./ Packages Get:3 http://10.1.1.4/debian ./ Packages [303 B]
Pour installer notre package, nous pouvons maintenant utiliser l'outil apt-get :
$ sudo apt-get install linuxconfig Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: linuxconfig 0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded. Need to get 3174 B of archives. After this operation, 1,049 kB of additional disk space will be used. WARNING: The following packages cannot be authenticated! linuxconfig Install these packages without verification [y/N]? y
Exécuter :
$ linuxconfig linuxconfig.org
Pour supprimer le package du système, exécutez simplement :
$ sudo apt-get remove linuxconfig Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linuxconfig 0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded. After this operation, 1049 kB disk space will be freed. Do you want to continue? [Y/n] y