Présentation de EPM (ESP Package Manager)

Creation: 13 juillet 2009
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2009 Jean-Louis BICQUELET-SALAÜN

Présentation de EPM (ESP Package Manager)

Encore un gestionnaire de paquets? Un autre, un de plus allez-vous dire. Le problème de tous les gestionnaire de paquets, reste l'adhérence au système qui l'utilise. C'est là qu'EPM apporte quelquechose:

EPM peut générer des paquets "portable", car il est basé sur des shell scripts, tar, le shell (Bourne, Korn ou bash), zip, et un compilateur c.

On peut éventuellement, utiliser une interface graphique qui repose sur la très portable librairie fltk.

Mais, ce qui est exceptionnel, c'est que EPM est capable de générer des format spécifique comme des paquets rpm(redhat), deb(debian) et même bff (aix), et bien d'autres encore.

Allez jeter un couip d'oeil sur le site ESP Package Manager et n'hésitez pas à consulter la documentation.

Utilisation de EPM

organisation des répertoires

Ceci est mon organisation personnelle. Mais elle réalise sa fonction parfaitement. La structure repose sur:

  • un répertoire src qui contient les sources éventuelles de mes paquets
  • un répertoire bin qui contient binaires et scripts (perl, python, shell...)
  • un répertoire man/man1 pour les pages man
  • optionnelement doc pour la documentation

 ls -ltr
total 56
drwxr-xr-x    3 root     system          512 Oct 22 2008  man
drwxr-xr-x    2 root     system          512 Oct 22 2008  bin
-rw-r--r--    1 root     system          328 Apr 28 11:39 COPYING
-rw-r--r--    1 root     system          245 Apr 28 11:40 README
drwxr-xr-x    2 root     system          512 Apr 28 11:45 src
-rw-r--r--    1 root     system          881 Jul 13 09:47 dos2unix.list
drwxrwxrwx    2 root     system          512 Jul 13 09:49 aix-5.3-powerpc

COPYING contient la licence et README le readme associé au paquet. dos2unix.list est le fichier qui va permettre de générer les paquets avec EPM. Nous allons voir son contenu par la suite.

aix-5.3-powerpc est un répertoire créé par EPM qui va contenir les paquets générés.

structure du fichier .list

Les fichiers qui permettent la génération de paquets à l'aide de EPM se termine forcément par l'extension .list.

EPM offre de nombreuses possibilités, comme la génération conditionnelle des packages en fonction du systèmes, l'utilisation de scripts de postinstall, etc.. Je vous invinte à consulter sa documentation.

Le fichier que je vous présente va pouvoir vous servir de base pour vos paquets. Il est minimaliste, mais paramétrable. J'ai créé trois sections:

  • les variables qui permettent de préfixer les répertoires d'instalaltion
  • la description du paquet
  • les fichiers à installer
#------------------------------------------------------------------
# variables
#------------------------------------------------------------------
$prefix=/usr/local
$exec_prefix=/usr/local
$epmdir=${exec_prefix}/epm
$bindir=${exec_prefix}/bin
$datadir=/usr/local/share
$docdir=${datadir}/doc/epm
$libdir=/usr/local/lib
$mandir=/usr/local/man
$srcdir=.

#------------------------------------------------------------------
# description
#------------------------------------------------------------------
%product dos2unix
%copyright 1999-2009 inconnu
%vendor Inconnu
%license ${srcdir}/COPYING
%readme ${srcdir}/README
%description dos2unix and unix2dos text file converter
%version 1.0 000

#------------------------------------------------------------------
# fichiers
#------------------------------------------------------------------
%system all
f 755 root system ${prefix}/bin/dos2unix ${srcdir}/bin/dos2unix
f 755 root system ${prefix}/bin/unix2dos ${srcdir}/bin/unix2dos
d 755 root system ${prefix}/man/man1 -
f 640 root system ${prefix}/man/man1/dos2unix.1 ${srcdir}/man/man1/dos2unix.1
f 640 root system ${prefix}/man/man1/unix2dos.1 ${srcdir}/man/man1/unix2dos.1

Vous allez me dire que le plus fastidieux est de répertorier les fichiers à installer et à déterminer les droits.

C'est exact, mais on est aidé par l'utilitaire mkepmlist qui s'utilise ainsi:

#mkepmlist bin man
f 755 root system /bin/dos2unix bin/dos2unix
f 755 root system /bin/unix2dos bin/unix2dos
d 755 root system /man/man1 -
f 640 root system /man/man1/dos2unix.1 man/man1/dos2unix.1
f 640 root system /man/man1/unix2dos.1 man/man1/unix2dos.1

Les plus astucieux utiliserons une commande comme ceci afin d'obtenir directement les prefix voulus:

#mkepmlist bin man |sed "s# \/#\${prefix}/#" |sed "s# bin# \${srcdir}#" |  sed "s# man# \${srcdir}#"

Il reste à copier cette liste dans le fichier .list.

génération des pacquets

La façon la plus simple de lancer EPM est celle-ci (Il n'y a pas d'extension .list dans la commande):

#epm dos2unix

Ceci va générer un fichier dos2unix-1.0-aix-5.3-powerpc.tar.gz dans le répertoire aix-5.3-powerpc.

La génération de paquet est aussi simple. Il suffit d'utiliser l'option - f avec le type de paquet souhaité.

#epm -f aix -v dos2unix
ESP Package Manager v4.1
Copyright 1999-2007 by Easy Software Products.

EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details
see the GNU General Public License in the file COPYING or at
"http://www.fsf.org/gpl.html".  Report all problems to "epm@easysw.com".

Searching for product information...
Stripping executables in distribution...
Creating AIX distribution...
Creating lpp_name file...
Updating root partition liblpp.a file for dos2unix...
Updating shared partition liblpp.a file for dos2unix...
Copying temporary distribution files...
Building AIX binary distribution...
Removing temporary distribution files...
Done!

Un fichier dos2unix.bff est généré. Le numéro de la version est à l'intérieur et vous pouvez lancer smitty install pour vérifier.

Si vous souhaitez plus de détails, utilisez l'option -vv.

# epm -f aix -vv dos2unix
ESP Package Manager v4.1
Copyright 1999-2007 by Easy Software Products.

EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details
see the GNU General Public License in the file COPYING or at
"http://www.fsf.org/gpl.html".  Report all problems to "epm@easysw.com".

Searching for product information...
Stripping executables in distribution...
/usr/bin/strip ./bin/dos2unix
strip: ./bin/dos2unix -- 0654-420 The file was already stripped as specified.
/usr/bin/strip ./bin/unix2dos
strip: ./bin/unix2dos -- 0654-420 The file was already stripped as specified.
Creating AIX distribution...
Creating lpp_name file...
Updating root partition liblpp.a file for dos2unix...
    Creating .al file...
    Creating .cfgfiles file...
    Creating .copyright file...
    Creating .pre_i file...
    Creating .post_i file...
        Creating .unpre_i file...
    Creating .unpost_i file...
    Creating .inventory file...
    Creating liblpp.a archive...
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a lpp.README
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.al
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.copyright
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.inventory
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.post_i
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.pre_i
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.unpost_i
ar rc dos2unix/usr/lpp/dos2unix/inst_root/liblpp.a dos2unix.unpre_i
Updating shared partition liblpp.a file for dos2unix...
    Creating .al file...
    Creating .cfgfiles file...
    Creating .copyright file...
    Creating .inventory file...
    Creating liblpp.a archive...
ar rc dos2unix/usr/lpp/dos2unix/liblpp.a lpp.README
ar rc dos2unix/usr/lpp/dos2unix/liblpp.a dos2unix.al
ar rc dos2unix/usr/lpp/dos2unix/liblpp.a dos2unix.copyright
ar rc dos2unix/usr/lpp/dos2unix/liblpp.a dos2unix.inventory
Copying temporary distribution files...
./bin/dos2unix -> aix-5.3-powerpc/dos2unix/usr/local/bin/dos2unix...
./bin/unix2dos -> aix-5.3-powerpc/dos2unix/usr/local/bin/unix2dos...
Directory aix-5.3-powerpc/dos2unix/usr/local/man/man1...
./man/man1/dos2unix.1 -> aix-5.3-powerpc/dos2unix/usr/local/man/man1/dos2unix.1...
./man/man1/unix2dos.1 -> aix-5.3-powerpc/dos2unix/usr/local/man/man1/unix2dos.1...
Building AIX binary distribution...
sh -c 'find . -print | backup -i -f ../dos2unix.bff -q -v'
Backing up to ../dos2unix.bff
Cluster 51200 bytes (100 blocks).
Volume 1 on ../dos2unix.bff
a            0 .
a          105 ./lpp_name
a            0 ./usr
a            0 ./usr/lpp
a            0 ./usr/lpp/dos2unix
a            0 ./usr/lpp/dos2unix/inst_root
a         2108 ./usr/lpp/dos2unix/inst_root/liblpp.a
a         2102 ./usr/lpp/dos2unix/liblpp.a
a            0 ./usr/local
a            0 ./usr/local/bin
a        38285 ./usr/local/bin/dos2unix
a        38413 ./usr/local/bin/unix2dos
a            0 ./usr/local/man
a            0 ./usr/local/man/man1
a          392 ./usr/local/man/man1/dos2unix.1
a          389 ./usr/local/man/man1/unix2dos.1
    total size: 81794
Done at Mon Jul 13 09:49:35 2009; 200 blocks on 1 volume(s)
Removing temporary distribution files...
/bin/rm -rf aix-5.3-powerpc/dos2unix
Done!