Comment créer un PPA pour un programme de travail?

36

Supposons que j'ai une application de travail écrite en C, C ++ ou Python. Je souhaite créer un PPA Launchpad afin que d'autres personnes puissent facilement l'installer à partir d'un package. S'il vous plaît donner des instructions étape par étape pour le faire du début à la fin. (Ou fournissez un lien qui fait la même chose;)

  • Le langage de programmation est-il important? (Pourrait-il s'agir d'un script bash?)
  • Dois-je ajouter quelque chose à ma construction?
  • Où la compilation doit-elle s'installer?
  • Comment définir des dépendances?
  • Comment utiliser les dépendances?
  • Comment créer un fichier .deb?
  • Que dois-je faire avant de télécharger sur Launchpad?
david.libremone
la source
1
Je pose cette question parce que je recommande parfois aux projets FLOSS de créer un PPA (afin que je puisse les installer facilement :) - J'aimerais pouvoir leur indiquer une ressource complète ou pouvoir le faire moi-même.
david.libremone

Réponses:

33

C'est une question très large. Je vais essayer de répondre autant que je peux, mais ce ne seracertainement pas une instruction étape par étape. En effet, il n’existe pas d’algorithme pas à pas pour la création d’un package. La façon dont vous le ferez dépend de nombreux facteurs, principalement du type de package (application, bibliothèque), de la structure du source et de nombreux détails.

Heureusement, il existe un guide complet sur http://packaging.ubuntu.com

Je vais essayer de vous aider un peu à comprendre l'ensemble du processus, donc vous serez un peu plus familier avec ce processus. Le Guide d'emballage contient des ressources pour une aide supplémentaire.


Tout d’abord, vous devez comprendre que la création d’un package (fichier .deb) est un processus distinct de la création d’un PPA. Pour créer un PPA, il suffit d'aller dans le profil de votre tableau de bord et de cliquer sur le lien "Créer un nouveau PPA". C'est tout. C'est créé, ça marche, mais c'est vide. Pour télécharger un paquet, vous devez d'abord en créer un. Mais laissez-moi d'abord répondre à certaines de vos questions mineures.

  • La langue de programmation n'a pas d' importance. Il peut s'agir d'une application C ++, d'un script Bash, de Brainfuck Hello World, d'un fichier README unique ou d'un ensemble de superbes photos. Les paquets peuvent contenir n’importe quel fichier. Pendant l'installation, le paquet est extrait à la racine ("/") de votre système de fichiers. De cette façon, ils peuvent placer certains fichiers dans le dossier des fichiers binaires, ajouter des fonds d'écran au jeu par défaut de GNOME ou fournir à l'utilisateur un script Bash.
  • Vous N'ÊTES besoin d'ajouter quelque chose à la source. Il doit s'agir d'un répertoire de niveau supérieur nommé "debian". Il y aura quelques fichiers avec les détails du paquet - ils seront utilisés pour définir le type de paquet, etc.
  • Les dépendances sont répertoriées dans l'un de ces fichiers (parmi d'autres détails). D'où les obtenir? Ce sont simplement d'autres packages utilisés par votre application. Le développeur de l'application connaîtra les bibliothèques et les ressources requises par son programme. Il ne devrait donc pas avoir beaucoup de difficulté à les répertorier.
    • Certains outils utilisés pour construire un paquet (pbuilder) peuvent remplir les dépendances automatiquement, probablement en déterminant ce que votre application nécessite lors de la compilation.
  • Il est également fortement recommandé d'utiliser AutoTools . Vous devrez peut-être ajouter quelque chose, mais presque tous les logiciels les utilisent déjà. AutoTools est un ensemble de programmes extrêmement utiles - automake, autoconf et autoscan, pour n'en nommer que quelques-uns. Lorsque vous compilez et installez un programme avec le célèbre ./configure && make && make install ensuite, les outils automatiques sont utilisés pour traiter automatiquement le source, pour préparer d’autres ressources incluses avec le source à installer et pour extraire le résultat de la compilation au bon endroit (pour répondre à votre question: la construction extraira vers BEAUCOUP endroits séparés. les binaires iront dans / usr / local / bin, les docs dans / usr / local / share / docs, etc. De plus, les binaires d'un paquet iront même à des endroits différents, par exemple les binaires dans / usr / bin. Avec cette mise en page complexe de répertoires, utilisez AutoTools - il s’en occupera automatiquement, c’est pourquoi ils sont si utiles).

Construire un paquet .deb peut sembler un processus vraiment compliqué, mais ce n’est pas si difficile. Je vous recommande fortement le guide officiel Ubuntu pour la création de paquets: http://packaging.ubuntu.com

C'est énorme, mais vous verrez que vous pouvez probablement ignorer la plupart des parties de ce texte (en fonction du paquet que vous allez créer). Le processus d’emballage comprend essentiellement les éléments suivants (tous sont clairement expliqués dans le Guide) :

  1. Initiez quelques outils utilisés pour construire des packages.
  2. Obtenir la source
  3. Créez le répertoire ./debian et remplissez-le avec les données requises
  4. Construisez le paquet avec debuild [Cela devrait créer un ensemble de fichiers, y compris * .dsc, * _source.build, * _source.changes, qui sont responsables des données sur le paquet et de la façon de les gérer (vous devrez également une source .tar.gz)]
  5. Vérifiez si tout fonctionne en exécutant pbuilder localement (il faudra tous les fichiers mentionnés ci-dessus et essayez de les combiner dans un paquet .deb, en construisant automatiquement le source à l'aide d'AutoTools - c'est pourquoi ils sont essentiels pour l'empaquetage [franchement - non - vous pouvez vous en passer, ou utiliser certaines alternatives, mais c'est l'approche la plus simple. Une autre solution peut nécessiter une configuration avancée, car vous devrez indiquer au constructeur comment construire le code source (à l'aide du fichier ./debian/rules). ) - mais ce n'est pas pour les débutants] ) - si vous voulez juste obtenir un paquet .deb, c'est fait.

Maintenant, vous devrez le télécharger sur votre PPA, ce qui est expliqué sur cette page d'aide: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Utilisez dput pour télécharger ces fichiers sur le Launchpad
  2. Launchpad exécutera pbuilder sur leurs ordinateurs et générera des packages dans un environnement propre
  3. Enfin, les packages devraient apparaître dans le PPA.

Comme vous le voyez, la création d'un APP n'est pas si simple . Mais n'ayez pas peur , ce n'est pas si difficile. De plus, je vous recommande de ne pas encourager les développeurs à utiliser un PPA, car ils ne vous écouteront probablement pas, car ils auraient besoin de faire un travail supplémentaire (et s'ils le voulaient, ils l'auraient déjà fait), mais vous pouvez vouloir essayer de soutenir les développeurs Ubuntu et l'ensemble de la communauté et de leur fournir les packages que vous avez préparés :)

Je vous souhaite bonne chance dans la création de packages, j'espère que vous trouverez ma réponse utile :)

Votre ami, Rafał Cieślak

Rafał Cieślak
la source
Comment créer un PPA non-Launchpad, hébergé sur votre propre infrastructure? S'agit-il d'un simple serveur Web avec la structure de répertoire appropriée?
Moriarty
L'exemple brainf * ck était-il vraiment nécessaire?
Camden
5
  • Avant de pouvoir télécharger votre paquet, vous devez le configurer pour le .debpackaging, voir Ubuntu PackagingGuide .

  • Une fois que vous pouvez créer un package pour votre logiciel, reportez-vous à la documentation PPA de Launchpad . Il vous guidera de la création du PPA au téléchargement de votre paquet.

Isaïe
la source