#1 Le 21/10/2006, à 19: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 21/10/2006, à 23: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, à 01: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, à 10: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, à 11: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, à 20: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 [/ce n'est pas de la pub]
Dernière modification par xbright (Le 22/10/2006, à 20: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, à 22: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
Hors ligne
#8 Le 23/10/2006, à 08:09
- guil
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
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, à 19: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!!!!:D:D:D:D:D:D
Une collégue