Maison  >  Article  >  tutoriels informatiques  >  Il est si simple de créer un package deb sous Linux : analyse de la composition interne et des principes d'utilisation du fichier du package d'installation deb d'Ubuntu

Il est si simple de créer un package deb sous Linux : analyse de la composition interne et des principes d'utilisation du fichier du package d'installation deb d'Ubuntu

WBOY
WBOYavant
2024-02-19 13:21:15827parcourir

Il est si simple de créer un package deb sous Linux : analyse de la composition interne et des principes dutilisation du fichier du package dinstallation deb dUbuntu

Le fichier Deb est un fichier d'archive utilisé pour distribuer et installer Linux Debian et ses programmes de distribution dérivés, contenant généralement des données d'application. Ils sont utiles pour gérer les dépendances, l’intégration du bureau et exécuter des scripts de pré et post-installation. Un autre format de package similaire au format Deb est le fichier RPM couramment utilisé dans les distributions de la série Fedora.

Cet article montre comment créer un package deb simple à travers des exemples, explique le rôle de chaque fichier dans le package deb et comment le prendre en compte et le maintenir après l'installation.

analyse du paquet deb

deb est un format d'archive AR Unix courant qui contient des fichiers d'application et d'autres utilitaires. Le composant clé est le fichier de contrôle (control), qui contient des informations importantes sur le package deb et le programme d'installation.

  • En interne, le package deb contient une collection de fichiers qui simulent la structure de répertoires typique du système de fichiers Linux, tels que /usr, /usr/bin, /opt, etc. Lors de l'installation, les fichiers placés dans l'un de ces répertoires sont copiés au même emplacement dans le système de fichiers réel. Par exemple, les fichiers binaires tels que /usr/bin/binaryfile dans le package seront installés dans le fichier /usr/bin/binaryfile du système.
  • En externe, tous les fichiers du package deb suivent une convention de dénomination spécifique :
_-_.deb

Supposons que vous souhaitiez publier un programme appelé mynano, version 1.0, conçu pour les processeurs 64 bits (AMD64). Le nom de votre fichier deb ressemblera à mynano_1.0-0_amd64.deb

Créer un package deb

Nous sommes prêts à générer le package. Veuillez vous assurer que l'outil dpkg-deb (fourni par le package dpkg) est installé sur votre système. Le package deb final sera généré ultérieurement à l’aide de dpkg-deb.

(1) Créez un répertoire de travail pour stocker les fichiers du package et nommez-les selon la convention de dénomination précédente.

mkdir mynano_1.0-1_amd64/

(2) Créez la structure interne et placez les fichiers du programme là où ils doivent être installés sur le système cible. Supposons que vous souhaitiez installer l'exécutable sur : /usr/bin/

Créez d'abord le répertoire :

mkdir -p mynano_1.0-1_amd64/usr/bin/

L'indicateur -p de la commande mkdir créera des répertoires imbriqués et les créera automatiquement si l'un d'entre eux n'existe pas. Copiez ensuite le fichier exécutable dedans :

# 假设你开发的程序可执行文件为 ~/YourProjects/mynano/src/targets/release/mynano
cp ~/YourProjects/mynano/src/targets/release/mynanomynano_1.0-1_amd64/usr/bin/

(3) Créez le contrôle de fichier. Ce fichier se trouve dans le répertoire DEBIAN (notez que le nom du répertoire est en majuscules)

Créez d'abord le dossier : DEBIAN

mkdir mynano_1.0-1_amd64/DEBIAN

Créez ensuite un fichier vide : control

touch mynano_1.0-1_amd64/DEBIAN/control

Remplissez le contenu du fichier de contrôle :

Package: mynano
Version: 1.0
Architecture: amd64
Maintainer: linuxlibs 
Description: 基于nano的自定义编辑器
Depends: nano (>= 5.0)

Parmi eux :

  • Package – nom du programme ;
  • Version– version du programme ;
  • Architecture—Architecture cible ;
  • Maintainer – Nom et adresse e-mail de la personne responsable de la maintenance du colis ;
  • Description – Une brève description du programme.
  • Dépend – Autres forfaits dont dépend ce forfait.

Le fichier peut contenir d'autres champs utiles, tels que Depends pointant vers la liste des dépendances du package deb. Ensuite, si vous utilisez la commande apt pour installer le package deb, la version nano>=5.0 du package logiciel sera installée en premier, puis mynano sera installé.

(5) La dernière étape : construisez le package deb. Appelez dpkg-deb comme suit :

dpkg-deb --build --root-owner-group 

Dans notre exemple :

dpkg-deb --build --root-owner-group 

L'indicateur –root-owner-group ici fait que tout le contenu du package deb appartient à l'utilisateur root, ce qui est l'approche standard. S'il n'y a pas un tel indicateur, le propriétaire de tous les fichiers et dossiers est votre utilisateur actuel. Cependant, étant donné que le système sur lequel le package deb sera installé n'a pas nécessairement un compte portant le même nom que le vôtre, utilisez –root-owner. -groupe plus raisonnable.

La commande ci-dessus générera un fichier .deb à côté du répertoire de travail ou imprimera des erreurs s'il y a des erreurs ou des éléments manquants dans le package. Si l'opération réussit, vous pouvez distribuer le package deb généré à d'autres.

(6) Utilisez le package deb pour l'installer dans le système : vous pouvez voir que lors de l'installation du package deb que nous avons créé via la méthode apt, la dépendance sera automatiquement installée : le package logiciel nano

# apt install ./mynano_1.0-1_amd64.deb
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
注意,选中 'mynano' 而非 './mynano_1.0-1_amd64.deb'
将会同时安装下列软件:
nano
建议安装:
hunspell
下列【新】软件包将被安装:
mynano nano
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 79 个软件包未被升级。
需要下载 280 kB/1,135 kB 的归档。
解压缩后会消耗 881 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 /root/my-nano-editor-src/mynano_1.0-1_amd64.deb mynano amd64 1.0.0 [855 kB]
获取:2 https://mirrors.ustc.edu.cn/ubuntu jammy/main amd64 nano amd64 6.2-1 [280 kB]
已下载 280 kB,耗时 1秒 (422 kB/s)
正在选中未选择的软件包 nano。
(正在读取数据库 ... 系统当前共安装有 231799 个文件和目录。)
准备解压 .../archives/nano_6.2-1_amd64.deb...
正在解压 nano (6.2-1) ...
正在选中未选择的软件包 mynano。
准备解压 .../mynano_1.0-1_amd64.deb...
正在解压 mynano (1.0.0) ...
正在设置 nano (6.2-1) ...
update-alternatives: 使用 /bin/nano 来在自动模式中提供 /usr/bin/editor (editor)
update-alternatives: 使用 /bin/nano 来在自动模式中提供 /usr/bin/pico (pico)
正在设置 mynano (1.0.0) ...
正在处理用于 install-info (6.8-4build1) 的触发器 ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
Scanning processes...
Scanning processor microcode...
Scanning linux images...

(7) [Facultatif] Désinstallez le logiciel installé mynano :

# apt remove mynamo -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列软件包将被【卸载】:
mynano
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 79 个软件包未被升级。
解压缩后会消耗 0 B 的额外空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 231872 个文件和目录。)
正在卸载 mynano (1.0.0) ...

(8) [Facultatif] Vérifiez les dépendances de mynano_0.1-1_amd64.deb : dpkg -I ./mynano*deb

Ce qui peut être amélioré dans la méthode ci-dessus de création de packages deb :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer