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 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 smile


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 smile

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. smile

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 big_smile

Sinon concernant ton paquet j'ai une ou deux remarques pour parfaire le tout smile :
- 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 wink


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 big_smile: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 wink


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