Créer un package Solaris

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Il peut être très pratique de créer son propre package Solaris. Pourquoi ? Un gain de temps et c'est propre :-)

Nous allons avoir besoin de plusieurs fichiers, mais tous ne sont pas obligatoire. Je vais essayer de détailler au maximum pour que ce soit bien clair.

Il est aussi possible pour sécuriser son package de le certifier via SSL, GPG...

2 Création de fichiers nécessaires

Nous allons créer un dossier package et allons travailler dedans. Voici la composition d'un package :

package
|-- NOMdupackage
|   |-- etc
|   |   `-- deimos
|   `-- usr
|       |-- bin
|       |   `-- deimos_cluster
|       `-- perl5
|           |-- 5.8.4
|           |   |-- lib
|           |   |   `-- i86pc-solaris-64int
|           |   |       `-- perllocal.pod
|           |   `-- man
|           |       `-- man3
|           |           `-- Unix::Syslog.3
|           `-- site_perl
|               `-- 5.8.4
|                   `-- i86pc-solaris-64int
|                       |-- Unix
|                       |   `-- Syslog.pm
|                       `-- auto
|                           `-- Unix
|                               `-- Syslog
|                                   |-- Syslog.bs
|                                   `-- Syslog.so
|-- copyright
|-- depend
|-- pkginfo
`-- prototype

Il y a donc :

  • NOMdupackage : un nom de package avec 3 à 4 lettres en majuscules uniques, qui va contenir tous les fichiers nécessaires à l'installation
  • copyright et autres fichiers : fichiers qui vont servir à intéréagir pendant la phase d'utilisation du package ou tout simplement qui va contenir des informations

Je vais détailler un peu le dernier point. Voici les fichiers dont vous pouvez vous servir :

  • pkginfo : contient des infos sur le package (obligatoire)
  • prototype : contient la liste des fichiers et répertoire à copier. Contient également les fichiers de conf du package (obligatoire)
  • compver : définit les anciennes versions de package compatible avec celui ci
  • depend : définit les autres packets dépendant pour installer ce packet
  • space : définit l'espace disque requis pour ce paquage
  • copyright : le copyright
  • request : les prérequis pour l'installation
  • checkinstall : script effectuant des tests pour vérifier que tout va bien avant d'effectuer l'installation
  • preinstall : script pour préparer l'installation
  • postinstall : script pour finir l'installation
  • preremove : script pour préparer la suppression du package
  • postinstall : script pour finir l'installation

Créez donc un dossier contenant le nom de souhaité de votre package ainsi que l'arborescence souhaitée montré comme plus haut dans l'exemple.

2.1 copyright

Pour le copyright, mettez le votre. Un truc bateau :

Configuration File copyright
Copyright (c) 2009 Deimos
All Rights Reserved
 
This product is protected by copyright and distributed under
licenses restricting copying, distribution, and decompilation.

2.2 depend

Si vous avez des dépendances pour votre package, vous devez les inscrire ici. Par exemple, pour cet exemple, j'ai besoin d'avoir Perl et des librairies associées. Je vais donc récupérer la liste des noms de packets dont j'ai besoin et les mettre dans mon fichier depend :

Command pkginfo
$ pkginfo | grep perl584 | grep -v man > depend
system      SUNWperl584core                  Perl 5.8.4 (core)
system      SUNWperl584usr                   Perl 5.8.4 (non-core)

Ensuite, nous allons devoir remplacer ici 'system' par 'P' pour que ça donne ceci dans notre fichier :

Configuration File depend
P      SUNWperl584core                  Perl 5.8.4 (core)
P      SUNWperl584usr                   Perl 5.8.4 (non-core)

2.3 pkginfo

Maintenant, le fameux fichier contenant la description du package :

Configuration File pkginfo
ARCH=i386
CATEGORY=application
NAME=Deimos Clustering Solution
PKG=NOMdupackage
VERSION=1.0
DESC=Clustering Solution for Sun Cluster (SunPlex)
VENDOR=Deimos - http://www.deimos.fr
EMAIL=mon@email.com
BASEDIR=/

2.4 prototype

Finissons par ce fichier qui est le plus complexe. Il doit contenir tous les noms de fichiers (f), dossiers (d) existant. Il comprend également des informations (i).

Utilisez seulement ce dont vous avez besoin (pkginfo est obligatoire) :

Command
echo "i pkginfo=~/package/pkginfo" > prototype
echo "i copyright=~/package/copyright" >> prototype
echo "i depend=~/package/depend" >> prototype

Ensuite je vais me mettre dans mon dossier NOMdupackage et ajouter ce qu'il me reste :

Command pkgproto
cd NOMdupackage
pkgproto . >> ../prototype

Le contenu de mon fichier doit au final ressemble à quelquechose comme cela :

Configuration File prototype
i pkginfo=~/package/pkginfo
i copyright=~/package/copyright
i depend=~/package/depend
d none etc 0755 root sys
d none etc/deimos 0755 root root
d none usr 0755 root root
d none usr/perl5 0755 root root
d none usr/perl5/site_perl 0755 root root
d none usr/perl5/site_perl/5.8.4 0755 root root
d none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int 0755 root root
d none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto 0755 root root
d none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Unix 0755 root root
d none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Unix/Syslog 0755 root root
f none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Unix/Syslog/Syslog.bs 0644 root root
f none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Unix/Syslog/Syslog.so 0755 root root
f none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Unix/Syslog/.packlist 0644 root root
d none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/Unix 0755 root root
f none usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/Unix/Syslog.pm 0644 root root
d none usr/perl5/5.8.4 0755 root root
d none usr/perl5/5.8.4/man 0755 root root
d none usr/perl5/5.8.4/man/man3 0755 root root
f none usr/perl5/5.8.4/man/man3/Unix::Syslog.3 0644 root root
d none usr/perl5/5.8.4/lib 0755 root root
d none usr/perl5/5.8.4/lib/i86pc-solaris-64int 0755 root root
f none usr/perl5/5.8.4/lib/i86pc-solaris-64int/perllocal.pod 0644 root root
d none usr/bin 0755 root root
f none usr/bin/deimos_cluster 0740 root root

3 Création du package

Maintenant nous allons créer le package. Nous faisons un dossier package_done pour créer le package dedans :

Command pkgmk
cd ~/package
mkdir package_done
pkgmk -o -b . -d package_done -f prototype

Là nous obtenons notre package Solaris sous forme de dossier et non avec une extension pkg (qui est plus class, plus beau et brille dans le noir). C'est pourquoi voici le bouquet final :

Command pkgtrans
cd package_done
pkgtrans -s . NOMdupackage.pkg NOMdupackage

Et là ça y est j'ai mon beau package en .pkg :-)

4 Ressources

http://docs.sun.com/app/docs/doc/817-0406/ch1designpkg-51728?a=view