Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
documentation:methode_de_creation_des_paquets_pour_0linux_native [03-09-2014 10:07] appzer0 [Créer un paquet-abonnement] |
documentation:methode_de_creation_des_paquets_pour_0linux_native [23-03-2015 13:09] (Version actuelle) appzer0 [creer_post_installation] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====Créer et exécuter des recettes==== | ====Créer et exécuter des recettes==== | ||
- | On se base sur la [[http://git.tuxfamily.org/0linux/0linux.git?p=0linux/0linux.git;a=blob;f=generique.recette|recette générique]] de 0Linux pour créer rapidement des paquets. La recette a été simplifiée et comprend des fonctions pour automatiser les tâches rébarbatives. Elle inclut toutes les commandes que l'on appellerait habituellement sur la ligne de commande, en s'aidant des fonctions pré-enregistrées dans ''/usr/share/0outils/fonctions_paquets.sh'' . | + | On se base sur la [[http://git.tuxfamily.org/0linux/0linux.git/tree/generique.recette|recette générique]] de 0Linux pour créer rapidement des paquets. La recette a été simplifiée et comprend des fonctions pour automatiser les tâches rébarbatives. Elle inclut toutes les commandes que l'on appellerait habituellement sur la ligne de commande, en s'aidant des fonctions pré-enregistrées dans ''/usr/share/0outils/fonctions_paquets.sh'' . |
La recette équivaut en fait à empaqueter un logiciel manuellement sur le terminal, ou via un petit script, en le compilant et en l'installant à un emplacement spécifique puis à le passer à ''spackpkg'' pour en faire un paquet pour 0Linux, installable avec ''spackadd''. | La recette équivaut en fait à empaqueter un logiciel manuellement sur le terminal, ou via un petit script, en le compilant et en l'installant à un emplacement spécifique puis à le passer à ''spackpkg'' pour en faire un paquet pour 0Linux, installable avec ''spackadd''. | ||
Ligne 34: | Ligne 34: | ||
--infodir=/usr/info \ | --infodir=/usr/info \ | ||
--docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | --docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | ||
- | --build=${PKGARCH}-0-linux-gnu | + | --build=${PKGARCH}-0linux-linux-gnu |
make -j${JOBS} || make | make -j${JOBS} || make | ||
Ligne 217: | Ligne 217: | ||
''telecharger_sources'' télécharge la ou les archives des sources à(aux) (l')adresse(s) définie(s) dans ''$WGET'', si la ou les archives sont absentes, que celle-ci soit une simple URL ou bien un tableau de plusieurs URL (voir plus haut dans cette page) puis s'occupe de vérifier l'intégrité des archives téléchargées. | ''telecharger_sources'' télécharge la ou les archives des sources à(aux) (l')adresse(s) définie(s) dans ''$WGET'', si la ou les archives sont absentes, que celle-ci soit une simple URL ou bien un tableau de plusieurs URL (voir plus haut dans cette page) puis s'occupe de vérifier l'intégrité des archives téléchargées. | ||
- | Depuis ''0outils 12.9'', ''telecharger_sources'' gère également les dépôts git. Il suffit de renseigner l'adresse du dépôt commençant par « git:// ». Le commit concerné doit se retrouver dans la variable ''VERSION''. On spécifie les 10 premiers caractères du « hash » du commit voulu. Example : | + | Depuis ''0outils 12.9'', ''telecharger_sources'' gère également les dépôts git. Il suffit de renseigner l'adresse du dépôt commençant par « git: ». Le commit concerné doit se retrouver dans la variable ''VERSION''. On spécifie les 10 premiers caractères du « hash » du commit voulu. Exemple : |
<code bash> | <code bash> | ||
Ligne 294: | Ligne 294: | ||
On peut forcer une autre architecture que celle de l'hôte pour certains cas spéciaux (compilation croisée pour la prise en charge du multilib notamment, etc.) en appelant la fonction avec un paramètre. Par exemple : | On peut forcer une autre architecture que celle de l'hôte pour certains cas spéciaux (compilation croisée pour la prise en charge du multilib notamment, etc.) en appelant la fonction avec un paramètre. Par exemple : | ||
cflags i686 | cflags i686 | ||
- | ... forcera la compilation en i686 même si l'hôte est un x86_64. Cette fonction est souvent utilisée dans les recettes nécessitant de gérer le mécanisme « multilib », comme c'est le cas pour les recettes x86_64 nécessitant des bibliothèques 32 bits i686 au sein du même paquet. Voyez la recette ''[[http://git.tuxfamily.org/0linux/0linux.git?p=0linux/0linux.git;a=blob;f=0Linux/b/zlib/zlib.recette|zlib.recette]]'' pour un exemple concret de recette multilib. | + | ... forcera la compilation en i686 même si l'hôte est un x86_64. Cette fonction est souvent utilisée dans les recettes nécessitant de gérer le mécanisme « multilib », comme c'est le cas pour les recettes x86_64 nécessitant des bibliothèques 32 bits i686 au sein du même paquet. Voyez la recette ''[[http://git.tuxfamily.org/0linux/0linux.git/tree/0Linux/b/zlib/zlib.recette|zlib.recette]]'' pour un exemple concret de recette multilib. |
On peut également forcer une architecture non native (si on veut compiler uniquement du 32 bits i686 sur une 0Linux 64 bits) en spécifiant sur la ligne de commande la variable ''$FORCE_PKGARCH''. Cette variable ne sert que dans de rares cas, par exemple générer des paquets purs i686 sur un hôte 64 bits prenant en charge le multilib i686. | On peut également forcer une architecture non native (si on veut compiler uniquement du 32 bits i686 sur une 0Linux 64 bits) en spécifiant sur la ligne de commande la variable ''$FORCE_PKGARCH''. Cette variable ne sert que dans de rares cas, par exemple générer des paquets purs i686 sur un hôte 64 bits prenant en charge le multilib i686. | ||
Ligne 339: | Ligne 339: | ||
Il détecte automatiquement si des fichiers ''*.0nouveau'' sont présents et crée le script permettant de comparer avec des fichiers déjà installés sur le système et le cas échéant d'éviter l'écrasement de fichiers de configuration. Ainsi, pour créer un fichier qui ne doit pas écraser un fichier portant le même nom (par exemple, ''httpd.conf'') lors d'une mise à niveau, il suffit de lui ajouter l'extension ''.0nouveau'' (par exemple ''httpd.conf.0nouveau''). Ce sera à l'utilisateur de vérifier s'il veut migrer vers le fichier en ''.0nouveau'' ou pas. Si oui, il supprimera l'extension ''.0nouveau'' et écrasera son ancien fichier, sinon, soit il ne fera rien, soit il supprimera le fichier ''.0nouveau'' (idéalement). | Il détecte automatiquement si des fichiers ''*.0nouveau'' sont présents et crée le script permettant de comparer avec des fichiers déjà installés sur le système et le cas échéant d'éviter l'écrasement de fichiers de configuration. Ainsi, pour créer un fichier qui ne doit pas écraser un fichier portant le même nom (par exemple, ''httpd.conf'') lors d'une mise à niveau, il suffit de lui ajouter l'extension ''.0nouveau'' (par exemple ''httpd.conf.0nouveau''). Ce sera à l'utilisateur de vérifier s'il veut migrer vers le fichier en ''.0nouveau'' ou pas. Si oui, il supprimera l'extension ''.0nouveau'' et écrasera son ancien fichier, sinon, soit il ne fera rien, soit il supprimera le fichier ''.0nouveau'' (idéalement). | ||
- | Cette fonction s'occupe également d'ajouter toutes les fonctions de réindexation, mise à jour etc. dans ce même script (icônes à réindexer, polices à réindexer, raccourcis bureau à mettre à jour, types MIME à mettre à jour, bibliothèques à ajouter à l'éditeur de liens via ''ldconfig'', mise à jour des dépendances entre modules noyau, etc.). Voyez les sources du fichier de fonctions dans ''[[http://git.tuxfamily.org/0linux/0linux.git?p=0linux/0linux.git;a=blob;f=0Linux/a/0outils/fonctions_paquets.sh|0Linux/a/0outils/fonctions_paquets.sh]]'' pour plus de détails). | + | Cette fonction s'occupe également d'ajouter toutes les fonctions de réindexation, mise à jour etc. dans ce même script (icônes à réindexer, polices à réindexer, raccourcis bureau à mettre à jour, types MIME à mettre à jour, bibliothèques à ajouter à l'éditeur de liens via ''ldconfig'', mise à jour des dépendances entre modules noyau, etc.). Voyez les sources du fichier de fonctions dans ''[[http://git.tuxfamily.org/0linux/0linux.git/tree/0Linux/a/0outils/fonctions_paquets.sh|0Linux/a/0outils/fonctions_paquets.sh]]'' pour plus de détails). |
On ajoutera donc à loisir manuellement d'autres fonctions au script ''${PKG}/post-install.sh'', notamment des permissions spéciales ou des commandes particulières via de simples ''echo'' ou ''cat'' (via la syntaxe « heredoc », voyez en fin de page). | On ajoutera donc à loisir manuellement d'autres fonctions au script ''${PKG}/post-install.sh'', notamment des permissions spéciales ou des commandes particulières via de simples ''echo'' ou ''cat'' (via la syntaxe « heredoc », voyez en fin de page). | ||
Ligne 384: | Ligne 384: | ||
--infodir=/usr/info \ | --infodir=/usr/info \ | ||
--docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | --docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | ||
- | --build=${PKGARCH}-0-linux-gnu | + | --build=${PKGARCH}-0linux-linux-gnu |
make -j${JOBS} || make | make -j${JOBS} || make | ||
Ligne 430: | Ligne 430: | ||
--infodir=/usr/info \ | --infodir=/usr/info \ | ||
--docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | --docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | ||
- | --build=${PKGARCH}-0-linux-gnu | + | --build=${PKGARCH}-0linux-linux-gnu |
make -j${JOBS} || make | make -j${JOBS} || make | ||
Ligne 573: | Ligne 573: | ||
--docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | --docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | ||
--enable-bidule \ | --enable-bidule \ | ||
- | --build=${PKGARCH}-0-linux-gnu | + | --build=${PKGARCH}-0linux-linux-gnu |
make -j${JOBS} || make | make -j${JOBS} || make | ||
Ligne 598: | Ligne 598: | ||
--docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | --docdir=/usr/doc/${NAMETGZ}-${VERSION} \ | ||
--enable-bidule \ | --enable-bidule \ | ||
- | --build=${PKGARCH}-0-linux-gnu | + | --build=${PKGARCH}-0linux-linux-gnu |
cd - | cd - |