Tue Sep 19 18:48:37 2017 UTC

Comment construire un paquet ?

Introduction

Nous connaissons les raisons de contribuer, les connaissances requises, les commandes de base à notre disposition, le format minimum d'une recette et enfin quelles sont les recettes existantes.

Il est temps de passer à l'action,de construire et d'installer son premier paquet dans les règles de l'art (de NuTyX) Laughing.

Construire votre premier paquet

Nous allons d'abord voir ensemble comment construire un premier paquet binaire NuTyX au format <MonpaquetDateArch.cards.tar> depuis son code source sans entrer dans les détails de configuration pour l'instant.

Ce paquet fonctionnel pourra être installé et désinstallé dans votre NuTyX grâce à ses outils de gestion de paquets.

Vous aurez besoin des outils cards.devel installés pour compiler celui-ci.

Ce tutoriel simple peut être testé sur votre NuTyX quelle que soit sa configuration.

La recette du paquet choisi est un petit éditeur de texte ne nécessitant aucune dépendance.

[Important] Pour ce paquet, on n'utilisera pas d'environnement isolé aussi appelé chroot. On verra dans un prochain article, comment construire dans cet environnement isolé. Parce que c'est la seule methode qui fonctionnera si l'on doit construire un paquet ayant des dépendances.

Un minimum d'explications

Tous les paquets disponibles sous NuTyX utilisent une recette.

Cette recette (Pkgfile) est rangée dans un dossier au nom du paquet qui est lui-même rangé dans une collection.

Les Collections se trouvent (par défaut) dans le dossier /usr/ports.

La recette

On crée les répertoires nécessaires: la collection "perso" et le dossier du paquet.

sudo mkdir -p /usr/ports/perso/nano
echo '
description="Command line Text Editor"
maintainer="Nano team"
packager="François Perrin francois dot perrin at myworld dot com"
url="http://www.nano-editor.org/"

name=nano
version=2.7.2
release=1

source=(${url}/dist/v${version:0:3}/$name-$version.tar.xz)

build() {
cd $name-$version
./configure --prefix=/usr \
--sysconfdir=/etc \
--enable-utf8 \
--enable-color \
--enable-multibuffer \
--enable-nanorc \
--docdir=/usr/share/doc/$name-$version
make
make DESTDIR=$PKG install
rm $PKG/usr/share/info/dir
}' > /usr/ports/perso/nano/Pkgfile

Installation des paquets de développement

get cards.devel

Compilation du paquet

cd /usr/ports/perso/nano
sudo pkgmk -d

Installation du paquet

sudo pkgadd nano1*

Les différents fichiers de configuration

Le fichier /etc/cards.conf

Ce fichier est toujours présent dans une installation NuTyX.

C'est un peu "la colonne vertébrale" de votre NuTyX.

C'est le fichier /etc/cards.conf qui reflètera votre façon d'utiliser NuTyX.

Toutes les collections que vous souhaitez utiliser dans votre NuTyX peuvent y être spécifiées sous 2 formes possibles:

  1. exemple de configuration de la collection cli en binaires depuis un serveur de dépot distant
    dir /var/lib/pkg/depot/cli|http://downloads.nutyx.org
  2. exemple de configuration de la collection cli en ports locals
    dir /usr/ports/cli

Il est également responsable de la liste des paquets que vous souhaitez conserver lorsque vous exécutez la commande:

cards base -r
Et enfin il spécifie quelles locales seront installées

Vous trouverez plus d'informations en consultant le manuel de cards.conf

man cards.conf

Le fichier /etc/pkgmk.conf

Ce fichier est utilisé lors de la compilation de nouveaux ports. Il spécifie toutes les variables reconnues par la commande pkgmk

Veuillez prendre note des différentes variables qui sont à votre disposition en consultant le manuel de pkgmk.conf

man pkgmk.conf

Exemple de fichier /etc/pkgmk.conf

export CFLAGS="-O2 -pipe"
export CXXFLAGS="${CFLAGS}"

case ${PKGMK_ARCH} in
        "x86_64")
		export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)"
                ;;
        "i686")
                export CFLAGS="${CFLAGS} -m32"
                export CXXFLAGS="${CXXFLAGS} -m32"
                export LDFLAGS="${LDFLAGS} -m32"
                ;;
        *)
                echo "Unknown architecture selected! Exiting."
                exit 1
                ;;
esac
# Those settings are typically set for packaging
# without sub packages and only french locale
# They are also the default ones
#
# PKGMK_GROUPS=()
# PKGMK_LOCALES=(fr)
# PKGMK_COMPRESS_PACKAGE="no"
# PKGMK_CLEAN="yes"
# PKGMK_IGNORE_FOOTPRINT="yes"
# PKGMK_KEEP_SOURCES="no"
# PKGMK_SOURCE_DIR="$PWD"
# PKGMK_WORK_DIR="$PWD/work"
# PKGMK_IGNORE_REPO="yes"
# PKGMK_IGNORE_COLLECTION="yes"
# PKGMK_IGNORE_RUNTIMEDEPS="yes"

Conclusion

Nous voilà prêts pour construire nos paquets dans une chroot.