Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/01/2009, à 01:58

AgentSmith

Besoin d'aide pour la création d'un paquet Debian

Bonjour à tous,


Avant tout je tiens à m'excuser d'avoir poster le même sujet dans la rubrique Gnome, cette section étant bien plus adaptée à ma requête.


Voici la situation :
J'ai un projet (universitaire) qui est grosso-modo le développement d'une application sur un tablet PC (Nokia N810 avec processeur ARM) qui tourne sous un Linux de type Debian(Maemo).

Cette application sera codée en C++ sur une machine Linux standard (i386) et la compilation se passe via Scratchbox (outil permettant la cross-compilation vers une target ARM).


Le problème (qui n'en est peut-être pas un) est que sur ce tablet PC, il n'y strictement rien d'installé niveau outil de compilation. A première vue, il n'y a même pas de compilateur C (du moins pas GCC, ou alors je ne cherche pas bien).
J'ai commencé par faire un helloworld graphique basique (l'application à réaliser pour le projet est évidemment plus conséquente wink ) et je voudrais maintenant faire un paquet .deb pour pouvoir l'installer proprement sur le tablet PC.

J'ai donc commencé à chercher de la doc sur la création de .deb, y compris dans la doc officielle de Maemo. Cependant tous les exemples/explications que j'ai pu voir m'ont un peu dérouté car je ne suis pas très calé en Linux. Etant donné qu'il faut je sois opérationnel assez rapidement, je fais donc appel à vous pour répondre à ces interrogations primaires :


-Jusqu'à présent j'étais persuadé que l'installation d'un .deb sous Linux consistait en la compilation des fichiers sources et la gestion des dépendances.

Une distrib' Linux sans compilateur C, c'est normal? Je veux dire, il est précisé que le tablet PC gère nativement le C, or je ne trouve pas de compilateur (d'ailleurs existe t-il une commande pour savoir quels compilateurs sont installés sur une distribution Linux?).

Ou alors "gérer nativement" implique juste d'avoir les librairies standards C afin que les programmes puissent s'exécuter.
Ce qui voudrais dire que toutes les applications destinées à cet appareil ne sont pas compilé sur l'appareil au moment de leur installation. Je trouve ça étrange... D'où ma seconde question :

-Est-ce que un .deb se construit toujours à partir des codes sources de l'application ou bien peut-on construire un .deb à partir de l'exécutable uniquement (le binaire quoi)?

Si je demande cela, c'est parce que je compte installer le moins de choses possibles sur le tablet PC et donc je n'ai à fortiori pas envie d'installer GCC/G++.
L'idéal serait que je puisse empaqueter le/les exécutables dans un .deb (ainsi qu'éventuellement des icônes, des scripts shell ou d'autres petites choses) et faire en sorte que tout les fichiers aillent se placer au bon endroit.



J'espère avoir été suffisamment clair et précis et que l'un d'entre vous pourra éclairer ma lanterne tongue

#2 Le 23/01/2009, à 06:33

gpocentek

Re : Besoin d'aide pour la création d'un paquet Debian

Si tu as les outils pour cross-compiler, pourquoi veux-tu recompiler sur la tablette ? Le binaire généré par le compilateur sera à priori directement utilisable sur la tablette, puisque les bibliothèques dont il dépend seront déjà installées (maemo, libc).

Pour la doc packaging : http://doc.ubuntu-fr.org/tutoriel/creer_un_paquet. C'est possible de créer un paquet à partir du binaire, mais la création à partir des sources est plus standard, et recommandée.

Hors ligne

#3 Le 23/01/2009, à 10:16

Hizoka

Re : Besoin d'aide pour la création d'un paquet Debian

regardez ici sinon :
http://forum.ubuntu-fr.org/viewtopic.php?id=200818

et il existe le logiciel : debianpackagemaker
qui est vraiment tres bien.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 23/01/2009, à 10:28

AgentSmith

Re : Besoin d'aide pour la création d'un paquet Debian

Si je devais faire l'application en C, je pense en effet que le binaire aurait été directement utilisable sur l'appareil, car je présume que la bibliothèque standard C est présente.
Cependant je dois coder en C++ et je risque à priori d'avoir à utiliser des bibliothèques non présentes sur le tablet (au moins Gtkmm, le binding C++ de Gtk+). Du coup je dois soit installer les bibliothèques dont j'ai besoin sur le tablet (je n'y tiens pas) soit être capable de faire un .deb qui précise/gère ces dépendances.


Dans tous les tutos que j'ai vu, y compris celui du le lien dont tu parles, il s'agit toujours d'exemples où les sources sont présents (si c'est la façon standard de procéder, c'est compréhensible) et où il y a tout le bazar des fichiers créés avec les autotools (pour quelqu'un qui sait à peine faire un makefile, c'est assez rebutant).
Je présume qu'il faut donc que j'adapte la façon standard d'empaqueter à ma situation.


En tout cas merci de ta réponse!

#5 Le 23/01/2009, à 10:31

AgentSmith

Re : Besoin d'aide pour la création d'un paquet Debian

Merci à toi aussi Hizoka, je pense que ce lien va m'être utile, en tout cas cela correspond plutôt bien à la situation.

#6 Le 23/01/2009, à 10:47

tshirtman

Re : Besoin d'aide pour la création d'un paquet Debian

Ou alors "gérer nativement" implique juste d'avoir les librairies standards C afin que les programmes puissent s'exécuter.
Ce qui voudrais dire que toutes les applications destinées à cet appareil ne sont pas compilé sur l'appareil au moment de leur installation. Je trouve ça étrange... D'où ma seconde question :

-Est-ce que un .deb se construit toujours à partir des codes sources de l'application ou bien peut-on construire un .deb à partir de l'exécutable uniquement (le binaire quoi)?

je pense que ça veux dire que stdlib est là en effet.

pour ta seconde question c'est tout à fait posssible de construire des debs qui contienne n'importe qulles fichiers, pas necessairement des executables d'aileurs, jette un coup d'ôil par là: http://www.respawner.fr/blog/index.php?post/2008/11/15/R%C3%A9alisation-du-paquet-Debian-pour-notre-application pour des explications simples sur la création d'un paquet.

bonne chance smile

Hors ligne

#7 Le 23/01/2009, à 12:01

AgentSmith

Re : Besoin d'aide pour la création d'un paquet Debian

Merci!

Après discussion avec un collègue, je viens d'apprendre avec stupéfaction que les distrib' Linux n'ont pas GCC de base. Je comprend donc mieux pourquoi ce n'est pas non plus présent sur l'appareil.

Du coup, j'avoue que ça m'interpelle sur certaines choses à nouveau.

Si je comprend bien, avec les paquets .deb, les applications installées sur un Linux (via apt ou autre) ne sont pas du tout recompilées? Et c'est cela la différence avec les .deb-src pour lesquels on recompile puis on installe?


Et donc quel est l'intérêt de construire un .deb à partir des sources, et ne pas juste y mettre l'exécutable seulement? Est-ce qu'il s'agit "juste" de permettre à l'utilisateur d'avoir accès aux sources, et éventuellement de les modifier?



Je m'excuse pour toutes ces questions de newbie (pour un futur programmeur ça la fout mal neutral ).

#8 Le 23/01/2009, à 12:12

gpocentek

Re : Besoin d'aide pour la création d'un paquet Debian

Non, les .deb ne sont pas recompilés à l'installation. C'est tout l'intérêt. Tu peux comparer un .deb à un installeur MSI. Les sources ne sont pas disponibles dans le paquet, et l'installation se contente de copier des fichiers où il faut (on résumant très grossièrement).

L'intérêt de construire un .deb à partir des sources c'est d'avoir un système complètement automatisé de compilation. A partir d'un paquet source, des .debs sont générés automatiquement pour chaque architecture supportée. Et ce n'est qu'un des avantages, il y en a d'autres (c'est facile à maintenir, à patcher, à mettre à jour, etc.).

Hors ligne

#9 Le 23/01/2009, à 13:10

AgentSmith

Re : Besoin d'aide pour la création d'un paquet Debian

Ok j'y vois un peu plus clair à présent, merci beaucoup!