Sat Sep 7 21:27:59 2019 UTC

Qu'est-ce qu'un port ?

Introduction

Le port est un dossier contenant un certain nombre de fichiers (au minimum 1) nécessaire pour la construction d'un paquet. La commande pkgmk permet de "construire" le paquet qui sera ensuite installable.

Pour être fonctionnel, ce dossier doit contenir au minimum un fichier appelé Pkgfile. C'est grâce à ce fichier que la construction du paquet peut se faire. Le contenu de Pkgfile contient toutes les informations nécéssaires pour la construction ou plus exactement la compilation du paquet depuis les sources.

Le nom port est emprunté du monde BSD où un port se réfère à un logiciel "porté" sur un système d'exploitation ou une plateforme. Dans notre cas, le port est simplement la définition de la construction d'un paquet.

Syntaxe minimale d'un port

Les informations minimales pour pouvoir produire le binaire sont:

  • name spécifie le nom du paquet qui sera construit.
  • version spécifie la version des sources du paquet.
  • release spécifie la N'ième tentative de construction du paquet. Sa valeur commence donc toujours à 1
  • source contient l'adresse des sources du paquet que l'on souhaite empaqueter.
  • build() la fonction qui contient la recette proprement dîte.

Un petit exemple avec commentaires:

# Nom du paquet
name=gnome-terminal

# Version du paquet
version=2.6.4

# Release du paquet
release=1

# Emplacement des sources du paquet qui sera empaqueté
source=(http://ftp.gnome.org/pub/gnome/sources/$name/${version%.*}/$name-$version.tar.bz2)

# Définition de la recette proprement dite, souvent constitué des trois commandes standards
build() {
cd $name-$version
./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
make
make DESTDIR=$PKG install
}

Si vous comparez cet exemple avec un port officiel de NuTyX, vous constaterez que ce dernier contient plus d'informations. C'est ce que nous verrons dans le prochain paragraphe. Une ligne vous a peut-être attiré votre attention:

http://ftp.gnome.org/pub/gnome/sources/$name/${version%.*}/

La syntaxe ${version%.*} permet de substituer une valeur à N chiffres en une valeur à N-1 chiffres. C'est très souvent le cas pour les sources des paquets gnome. Dans notre exemple donc, la ligne:

http://ftp.gnome.org/pub/gnome/sources/$name/${version%.*}/

est identique à

http://ftp.gnome.org/pub/gnome/sources/$name/2.6/

puisque la variable version=2.6.4

Exemple pratique d'une recette

Le fichier xfce4-libutil/Pkgfile

description="libxfce4util, base library for Xfce"
url="http://docs.xfce.org/"

maintainer="git.xfce.org/xfce/xfce4-libutils"
packager="tnut "
contributors="Tyrry, Geantbrun"

makedepends=(glib intltool)

name=xfce4-libutil
version=4.8.2
release=1

_name=libxfce4util
source=(http://archive.xfce.org/src/xfce/${_name}/${version%.*}/${_name}-$version.tar.bz2)

build() {
cd ${_name}-$version
./configure --prefix=/usr \
--disable-static
make
make DESTDIR=$PKG install
}

Si vous souhaitez que le serveur de construction puisse construire le paquet sans soucis, il est important de mentionner toutes les dépendances nécéssaires à la compilation de votre paquet, et ce en partant toujours d'une NuTyX de base. En effet le serveur construira toujours le paquet en partant de la même base.

La ligne makedepends=(..) est utilisée à cet effet, elle définie donc les dépendances nécéssaires à la compilation du paquet. On y indique les dépendances nécéssaires séparées par un espace.Laughing.

Conclusion

Vous pouvez maintenant essayer de contruire votre premier paquet