#1 Le 07/01/2010, à 19:44
- Nargzul
Création de mon propre packet .deb avec mon propre code
Bonjour,
J'aimerais créer mon propre paquet, avec mon propre code dedans.
J'ai essayé de suivre quelques tutos, qui n'utilisent jamais les mêmes méthodes, et le problème, la plupart parlent d'un code déjà existant avec une archive tgz "orig, ou parlait d'un code qui avait besoin d'être compilé, ou avait besoin d'un fichier Makefile.
Ce que j'ai fais:
Créé mon dépot http://doc.ubuntu-fr.org/creer_un_depot_ubuntu
Pour mes paquets:
http://alp.developpez.com/tutoriels/debian/creer-paquet/
--> J'ai mon .deb (testScript.deb), je le met dans le _incomming du serveur, mais il ne semble pas s'ajouter au dépôt, je suppose donc que j'ai fais une erreur à ce niveau la?
http://case.oncle-tom.net/2007/creer-son-propre-paquetage-deb-gtwitter/
--> Mais apparement la faut avoir une makefile et tout
http://www.debian.org/doc/manuals/maint-guide/index.fr.html#contents
-->Mais parle de sources à download justement dans ce fichier orig
http://www.sukria.net/fr/libreast/
-->Mais il veut transformer un fichier de base en en fichier de .orig.tar.gz, on est vraiment obligé d'avoir ce fichier .orig, si on part de zéro?
La j'ai été un peu plus loin, j'ai ajouté une option pour qu'il créée lui même, j'ai essayé de créer un Makefile qui fait que la copie.
Mais la j'ai un problème, il me créée un amd64, alors que c'est du bash qui peut runner sans soucis sur n'importe quoi. Comment je fais pour avoir vraiment le "all"? J'ai essayé le --target=all ou --target=any, mais ca plante en donnant des erreurs du genre:
"make: *** No rule to make target `any'. Stop."
Du coup j'ai pu réutiliser aussi mon Makefile avec le "http://case.oncle-tom.net/2007/creer-son-propre-paquetage-deb-gtwitter/", mais ca me créée aussi du amd64.
Comment faire un paquet qui est indépendant?
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#2 Le 09/01/2010, à 13:20
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
Salut,
Pour créer ton paquet si c'est déjà des binaires, la méthode ici convient parfaitement : http://alp.developpez.com/tutoriels/debian/creer-paquet/
Il faut juste faire attention si tu utilises des scripts de postinst ou autre.
- Le script sera lancé en root
- $HOME, ~ correspond à /root
- Tu ne peux pas utiliser apt depuis le script
Sinon, pour créer un dépôt je te conseille une méthode manuelle qui grâce à elle tu comprendra vraiment le fonctionnement du dépôt :
http://www.debianaddict.org/article31.html
Tu peux remplacer le unstable par ce que tu veux comme karmic, jaunty ou all
EDIT : Pour les prérequis ce n'est pas grave si tu as uniquement ton .deb. Tu as donc juste à créer le répertoire binary-i386
Dernière modification par yoann21 (Le 09/01/2010, à 13:23)
Hors ligne
#3 Le 13/01/2010, à 17:16
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Mais j'ai suivi cette méthode, il n'y avait rien dans les post installation et remove, et le paquet était juste sensé poser un script à un emplacement(qui lui faisait qu'un bête echo).
Du coup ca serait le serveur qui joue pas?
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#4 Le 13/01/2010, à 17:24
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
Ton paquet déjà, fonctionne-t-il quand tu l'installes en local ?
Si tu n'as rien à mettre dans postinst et autres ne crées pas ces fichiers. Seul control est indispensable.
Il faudrait aussi m'en dire plus sur le problème avec le dépôt comme à quel endroit où tu bloques.
Hors ligne
#5 Le 13/01/2010, à 17:41
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Non le paquet semble ne pas jouer, il n'aime pas l'architecture "any"
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#6 Le 13/01/2010, à 17:45
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
C'est all qu'il faut mettre si tu veux faire un paquet no arch.
Sinon c'est i386, amd64, lpia etc ...
Hors ligne
#7 Le 13/01/2010, à 18:04
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Oups, j'ai pris le mauvais paquet(j'avais fait des tests ou ils mentionnaient all)
Alors oui, en local cela marche.
La suppression par contre c'est pas le cas:
j4n@hephaistos:~$ sudo apt-get remove testscript
[sudo] password for j4n:
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
mpich2-doc
Veuillez utiliser « apt-get autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
testscript
0 mis à jour, 0 nouvellement installés, 1 à enlever et 10 non mis à jour.
1 partiellement installés ou enlevés.
Après cette opération, 0o d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? O
(Lecture de la base de données... 238679 fichiers et répertoires déjà installés.)
Suppression de testscript ...
dpkg (sous-processus) : impossible d'exécuter script post-removal installé: Erreur de format pour exec()
dpkg : erreur de traitement de testscript (--remove) :
le sous-processus script post-removal installé a retourné une erreur de sortie d'état 2
Des erreurs ont été rencontrées pendant l'exécution :
testscript
E: Sub-process /usr/bin/dpkg returned an error code (1)
Une idée?
Merci en tout cas beaucoup pour m'aider dans ces premier pas.
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#8 Le 13/01/2010, à 18:10
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
3 fois que je vois ce problème en 1 semaine.
Ton paquet n'est pas en cause.
sudo rm /var/lib/depkg/info/testscript.postrm
Puis redésinstalles ton paquet.
Sinon, as-tu mis un script lorsque tu as crée le paquet (même vide)?
Hors ligne
#9 Le 13/01/2010, à 18:31
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
sudo rm /var/lib/depkg/info/testscript.postrm
r `/var/lib/depkg/info/testscript.postrm': Aucun fichier ou dossier de ce type
et du coup, ca me fait toujours le problème.
Sinon:
Mon fichier DEBIAN/postinst
touch /var/test_postinstallation
Mon fichier DEBIAN/postrm
touch /var/test_postrm
dpkg-deb oblige la présence de fichier et contrôle même que les droits sont bons
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#10 Le 13/01/2010, à 18:34
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
Oups désolé la commande est :
sudo rm /var/lib/dpkg/info/testscript.postrm
Si ton paquet se nomme testscript.
Oui comme je te le disais control est obligatoire.
Mais les scripts de postinst et autres ne sont pas obligatoires.
Hors ligne
#11 Le 13/01/2010, à 18:41
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Impec
Donc, j'en reviens à mon problème initial:
J'ai posé mon fichier .deb dans /var/www/ubuntu/_incoming/
j'ai runné
sudo debarchiver -so
Mais après être fait, déjà sur un pc de test ou j'ai ce dépot, après rechargement de celui-ci je ne trouve pas le paquet, et dans aucun des sous-dossiers de /var/www/ubuntu/dists, je trouve mon paquet, donc je suppose qu'il n'a pas été traité, et j'avais supposé qu'il y avait donc une erreur dans mon paquet.
Au passage, quand on veut ajouter une MAJ, il suffit d'incrémenter la version dans DEBIAN/control et de refaire le paquet avec les nouveaux contenus?
Merci!
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#12 Le 13/01/2010, à 21:29
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
Pour générer les fichiers du dépôt je te conseille l'article ici qui est très bien fait et qui permet de comprendre vraiment le fonctionnement d'un dépôt.
http://www.debianaddict.org/article31.html
Voila les commandes que tu as à faire (inspiré de l'article mais plus adapté à ton cas) :
Création de l'arborescence :
mkdir /var/www/debian/dists/alldistrib/main/binary-all
Tu copies ton paquet :
cp ton_paquet.deb /var/www/debian/dists/alldistrib/main/binary-all
On génère le package.gz (contient es infos sur tes paquets)
cd /var/www/debian/dists/alldistrib/main
dpkg-scanpackages binary-all /dev/null dists/alldistrib/main/ | gzip -f9 > binary-all/Packages.gz
Ensuite tu crées un fichier texte nommé Release :
gedit /var/www./debian/dists/alldistrib/main/binary-all/Release
Et tu colles le contenu suivant et tu enregistres :
Archive: alldistrib
Component: main
Architecture: all
Ensuite tu upload le répertoire debian à la racine de ton site puis pour l'utiliser en dépôt tu rajpites ca à ton sources.list :
deb http://www.tonsite.com/debian alldistrib main
Concernant les mise à jour :
Oui c'est exact pour les maj. Mais attention toutefois il y a quelques subtilités, si tu lances la mise à jour d'un paquet qui contient des modifications des scripts de post/pre inst/rm par rapport à la version actuellement installée, les anciens scripts ne seront pas remplacés. Mais dans ton cas tu n'as pas à t'en soucier.
Quand tu mettras à jour ton paquet sur le dépôt tu auras juste à regénérer le package.gz.
Bonne chance.
Dernière modification par yoann21 (Le 13/01/2010, à 21:29)
Hors ligne
#13 Le 28/01/2010, à 14:07
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Un immense merci pour ton aide!
J'ai pas mal avancé, mais actuellement je ne vois pas le paquet dans la liste des paquets possibles à installer.
Tout est bien dispo sur le web( http://deb.omne.ch si jamais), apparements les paquets sont présents, le Packages.gz s'est généré.
A noter que lors du scanpackage j'ai eu une erreure:
dpkg-scanpackages binary-all /dev/null dists/alldistrib/main/ | gzip -f9 > binary-all/Packages.gz
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning: testscript
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#14 Le 28/01/2010, à 14:53
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
En fait le répertoire binary-all doit s'appeler binary-i386.
Par contre il te faudra régénérer le package.gz sinon apt ira chercher ton paquet dans binary-all.
J'ai testé et ça marche nickel après la modification :
http://yoann.laissus.free.fr
J'ai laissé le paquet dans binary-all car j'avais la flemme de modifier ton Package.gz
Sinon concernant ton paquet j'ai une ou deux remarques pour parfaire le tout :
- Utilises des majuscules pour tous les mots clés de début de ligne
- Package est normalement en haut
- Tu dois mettre le shell que tu vas exécuter en haut dans tes scripts de post/pre inst/rm
Pour bash : #!/bin/bash
Dernière modification par yoann21 (Le 28/01/2010, à 14:58)
Hors ligne
#15 Le 28/01/2010, à 15:00
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Donc on ne peut pas avoir des paquets qui fonctionnent sur du 64 bits et du 32 bits d'un coup?
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#16 Le 28/01/2010, à 15:06
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
Si c'est juste que dans l'architecture du dépôt ce n'est pas possible de mettre des répertoires binary-all.
Tu peux bien évidemment fournir des paquets noarch dans un répertoire binary-i386 puisque cela est déterminé avec le control du paquet et le Package.gz
Hors ligne
#17 Le 28/01/2010, à 15:18
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Ca semble être bon, par contre mon paquet semble pas trop juste mais c'est une autre histoire!
Merci bien, vais continuer mes tests
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#18 Le 29/01/2010, à 12:31
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
J'ai créé un autre paquet un poil plus sérieux, mais quand je fais le dpkg-scanpackages, j'ai un warning:
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning: omnebox-script-vm-base testscript
c'est un soucis?
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#19 Le 29/01/2010, à 12:46
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
Arf, plus embêtant, en resuivant le premier tuto pour la réalisation du .deb, je rencontre ca comme erreur à l'installation:
sudo apt-get install omnebox-script-vm-base
[sudo] password for j4n:
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation :
Les paquets suivants contiennent des dépendances non satisfaites :
omnebox-script-vm-base: Dépend: free mais il n'est pas installable
Dépend: tail mais il n'est pas installable
Dépend: head mais il n'est pas installable
E: Paquets défectueux
pourtant free, tail, head sont déjà installé.
Hum... je me dis un truc juste la, c'est possible que j'aie les executable mais que les paquets s'appellent pas comme ca! Ya moyen de savoir de quel paquet il provient?
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne
#20 Le 29/01/2010, à 17:49
- yoann21
Re : Création de mon propre packet .deb avec mon propre code
Oui ils sont tous fournis par le paquet coreutils :D
C'est inutile de le mettre en dépendances vu que quasiment tous les paquets de ton système dépendent directement ou indirectement de celui-ci.
Pour savoir le nom du paquet qui contient certains fichiers, sers-toi de apt-file search le_nom_du_fichier
Dernière modification par yoann21 (Le 29/01/2010, à 17:50)
Hors ligne
#21 Le 29/01/2010, à 23:35
- Nargzul
Re : Création de mon propre packet .deb avec mon propre code
okay, c'est surtout parce que typiquement "bc" je l'ai pas vu partout du coup j'ai mis tous les executable que j'utilisais dans mes scripts.
Vais tester ca
Dell E6400 - Ubuntu 9.10
Serveur OVH Kimsufi - Ubuntu 8.04
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
Hors ligne