Fri Jul 21 07:07:38 2023 UTC

Mise en place de la commande "mybld"

Important

Toutes les commandes se tapent dans votre compte personnel. Autrement dit, il ne faut pas utiliser le compte root.

Une fois le projet GIT récupéré, toutes les manipulations DOIVENT se faire depuis le dosssier contenant votre projet GIT.

Mise en place

Les outils (paquets à installer)

On part du principe que votre NuTyX est vierge de tout paquet de développement. On commence donc par installer les utilitaires:
get rsync git

Les recettes du projet GIT

On commence par cloner le projet GIT contenant toutes les recettes des paquets 64 bits de la NuTyX:
git clone -b <branch> https://github.com/NuTyX/packages-x86_64.git <branch>
La variable <branch> peut prendre les valeurs testing ou rolling.

Une fois le projet GIT en place, on se déplace à la racine de celui-ci, en effet la commande mybld utilise des information du GIT (VERSION, USERNAME, EMAIL, etc).

Aller à la racine du projet

Le projet GIT est cloné. Il faut maintenant se rendre à la racine de celui-ci.
cd  <branch>
Désormais toutes les commandes qui suivent doivent être effectuées depuis le dossier actuel.

Configurer son nom et email

Cette étape est nécessaire si vous souhaitez partager vos nouveaux paquets, en effet, la commande mybld -n utilise cette information lors de la création de votre nouveau paquet.
git config --global user.name "François Pignon"
git config --global user.email "francois@nutyx.org"

Les dossiers de fonctionement

La commande mybld utilise un ensemble de dossiers pour son fonctionnement, il faut donc les créer via la commande:
mybld -I

Vous pouvez ajuster l'emplacement des dossiers de fonctionnement dans le fichier de configuration ~/.mybld via les variables ROOT, ROOTMOUNT et VERSION.

Collections disponibles

Choisissez la collection sur laquelle vous souhaitez travailler.

En fonction de la collection choisie dans la colonne de gauche, vous récupérez les collections spécifiées dans la colonne de droite.

Liste des collections.
base base
cli base cli
gui base cli gui
cli-extra base cli cli-extra
gui-extra base cli gui gui-extra

Les collections en binaires

En fonction de la collections choisie, lancer la commande:
mybld -s nom_de_collection
afin de récupérer la (les) collection(s) nécessaire(s).

Par exemple, pour une utilisation de la collection gui, lancer la commande:

for i in base cli gui; do mybld -s $i;done

Il est possible de spécifier une adresse et une version personnalisées dans le fichier de configuration ~/.mybld via les variables URL et VERSION.

Configuration de cards

Par défaut, la configuration de cards spécifie les collections disponibles sur le serveur officiel de NuTyX. Afin de pouvoir installer, conserver ou supprimer les futures paquets personnels, il faut spécifier dans le fichier /etc/cards.conf la provenance de chaque collection de manière indépendante.

Dans la configuration ci-dessous, les paquets personnels seront stockés dans le dossier: /home/tnut/www/x86_64/<nom_de_la_branche>/<nom_de_la_collection>

Les collections officielles restent sur le serveur distant.

Le contenu du fichier /etc/cards.conf après modifications:

# No global url should be defined
# We need to specify an url only for remote repositories collection
#
# Default global server URL 
# url http://downloads.nutyx.org
#
# My own repository (this repository) without specified url 
dir /home/tnut/www/x86_64/<nom_de_la_branche>/<nom_de_la_collection>
#
## For all the graphical applications and desktops
dir /var/lib/pkg/depot/gui-extra|http://downloads.nutyx.org
#
## For a minimal graphical interface
dir /var/lib/pkg/depot/gui|http://downloads.nutyx.org
#
## For all the console applications
dir /var/lib/pkg/depot/cli-extra|http://downloads.nutyx.org
#
## For a minimal console interface
dir /var/lib/pkg/depot/cli|http://downloads.nutyx.org
#
## Chroot system without reboot possibilities for a chroot
dir /var/lib/pkg/depot/base|http://downloads.nutyx.org
#
## Normaly you want to keep base and
base /var/lib/pkg/depot/base
#
#
## If you want to keep more collections remove comments below
# Adjust to your needs
#
# base /var/lib/pkg/depot/cli
# base /var/lib/pkg/depot/cli-extra
# base /var/lib/pkg/depot//gui
# base /var/lib/pkg/depot/gui-extra
# base /var/lib/pkg/depot/...

Utiliser la commande

(Re)Compiler un paquet

mybld nom_du_paquet
La compilation commence immédiatement.

Incrementer la version et recompiler un paquet

mybld -i nom_du_paquet
Après confirmation, la compilation commence immédiatement.

Mode avancée

Supposons que vous ayez un paquet qui ne veut pas se compiler correctement. Dans ce cas le meilleur moyen est d'utiliser l'option -p pour pause.

Pour illustrer l'option --pause, je vais essayer de compiler le paquet nftables.

Entrer dans la chroot

mybld -p nftables
You are now in chroot.
Type exit when finish.

 Good luck !!!
 

Une nouvelle commande est née

En fonction de la collection dans laquelle se trouve le paquet que vous souhaitez construire, une nouvelle commande appelée <collection_name> est disponible.

Dans cette exemple, le paquet nftables appartient à la collection cli-extra on peut donc taper la commande:

cli-extra -h
usage: cli-extra [option]
options:
   -a,   --all                 will build all the ports of the 'cli-extra' collection in the right order
   -l,   --list                will list all the ports of the 'cli-extra' collection in the right order
  -ru,   --remove-url          remove the URL part in /etc/cards.conf file for the 'cli-extra' collection
  -cp,   --check-ports         check if new ports are available
  -cb,   --check-binaries      check if binaries are uptodate
   -d,   --dry                 check if binaries are different then the ports but dont build anything
   -s,   --sync                synchronise binaries from rsync server location
   -c,   --config              printout the configuration
   -h,   --help                print help and exit
   -v,   --version             print version and exit
   -u,   --usage               print the recommended way of using the 'cli-extra' script

Où est quoi ?

Voilà une bonne question.
Emplacements de:
DEPOT /DEPOT
cli-extra collection DEPOT /DEPOT/cli-extra
nftables Pkgfile /DEPOT/cli-extra/nftables/Pkgfile
Sources files /sources
Compilation logs /LOGS
working directory /tmp/work/src and /tmp/work/pkg

Continuer avec la compilation

Essayons maintenant de compiler le paquet nftables. Tapez simplement:
cli-extra nftables
La compilation commence normalement.

Si une erreur survient, nous serons simplement à nouvau au prompt:

checking for LIBMNL... yes
checking for LIBNFTNL... no
configure: error: Package requirements (libnftnl >= 1.1.8) were not met:

No package 'libnftnl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBNFTNL_CFLAGS
and LIBNFTNL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
=======> ERROR: Building '/DEPOT/cli-extra/nftables/nftables1608914972x86_64.cards.tar.xz' failed.
cards 2.4.124 create: could not parse Pkgfile: While running 'build()'

Corriger l'erreur

On peut maintenant corriger l'erreur en ajustant les dépendances:
cards install libnftnl libnftnl.devel
Nous allons donc dans le dossier de travail et essayons à nouveau:
cd /tmp/work/src/nftables-0.9.7
 ./configure --prefix=/usr \
        --sysconfdir=/etc/nftables \
        --mandir=/usr/share/man \
        --with-json
Déjà bien mieux.
nft configuration:
  cli support:			readline
  enable debugging symbols:	yes
  use mini-gmp:			no
  enable man page:              yes
  libxtables support:		no
  json output support:          yes
  enable Python:		yes (with /usr/bin/python)
On peut maintenant terminer les commandes du Pkgfile:
make
La dernière commande du Pkgfile est:
make DESTDIR=$PKG install
La variable PKG doit être définie sur /tmp/work/pkg:
PKG=/tmp/work/pkg
Il est temps de terminer:
make DESTDIR=$PKG install
install -Dm644 ../nftables.conf "$PKG/etc/nftables/nftables.conf"

Empaqueter

Lorsque toutes les commandes du Pkgfile ont été tapé, on peut alors se rendre dans le dossier du Pkgfile et utiliser la commande pkgmk -po pour finir le paquet:
cd /DEPOT/cli-extra/nftables/
pkgmk -po

Aide

La commande mybld permet toute sorte d'options.

mybld -h

Pensez à (re)lire le manuel disponible pour obternir plus d'information sur les autres options possibles:

man mybld