Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
technique:paquet_depot [2020/04/04 23:55] – créée francoisa | technique:paquet_depot [2021/04/20 23:35] – francoisa | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Linux : paquets et dépots ====== | ====== Linux : paquets et dépots ====== | ||
- | Plutôt que de copier des fichiers avec des scripts, il peut être plus utilie | + | Plutôt que de copier des fichiers avec des scripts, il peut être plus utile de proposer des paquets deb (pour les Linux basés sur Debian, Ubuntu, Mint…). |
===== Version simple ===== | ===== Version simple ===== | ||
- | https:// | + | [[https:// |
- | https:// | + | [[https:// |
- | https:// | + | [[https:// |
Mais comment les créer ? | Mais comment les créer ? | ||
Ligne 16: | Ligne 16: | ||
* une arborescence qui reproduit l' | * une arborescence qui reproduit l' | ||
- | Exemple si on veut copier des fichiers dans / | + | Exemple si on veut copier des fichiers dans '' |
On aura un dossier " | On aura un dossier " | ||
- | * '' | + | * '' |
- | * usr/ | + | * '' |
- | + | Le fichier control comprend les informations minimales sur ce paquet : nom, mainteneur (vous), | |
- | Le fichier control comprend les informations minimales sur ce paquet : nom, mainteneur (vous), | + | |
'' | '' | ||
+ | < | ||
- | < | ||
Package: icecat | Package: icecat | ||
Version: 3.5.1 | Version: 3.5.1 | ||
Ligne 58: | Ligne 57: | ||
</ | </ | ||
- | On peutaussi | + | On peut aussi créer des fichiers spécifiques dans DEBIAN |
==== Création du paquet ==== | ==== Création du paquet ==== | ||
- | dpkg-deb | + | < |
+ | dpkg-deb | ||
+ | |||
+ | </ | ||
Cette commande créera le fichier nomdudossier.deb | Cette commande créera le fichier nomdudossier.deb | ||
Ligne 70: | Ligne 72: | ||
Pour tester l' | Pour tester l' | ||
+ | < | ||
sudo dpkg -i nomdudossier.deb | sudo dpkg -i nomdudossier.deb | ||
- | Et testez, retestez, re-re-testez... | + | </ |
+ | |||
+ | Et testez, retestez, re-re-testez… | ||
===== Création d'un dépot apt ===== | ===== Création d'un dépot apt ===== | ||
- | https:// | + | [[https:// |
+ | |||
+ | Principe : on prépare un dossier en local, on le configure, on dépose ses paquets, on lance un script qui va créer l' | ||
+ | |||
+ | ==== Installation reprepro ==== | ||
+ | < | ||
+ | |||
+ | sudo apt install reprepro | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | mkdir apt | ||
+ | mkdir -p ./ | ||
+ | mkdir -p ./ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Création du fichier ./'' | ||
+ | |||
+ | < | ||
+ | Origin: Votre Nom | ||
+ | Label: Label de votre société (ou autre) | ||
+ | Suite: stable | ||
+ | Codename: bionic | ||
+ | Version: 18.04 | ||
+ | Architectures: | ||
+ | Components: main restricted universe multiverse #(en fonction de vos besoin) | ||
+ | Description: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Mettre vos .deb dans le dossier incoming. A relancer en cas de mise à jour du dépot. | ||
+ | |||
+ | < | ||
+ | cd apt | ||
+ | reprepro -Vb . includedeb (distribution) incoming/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Tester localement ==== | ||
+ | |||
+ | Tester avec un sources.list (déplacer le dossier dans /var/www par exemple si problème d' | ||
+ | |||
+ | < | ||
+ | deb file:/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Puis | ||
+ | |||
+ | < | ||
+ | sudo apt-get update | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Signer son dépot ==== | ||
+ | |||
+ | Signer le dépot avec une [[https:// | ||
+ | < | ||
+ | |||
+ | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key XXXXX # ou XXXX est l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Rajouter dans '' | ||
+ | |||
+ | < | ||
+ | SignWith: XXXXXXXX # où XXXX est l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Puis dans apt/, lancer : | ||
+ | |||
+ | < | ||
+ | reprepro --ask-passphrase export | ||
+ | |||
+ | </ | ||
+ | |||
+ | Et entrer le mot de passe de votre clef PGP | ||
+ | |||
+ | ==== Envoyer son dépot à distance ==== | ||
+ | |||
+ | Copier votre dossier distant dans un site accessible en http comme [[http:// | ||
+ | |||
+ | Et changer votre fichier local de sources.list : ''/ | ||
+ | < | ||
+ | |||
+ | deb [allow-insecure=yes] http:// | ||
+ | # allow-insecure si le dépot n'est pas signé | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== TODO ==== | ||
+ | |||
+ | - Gérer d' | ||
+ | |||
+ | - Ajouter des paquets .deb | ||
+ | |||
+ | - Affiner le lieu de stockage des paquets selon les options universe multiverse contrib… Identifier les paquets pour amd64, i386. | ||
+ | |||
+ | ===== Astuces - debug ===== | ||
+ | |||
+ | Dans le cas particulier où un paquet serait bloqué en cours d' | ||
+ | |||
+ | < | ||
+ | mv / | ||
+ | dpkg --remove --force-remove-reinstreq PAQUET | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Clef GPG de dépot expiré ===== | ||
+ | |||
+ | Cas où un dépot à été ajouté et sa clef a expiré. | ||
+ | |||
+ | Exemple : | ||
+ | |||
+ | < | ||
+ | Err :6 https:// | ||
+ | Les signatures suivantes ne sont pas valables : EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key < | ||
+ | |||
+ | </ | ||
+ | |||
+ | apt-key list sury donne : | ||
+ | |||
+ | < | ||
+ | pub | ||
+ | 1505 8500 A023 5D97 F5D1 0063 B188 E2B6 95BD 4743 | ||
+ | uid [ expirée ] DEB.SURY.ORG Automatic Signing Key < | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | L' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Donc on récupère la nouvelle clef à partir des serveurs de clef avec cet identifiant : | ||
+ | |||
+ | < | ||
+ | sudo apt-key adv --keyserver keys.gnupg.net --recv-keys B188E2B695BD4743 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Et c'est tout bon ! | ||
+ | |||
+ | apt-key list sury renvoie : | ||
+ | |||
+ | < | ||
+ | pub | ||
+ | 1505 8500 A023 5D97 F5D1 0063 B188 E2B6 95BD 4743 | ||
+ | uid [ unknown] DEB.SURY.ORG Automatic Signing Key < | ||
+ | sub | ||
+ | |||
+ | </ | ||