GNU/Linux >> Tutoriels Linux >  >> Debian

Un moyen facile de créer un paquet Debian et un référentiel de paquets local

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

Configuration logicielle requise et conventions de ligne de commande Linux
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

Debian
  1. Comment créer un référentiel Red Hat local

  2. Comment créer un référentiel YUM local sur CentOS 7 / RHEL 7 à l'aide d'un DVD

  3. Debian – Créer un paquet .deb avec uniquement des dépendances ?

  4. Debian - Comment connaître le référentiel source d'un paquet dans Debian ?

  5. Comment activer les tests et le référentiel instable sur Debian

Comment ajouter un référentiel à Debian

Un moyen simple de trouver des opportunités de contribution aux paquets Debian

Comment créer et exécuter un script shell dans Debian 10

Comment créer et éditer des fichiers PDF dans Debian 10

Vérifier les dépendances d'un paquet dans Ubuntu 20.04 et Debian 10

Un moyen facile de créer un raccourci sur le bureau ?