Moyen facile de créer un package Debian et un référentiel de packages locaux

Moyen facile de créer un package Debian et un référentiel de packages locaux

Cet article décrit un moyen simple de créer un package Debian fait maison et de l'inclure dans un référentiel de packages locaux. Bien que nous puissions utiliser un package Debian / Ubuntu existant, nous commencerons de zéro en créant et en emballant notre propre application triviale. Une fois notre colis prêt, nous l'inclurons dans notre référentiel de packages locaux. Cet article illustre une approche très simpliste, mais elle peut servir de modèle dans de nombreux scénarios différents.

Dans ce tutoriel, vous apprendrez:

  • Comment créer un package debian trivial
  • Comment créer un référentiel debian local
  • Comment ajouter le référentiel à la liste des sources de logiciels


Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Debian
Logiciel Le package essentiel
Autre Un serveur Web Apache et des autorisations root en activité
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Création d'un exécutable binaire

La première chose que nous devons faire est de créer un simple programme C ++, de le compiler et de le tester. Dans le cas où vous souhaitez rédiger un programme C simple, visitez notre tutoriel complet sur la programmation C. Notre programme ne fera rien d'autre simplement imprimer «LinuxConfig.org ”sur l'écran. Voici le code:

#include int main () Utilisation de namespace std; couter << "linuxconfig.org\n"; 
Copie

Enregistrez le code ci-dessus comme linuxconfig.CC. Pour compiler le programme, nous avons besoin du g++ compilateur, qui est fourni par le package essentiel à l'essentiel. Nous pouvons l'installer en fonctionnant:

$ sudo apt-get install build-essentiel

Pour compiler le code, nous utilisons la commande Linux suivante:

$ g ++ linuxconfig.cc -o linuxconfig $ ./ LinuxConfig LinuxConfig.org

Tout a l'air bien. À ce stade, nous devrions avoir un exécutable appelé «LinuxConfig» qui imprime une chaîne à l'écran.



Créer un package Debian

Maintenant que nous avons notre petit programme prêt sous la forme d'un binaire exécutable, nous pouvons créer un package Debian. Pour ce faire, nous utilisons le dpkg-deb outil. Tout d'abord, nous devons créer la structure du package Debian. Les seuls fichiers requis pour créer un package Debian sont:

  • Debian / Control
  • Fichiers personnalisés pour 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

Ensuite, créez le répertoire Debian et le fichier de contrôle:

$ Mkdir LinuxConfig / Debian $ VI LinuxConfig / Debian / Control

À l'intérieur du fichier de contrôle, nous entrons les informations suivantes:

Package: Version LinuxConfig: 1.0 Section: Priorité personnalisée: Architecture facultative: Tout essentiel: pas de taille installée: 1024 HEnteller: LinuxConfig.Description de l'organisation: imprimer LinuxConfig.org sur l'écran

Super, la seule chose qui manque est notre programme LinuxConfig. À l'intérieur de linuxconfig Répertoire Nous créons une arborescence d'annuaire qui représente le chemin d'accès où notre programme sera installé dans le système et copier le
exécutable dedans:

$ 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: Package de construction 'LinuxConfig' dans 'LinuxConfig.deb '. $ ls linuxconfig LinuxConfig.deb

Vous voudrez peut-être modifier le nom du package afin qu'il comprenne la version du programme et l'architecture du package. Par exemple:

$ mv linuxconfig.Deb LinuxConfig-1.0_amd64.deb

Terminé ! Notre forfait est prêt ! (Remarque: ce 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 travail. Dans ce cas, nous assumerons l'utilisation de Apache avec paramètres par défaut. Pour installer Apache Webserver, tout ce que nous devons faire est d'exécuter:

$ sudo apt-get install apache2


Une fois installé, pour vérifier que le serveur Web fonctionne, nous pouvons naviguer vers l'adresse IP de la machine (ou vers 'http: // localhost', si l'exécution d'un navigateur sur la machine elle-même) qui, dans notre cas, est http: // dix.1.1.4. Nous devrions voir le
célèbre Ça marche! message.

Le logiciel du serveur Web est en cours d'exécution, mais aucun contenu n'a été ajouté, pourtant. Le Document de document de l'Apache par défaut VirtualHost, est / var / www / html: c'est là que nous créerons notre référentiel.

Créons le répertoire «Debian» à l'intérieur / var / www / html et copier le linuxconfig-1.0_amd64.Package Deb à l'intérieur:

$ sudo mkdir / var / www / html / debian $ sudo cp / path / to / linuxconfig-1.0_amd64.deb / var / www / html / debian /

La prochaine étape consiste en la génération d'une liste de packages. Nous entrons dans le Debian répertoire, et utilisez le dpkg-scarnets Utilité pour accomplir la tâche. Vous devrez peut-être installer le dpkg-dev package au cas où le dpkg-scarnets La commande est manquante:

$ DPKG-ScanPackages . | GZIP -C9> Packages.GZ DPKG-SCANPACKAGES: Info: a écrit 1 entrées au fichier de packages de sortie.

Notre référentiel 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.liste fichier, ajoutez le relatif de l'entrée (modifiez l'adresse IP pour refléter celle de votre machine) et
synchroniser les référentiels:

echo "Deb [truded = oui] http: // 10.1.1.4 / Debian ./ "| Tee -a / etc / apt / sources.liste> / dev / null 

Assurez-vous d'ajouter ce qui précède [Trust = Oui] Pour éviter le message d'erreur suivant:

 Libération 'n'a pas de fichier de version. N: La mise à jour d'un tel référentiel ne peut pas être effectuée en toute sécurité et est donc désactivée par défaut. 

Synchroniser les référentiels:

$ sudo apt-get upding ign: 1 http: // 10.1.1.4 / Debian ./ Inrelease ign: 2 http: // 10.1.1.4 / Debian ./ Libérer 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 désormais utiliser l'outil APT-Get:

$ sudo apt-get install linuxconfig linter les listes de packages… FAIT BUILDING DÉFÉRENCE LECTURE DE L'ARBRE INFORMATION D'ÉTAT… FAIT Les nouveaux packages suivants seront installés: LinuxConfig 0 a mis à niveau, 1 nouvellement installé, 0 pour supprimer et 8 non mis à niveau. Besoin d'obtenir 3174 B des archives. Après cette opération, 1 049 kb d'espace disque supplémentaire seront utilisés. AVERTISSEMENT: les packages suivants ne peuvent pas être authentifiés! LinuxConfig Installez ces packages sans vérification [O / N]? y

Exécuter:

$ linuxconfig LinuxConfig.org

Pour supprimer le package du système, il suffit d'exécuter:

$ sudo apt-get retirez les listes de packages de lecture LinuxConfig… FAIT BUILDING DÉFÉRENCE DES INFORMATIONS D'ÉTAT… FAIT Les packages suivants seront supprimés: LinuxConfig 0 a mis à niveau, 0 nouvellement installé, 1 à supprimer et 3 non mis à niveau. Après cette opération, l'espace disque de 1049 kb sera libéré. Voulez-vous continuer? [O / N] Y

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Masterring Bash Script Loops
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Comment travailler avec l'API WooCommerce REST avec Python
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment créer des fichiers temporaires à l'aide de mktemp sur Linux
  • Comment reconstruire un package à l'aide du système de construction Arch Linux
  • Comment créer une application Flatpak à partir de zéro
  • Comment travailler avec les groupes de packages DNF