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 21/10/2006, à 20:34

LordFarquaad

Créer un paquet deb pour un logiciel PHP ?

Bonjour à tous,

J'aimerais construire un paquet .deb pour un logiciel en php afin de pouvoir en faire profiter plus facilement la communauté Ubuntu/Debian. J'ai bien trouvé le tutoriel proposé dans la documentation Ubuntu-fr.org et encore d'autre, mais le problème c'est que ces tutoriels se lancent dans les détails de la création de paquets source et binaires alors que pour un logiciel PHP, il n'y a évidemment pas de binaires... Je n'ai donc pas envie de passer énormément de temps à lire des choses qui ne me serviront à rien pour faire ce paquet.

Quelqu'un saurait-il comment faire pour empaqueter ce type particulier de logiciel ? Il faut "simplement" que le paquet installe les fichiers dans /var/www, soit dépendant de php/mysql et même si possible crée automatiquement une base de données et un utilisateur et effectue l'installation du logiciel (à moins que ce soit une mauvaise idée ?)

Merci d'avance pour vos réponses.

Hors ligne

#2 Le 22/10/2006, à 00:48

guil

Re : Créer un paquet deb pour un logiciel PHP ?

pour une appli php, je suis pas sûr que le .deb soit une bonne idée pour ce genre d'appli, si tu veux qu'elle soit utilisée, tu dois laisser à l'utilisateur la possibilité de l'utilisé dans sa configuration apache/mysql actuelle, perso je connais pas deux personnes ayant la même.

Le mieux (c'est juste mon avis) c'est de mettre le tout sur un truc genre sourceforge avec éventuellement un fichier INSTALL disant d'extraire le fichier dans un répertoire accessible au serveur web, parce que /var/www n'est pas forcément le répertoire utilisé.

Tu peux également ajouter un fichier sql contenant les requêtes pour créer la bado, mais comme tu ne connais pas les paramètres de la base (user/passwd...) tu peux dificilement la créer automatiquement, pour faciliter tu peux ajouter un scipt install.sh avec des truc style:

mysql -u user -ppasswd nomDeLaBase < myQueries.sql

ou même faire une interface d'intallation, une fois ton appli su rle server web tu demandes à l'utilisateur de lancer http://mon/url/de/l/appli/install/ , là s'affiche un formulaire avec le sparamètres nécéssaire à l'install de la bado.

j'espère que ca t'aidera, bon courage.

Hors ligne

#3 Le 22/10/2006, à 02:13

LordFarquaad

Re : Créer un paquet deb pour un logiciel PHP ?

En fait j'avais envie de faire ça car j'ai constaté que plusieurs applis sont packagées de la sorte comme phpMyAdmin ou phpBB2. Il s'installent tous les deux dans /usr/share. Le premier fait place un lien symbolique dans /var/www et fonctionne sans plus. Pour PhpBB2, je viens d'essayer et c'est complètement différent: il fournit un package apparemment plutôt prévu pour des systèmes en production, avec hôtes virtuels etc. et à côté un package complémentaire pour faire de sorte que ça marche sans toucher à rien. (mais j'ai pas su le faire marcher...)

Il y a tout un tas d'autres applications en php qui sont disponibles dans les dépôts: b2evolution (qui demande une configuration complémentaire), eskuel (idem), phpwiki, dokuwiki, spip (demande login/mdp lors du dépackage via debconf, mais j'ignore comment l'utiliser après...) et encore bien d'autre. Ça ne me parait donc pas si étrange de vouloir faire la même chose ;-)

Ce que je voudrais c'est surtout créer le paquet en fait, le script d'installation ça marche déjà sans souci. Donc dans un premier temps un simple paquet installant les choses au bon endroit ça serait déjà pas mal :-) J'aimerais donc si possible un tuto ou quelque chose de ce genre pour réaliser ce type de paquets un peu particuliers... Après je verrai peut-être pour une installation automatique, mais effectivement c'est pas forcément bien dans la mesure ou l'utilisateur n'a alors plus la possibilité de configurer les choses comme il le souhaite...

Hors ligne

#4 Le 22/10/2006, à 11:08

guil

Re : Créer un paquet deb pour un logiciel PHP ?

N'ayant jamais fait de .deb, je me suis lancé dans l'aventure avec une de mes lib php, donc aprés un peu de lecture (surtout ici: http://www.debian.org/doc/debian-policy … l#contents)
ca donne ca:

j'ai décidé de copier la lib (xml2pdf) dans /usr/share/xml2pdf/,  de mettre un peu de doc dans /usr/doc/xml2pdf/, et de mettre un lien dans /var/www. Il faut donc créer l'arboressence suivante :

xml2pdf
	|- DEBIAN
		|- control      fichier de control
		|- postinst     script éxécuté aprés la copie des fichier à l'installation
		|- prerm        script éxécuté avant le suppressin des fichiers copiés à la désinstallation
	|- usr
		|- share
			|- xml2pdf                   la lib php elle sera copié dans /urs/share
				|- ...
		|- doc
			|- xml2pdf	             la doc de la lib qui sera placé dans /usr/doc
				|- COPYRIGHT
				|- README
				|- CHANGELOG

création de l'arboressence:

guil@laptop:~$ mkdir xml2pdf

guil@laptop:~$ mkdir xml2pdf/DEBIAN
guil@laptop:~$ mkdir xml2pdf/usr
guil@laptop:~$ mkdir xml2pdf/usr/share

guil@laptop:~$ cp -R ../src/php/xml2pdf/ xml2pdf/usr/share/

on ajoute un peu de doc:

guil@laptop:~$ mkdir xml2pdf/usr/doc
guil@laptop:~$ mkdir xml2pdf/usr/doc/xml2pdf
guil@laptop:~$ vim README
guil@laptop:~$ vim COPYRIGHT
guil@laptop:~$ vim CHANGELOG

création du fichier de control des dépendances

guil@laptop:~$ vim xml2pdf/DEBIAN/control

il ressembe à peu prés à ça:

Package: xml2pdf
Version: 0.1
Section: base
Priority: optional
Architecture: all
Depends: bash (>= 2.0)
Maintainer: Guillaume L. <guillaume@geelweb.org>
Description: convert xml file to pdf file
 Convert xml file to pdf file

création du fichier éxécuté aprés la copie des fichiers

guil@laptop:~$ vim xml2pdf/DEBIAN/postinst

il ressemble à ça:

#!/bin/sh -e
# postinst script for xml2pdf
#

if [ -x "/usr/share/xml2pdf" ]; then
    ln -s /usr/share/xml2pdf/ /var/www/xml2pdf
fi

création du fichier éxécuté lors de la désinstalation

guil@laptop:~$ vim xml2pdf/DEBIAN/prerm

il ressemble à ca

#!/bin/sh -e
# postinst script for xml2pdf
#

if [ -x "/var/www/xml2pdf" ]; then
    rm /var/www/xml2pdf
fi

enfin on crée le paquet

dpkg-deb --build xml2pdf

il peut être installé avec:

guil@laptop:~$ sudo dpkg -i xml2pdf.deb
Sélection du paquet xml2pdf précédemment désélectionné.
(Lecture de la base de données... 168148 fichiers et répertoires déjà installés.)
Dépaquetage de xml2pdf (à partir de xml2pdf.deb) ...
Paramétrage de xml2pdf (0.1) ...

et désinstallé avec:

guil@laptop:~$ sudo dpkg --remove xml2pdf
(Lecture de la base de données... 168876 fichiers et répertoires déjà installés.)
Suppression de xml2pdf ...

voilà, pour le détail c'est ici:
http://www.debian.org/doc/debian-policy/index.html#contents
notament chapitre 5 pour le fichier control, 6 pour postinsts et prerm, et 7 pour la gestion des dépandances (ligne depends du fichier control)

Hors ligne

#5 Le 22/10/2006, à 12:43

LordFarquaad

Re : Créer un paquet deb pour un logiciel PHP ?

Waw ! Merci beaucoup ! Je m'attendais à un lien vers une documentation spécifique et tu me fais un tuto personnalisé, c'est vraiment cool ça :-)

Hors ligne

#6 Le 22/10/2006, à 21:33

xbright

Re : Créer un paquet deb pour un logiciel PHP ?

Ouah, je suivais votre conversation, j'ai même faillit participer, mais la, je dois remercier guil ! C'est super, ça.
Je pense que je vais pouvoir adapter ça assez facilement à mes projets en Python, que je vais pouvoir distribuer en .deb !

[ce n'est pas de la pub] euh, au fait, LordFarquaad, si tu cherches un endroit pour parler de ton projet à part SourceForge, il y a aussi http://ProjetsLibres.codingteam.net roll [/ce n'est pas de la pub]

Dernière modification par xbright (Le 22/10/2006, à 21:34)


| tagada  | CodingTeam | Ubuntu Réunion | Linux Facile | Mon blog |
Rien à faire ! Moi, je préfère les fraises.

Hors ligne

#7 Le 22/10/2006, à 23:15

tenshu

Re : Créer un paquet deb pour un logiciel PHP ?

op puis je wikiser ton tuto guil?
Il manquerait la même chose pour des packages python smile

Hors ligne

#8 Le 23/10/2006, à 09:09

guil

Re : Créer un paquet deb pour un logiciel PHP ?

tenshu a écrit :

op puis je wikiser ton tuto guil?
Il manquerait la même chose pour des packages python smile

vas y wiksie.

en fait pour python (ou quoi que ce soit d'autre) le principe est le même.

disons qu'il y a en plus un fichier à mettre dans /usr/bin/, si on reprend le premier exemble pour ajouter un fichier qui permet d'utiliser la lib en ligne de commande, ca fait ajouter dans l'arboressence le répertoire bin dans usr avec un fichier xml2pdf (executable bien sur, chmod +x)

|- xml2pdf
	|- DEBIAN
		...
	|- usr
		|- share
			...
		|- doc
			...
        	|- bin
            		|- xml2pdf

pour utiliser cette lib en ligne de commande il faut un client php5 donc on modifie le fichier control pour ajouter une dépendance, la ligne

Depends: bash (>= 2.0)

devient

Depends: bash (>= 2.0), php5-cli

le fichier xml2pdf contient:

#!/bin/sh
#
# version $Id: xml2pdf,v 1.2 2006/10/17 17:49:30 geelweb Exp $

PHP=`which php`
exec $PHP -C -q -d output_buffering=1 $0 $@
<?php
ob_end_clean();
include('/usr/share/xml2pdf/Io.php');

$io = new Io();
$setting = $io->parseArgv();

include('/usr/share/xml2pdf/Xml2Pdf.php');
$obj = new Xml2Pdf($setting['filename']);
$pdf = $obj->render();
$pdf->Output($setting['output'], 'F');
?>

Aprés l'installation du .deb, on peut donc faire

guil@laptop:~$ xml2pdf --help

Xml2Pdf usage :
     xml2pdf -f fileToParse.xml

Xml2Pdf options :
     -f     --filename
               xml file path to parse.
     -o     --output
               output file name.
     -h     --help
               show this help message.

PS: si vous voulez jetez un oeuil au projet xml2pdf c'est ici : http://xml-2-pdf.sourceforge.net/

Hors ligne

#9 Le 28/02/2008, à 20:20

LYAKA

Re : Créer un paquet deb pour un logiciel PHP ?

Attendez là....Juste un truc à dire ; Moi Guil je le connais , il est trop fort d'abord et c'est le plus beau des bisounours!!!!
big_smile:D:D:D:D:D:D
Une collégue