technique:paquet_depot

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:paquet_depot [2020/04/04 23:55] – créée francoisatechnique: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 de proposer des paquets deb (pour les Linux basés sur Debian, Ubuntu, Mint...).+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://www.it-connect.fr/creer-un-paquet-debian-deb/\\ +[[https://www.it-connect.fr/creer-un-paquet-debian-deb/|https://www.it-connect.fr/creer-un-paquet-debian-deb/]]\\ 
-https://doc.ubuntu-fr.org/tutoriel/creer_un_paquet\\ +[[https://doc.ubuntu-fr.org/tutoriel/creer_un_paquet|https://doc.ubuntu-fr.org/tutoriel/creer_un_paquet]]\\ 
-https://doc.ubuntu-fr.org/tutoriel/creation_deb+[[https://doc.ubuntu-fr.org/tutoriel/creation_deb|https://doc.ubuntu-fr.org/tutoriel/creation_deb]]
  
 Mais comment les créer ? Mais comment les créer ?
Ligne 16: Ligne 16:
   * une arborescence qui reproduit l'arborescence avec les chiers à ajouter dedans.   * une arborescence qui reproduit l'arborescence avec les chiers à ajouter dedans.
  
-Exemple si on veut copier des fichiers dans /usr/share/backgrounds/cemea+Exemple si on veut copier des fichiers dans ''/usr/share/backgrounds/cemea''
  
 On aura un dossier "fondsecran" qui contient : On aura un dossier "fondsecran" qui contient :
  
-  * ''DEBIAN/control''  (et d'autres plus ou moins utiles changelog, compat, copyright, rules, dir...+  * ''DEBIAN/control''  (et d'autres plus ou moins utiles changelog, compat, copyright, rules, dir
-  * usr/share/backgrounds/cemea/ qui contient les fichiers image +  * ''usr/share/backgrounds/cemea/''  qui contient les fichiers image 
- +Le fichier control comprend les informations minimales sur ce paquet : nom, mainteneur (vous),catégorie, description, dépendances, version
-Le fichier control comprend les informations minimales sur ce paquet : nom, mainteneur (vous),catégorie, description, dépendances, version...+
  
 ''DEBIAN/control''  : ''DEBIAN/control''  :
 +<code>
  
-<code> 
 Package: icecat Package: icecat
 Version: 3.5.1 Version: 3.5.1
Ligne 58: Ligne 57:
 </code> </code>
  
-On peutaussi créer des fichiers spécifiques dans DEBIEN qui s'exécuterent avant, ou après l'installation ou la désinstallation (respectivement preinst, postin, prerm, postrm). Ces fichiers sont des fichiers bash avec des commandes classiques qui seront exécutées en tant que root.+On peut aussi créer des fichiers spécifiques dans DEBIAN qui s'exécuterent avant, ou après l'installation ou la désinstallation (respectivement preinst, postin, prerm, postrm). Ces fichiers sont des fichiers bash avec des commandes classiques qui seront exécutées en tant que root.
  
 ==== Création du paquet ==== ==== Création du paquet ====
  
-dpkg-deb --build nomdudossier # celui qui contient DEBIAN)+<code> 
 +dpkg-deb build nomdudossier # celui qui contient DEBIAN 
 + 
 +</code>
  
 Cette commande créera le fichier nomdudossier.deb Cette commande créera le fichier nomdudossier.deb
Ligne 70: Ligne 72:
 Pour tester l'installation du paquet : Pour tester l'installation du paquet :
  
 +<code>
 sudo dpkg -i nomdudossier.deb sudo dpkg -i nomdudossier.deb
  
-Et testez, retestez, re-re-testez...+</code> 
 + 
 +Et testez, retestez, re-re-testez
  
 ===== Création d'un dépot apt ===== ===== Création d'un dépot apt =====
  
-https://doc.ubuntu-fr.org/tutoriel/comment_creer_depot (avec reprepro) \\+[[https://doc.ubuntu-fr.org/tutoriel/comment_creer_depot|https://doc.ubuntu-fr.org/tutoriel/comment_creer_depot]] (avec reprepro) 
 + 
 +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'arborescence qui va bien. On signe son dépot et on envoie sa cleg sur les serveurs d'Ubuntu. Puis on coper son disser local sur un dossier distant accessible par le web. Et on ajouter le dépot dans ses dépots perso et on lance une mise à jour avec installation des paquets. 
 + 
 +==== Installation reprepro ==== 
 +<code> 
 + 
 +sudo apt install reprepro 
 + 
 +</code> 
 + 
 +<code> 
 +mkdir apt 
 +mkdir -p ./apt/conf 
 +mkdir -p ./apt/incoming 
 + 
 +</code> 
 + 
 +Création du fichier ./''apt/conf/distributions'' 
 + 
 +<code> 
 +Origin: Votre Nom 
 +Label: Label de votre société (ou autre) 
 +Suite: stable 
 +Codename: bionic 
 +Version: 18.04 
 +Architectures: i386 amd64 source #(en fonction de vos besoin) 
 +Components: main restricted universe multiverse #(en fonction de vos besoin) 
 +Description: Votre Description 
 + 
 +</code> 
 + 
 +Mettre vos .deb dans le dossier incoming. A relancer en cas de mise à jour du dépot. 
 + 
 +<code> 
 +cd apt 
 +reprepro -Vb . includedeb (distribution) incoming/*.deb 
 + 
 +</code> 
 + 
 +==== Tester localement ==== 
 + 
 +Tester avec un sources.list (déplacer le dossier dans /var/www par exemple si problème d'accès par _apt): 
 + 
 +<code> 
 +deb file:/lieu_de_mon_dossier/apt stable main contrib non-free 
 + 
 +</code> 
 + 
 +Puis 
 + 
 +<code> 
 +sudo apt-get update 
 + 
 +</code> 
 + 
 +==== Signer son dépot ==== 
 + 
 +Signer le dépot avec une [[https://doc.ubuntu-fr.org/gnupg|clef GPG]] à préparer. Puis à publier sur les serveurs de clef d'Ubuntu : 
 +<code> 
 + 
 +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key XXXXX # ou XXXX est l'identifiant (court) de votre clef 
 + 
 +</code> 
 + 
 +Rajouter dans ''./apt/conf/distributions'' 
 + 
 +<code> 
 +SignWith: XXXXXXXX # où XXXX est l'identifiant (court) de votre clef 
 + 
 +</code> 
 + 
 +Puis dans apt/, lancer : 
 + 
 +<code> 
 +reprepro --ask-passphrase export 
 + 
 +</code> 
 + 
 +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://depot.cemea.org|http://depot.cemea.org]] 
 + 
 +Et changer votre fichier local de sources.list : ''/etc/apt/sources.list.d/depotcemea.list'' 
 +<code> 
 + 
 +deb [allow-insecure=yes] http://depot.cemea.org focal main contrib universe multiverse restricted 
 +# allow-insecure si le dépot n'est pas signé 
 + 
 +</code> 
 + 
 +==== TODO ==== 
 + 
 +- Gérer d'autres dépots 
 + 
 +- 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'installation : 
 + 
 +<code> 
 +mv /var/lib/dpkg/info/PAQUET.* /tmp/ 
 +dpkg --remove --force-remove-reinstreq PAQUET 
 + 
 +</code> 
 + 
 +===== Clef GPG de dépot expiré ===== 
 + 
 +Cas où un dépot à été ajouté et sa clef a expiré. 
 + 
 +Exemple : 
 + 
 +<code> 
 +Err :6 https://packages.sury.org/php buster InRelease 
 +  Les signatures suivantes ne sont pas valables : EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key <deb@sury.org> 
 + 
 +</code> 
 + 
 +apt-key list sury donne : 
 + 
 +<code> 
 +pub   rsa3072 2019-03-18 [SC] [expirée : 2021-03-17] 
 +      1505 8500 A023 5D97 F5D1 0063 B188 E2B6 95BD 4743 
 +uid          [ expirée ] DEB.SURY.ORG Automatic Signing Key <deb@sury.org> 
 + 
 +</code> 
 + 
 +<code> 
 +L'identifiant de la clef est ici B188E2B695BD4743 (4 derniers 4-uplets). 
 + 
 +</code> 
 + 
 +Donc on récupère la nouvelle clef à partir des serveurs de clef avec cet identifiant : 
 + 
 +<code> 
 +sudo apt-key adv --keyserver keys.gnupg.net --recv-keys B188E2B695BD4743 
 + 
 +</code> 
 + 
 +Et c'est tout bon ! 
 + 
 +apt-key list sury renvoie : 
 + 
 +<code> 
 +pub   rsa3072 2019-03-18 [SC] [expires: 2024-02-16] 
 +      1505 8500 A023 5D97 F5D1  0063 B188 E2B6 95BD 4743 
 +uid           [ unknown] DEB.SURY.ORG Automatic Signing Key <deb@sury.org> 
 +sub   rsa3072 2019-03-18 [E] [expires: 2024-02-16] 
 + 
 +</code> 
  
  • technique/paquet_depot.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1