J'essaie de comprendre comment créer un paquetage rpm pour openSUSE dans les cas les plus simples.

http://lists.opensuse.org/opensuse-factory/2006-08/msg00305.html

puis

http://lists.opensuse.org/opensuse-packaging/2006-08/msg00028.html

==Le but à atteindre==

créer un paquetage pour une distribution donnée n'est en général pas la préoccupation de l'auteur de l'application qui va être empaquetée. Il y a trop de distributions pour qu'il puisse s'en préoccuper, il faut donc que d'autres s'en occupent à sa place.

Les documentations que j'ai pu lire jusqu'à maintenant sont complexes et laissent entendre qu'il faut y consacrer de nombreux jours, voir semaines, ce qui est décourageant.

Je voudrais voir s'il n'est pas possible de faire simple dans des cas simples :-)

Il semble qu'il y ai deux directions à envisager ici.

  • le cas des scripts ou applications très simples pour lesquelles un fichier spec "de base" doit être possible
  • les applications déjà empaquetées pour d'autres distributions ou modes de diffusion et qu'il faut alors adapter à openSUSE

==Points de départ==

Le point de départ évident pour openSUSE est le suivant :

http://en.opensuse.org/SUSE_Build_Tutorial

Le problème est que ce document liste des "prérequis" conséquents et intimidants.

Ceci dit, pour l'instant, la seule chose vraiment problématique est le "spec file", fichier d'extension .spec et qui décrit la façon dont l'installation de l'application doit se passer. ==Références==

Entre les réponses que l'on m'a faites et une recherche sur "rpm" dans YaST, j'ai trouvé les produits suivants:

;build:A script to build SUSE Linux rpm's ;checkinstall:"make install" installation tracker ;createrepo:pour signer les répertoires sources rpm ;krpmbuilder:build a rpm from a tar archive. Noter que krpmbuilder est d'abord un outil de création de fichier spec, mais qu'il est bogué. Il demande où on veut créer le fichier spec, mais n'en tient pas compte lors de la création du rpm (il le cherche dans /usr/src/packages/SOURCES). Dans les menus français de kde, se trouve sous le nom "Outils développement" de la rubrique "Développement". En plus, il ne sauve pas sa configuration (propose de sauver, demande le nom de fichier, mais ne fait pas l'écriture). Même en root, rien ne se passe comme prévu. Outil à éviter, pas encore au point (version 1.2) - en toput cas pour l'usage prévu ici.

==Un exemple pour la route==

Je vais présenter cette première version en utilisant comme exemple le script "makethumb.sh", d'une part parceque c'est un script sh, donc avec des dépendances limitées et pas de compilation, ensuite parceque je m'en sert fréquemment, enfin parcequ'il n'est pas présent des la distribution openSUSE. ==Un fichier spec de base== On m'a proposé le fichier suivant comme point de départ, je l'ai découpé en sections et commenté.

<pre>

  1. spec file for package makethumb (Version 0.1)

Name: makethumb Summary: makes thumbnails Version: 0.1 Release: 1 Group: Productivity/Graphics/Convertors License: GPL URL: http://stick.the.url/in/here Source: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build Packager: jdd <jdd@dodin.org> BuildArch: noarch Requires: bash jhead </pre>

Cette partie n'est pas seulement un en-tête, mais la création d'une série de variables ("Name", par exemple, pour le nom du programme) qui vont être utilisées par la suite. <pre> %description Creates a thumbnail image

%prep %setup -q

%install </pre> Ca, pour l'instant, je ne sais pas ce que c'est.

<pre>

  1. install the script. The default location will expand to /usr/bin

install -D -m755 %{name}.sh %{buildroot}%{_bindir}/%{name}.sh

  1. uncomment these lines if you include a man page,
  2. mkdir -p %{buildroot}/%{_mandir}/man1
  3. install -D -m755 %{name}.1 %{buildroot}%{_mandir}/man1/

%files %defattr(-,root,root,0755) %{_bindir}/%{name}.sh

  1. uncomment this line if you include a man page
  2. %{_mandir}/man1/%{name}.1*
  3. uncomment these lines if you include one of these files
  4. %doc COPYING
  5. %doc INSTALL
  6. %doc README

%clean rm -rf %{buildroot} </pre>