Maniatux's Blog

Welcome to the internet

Compilation et déploiement de logiciels sur NetBSD

Rédigé par Xavier - -

Sous NetBSD il y a deux moyens d'installer un logiciel: le compiler grâce à pkgsrc, ou le télécharger depuis un dépôt. L'utilisation des dépôts est un réflexe de Linuxien, et pkgsrc est tellement puissant que nous avons tout intérêt à l'utiliser. Mais si votre machine est un serveur, vous ne pourrez compiler vos applications dessus (perte d'espace disque, chute des performances, sécurité...)

Il est heureusement possible de le faire sur une machine dédiée, et de les déployer sous forme de paquets à votre parc informatique.

Installation de NetBSD sur le serveur de déploiement

Vous devez installer une version de NetBSD de la même architecture que votre machine cible. Il n'est actuellement pas possible de cross-compiler sur pkgsrc. Donc si votre machine cible tourne sur NetBSD amd64, installez votre serveur de déploiement en amd64 aussi.

Demandez à l'installeur une sélection personnalisée des éléments (sets) et ajoutez les outils de développement.

Par la suite il n'y a aucune option particulière à configurer pour l'installation. N'oubliez pas de configurer le réseau, vous pouvez vous aider de mon article sur le SMTP pour cela.

Installation de pkgsrc sur le serveur de déploiement

La documentation de pkgsrc nous propose plusieurs méthodes pour l'installer. CVS, FTP, CDROM... personnellement j'aime la méthode par FTP.

# cd /root
# ftp ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2011Q2/pkgsrc.tar.gz
# tar -xzf pkgsrc.tar.gz -C /usr
# rm pkgsrc.tar.gz

Note: L'url citée en code est valide à l'heure actuelle, pensez à bien lire la documentation pour trouver la bonne lorsque vous lirez cet article.

Exemple de compilation d'une application sur le serveur de déploiement

Pour l'exemple nous allons compiler nginx, un serveur HTTP de plus en plus utilisé et créer des paquets à déployer.

# cd /usr/pkgsrc/www/nginx
# make show-options

C'est là tout l'intérêt de pkgsrc : la possibilité de compiler nos applications à la carte. Par exemple si je souhaite avoir le support de SSL et ipv6:

# vi /etc/mk.conf
PKG_OPTIONS.nginx=inet6 ssl

Bon elles étaient déjà sélectionnées par défaut, mais c'est pour l'exemple. Ensuite lancez la compilation:

# make
# make package

Les packages ont été créés dans /usr/pkgsrc/packages.

Configuration du service FTP sur le serveur de déploiement

Pour que les machines de votre parc informatique puissent venir piocher les paquets sur notre serveur, nous allons configurer le daemon FTP. NetBSD en intègre un de base, il faut juste le configurer pour l'accès anonyme.

Un login anonyme fait appel à l'utilisateur ftp, qui n'existe pas par défaut. Nous devons donc le créer, et ajouter des options pour lui créer un home (-m) et lui interdire d'utiliser un shell (-s).

# useradd -m -s /sbin/nologin ftp

Ajoutez le daemon FTP à votre rc.conf pour l'autoriser à démarrer:

# vi /etc/rc.conf
ftpd=YES

Vous pouvez maintenant le lancer:

# /etc/rc.d/ftpd start

Vous pouvez tester la connexion en anonymous depuis un autre ordinateur avec Filezilla par exemple. Vous arrivez dans le répertoire /home/ftp mais vous le voyez comme la racine du serveur (il y a donc un chroot).

Maintenant nous devons faire en sorte que nos packages soient accessibles par FTP. Alors il y a plusieurs solutions, vous pouvez faire un lien symbolique entre vos répertoires, mais vous allez devoir jongler entre les permissions ce qui est assez pénible. Personnellement je préfère faire une copie des paquets dans /home/ftp à l'aide d'un script qui automatise tout ça. Ça marche tant que vous ne compilez pas l'intégralité de pkgsrc.

# cd /home/ftp
# mkdir i386
# cd /root
# vi update_pkg

Et voici le contenu de mon script:

#!/bin/sh
cp -R /usr/pkgsrc/packages/* /home/ftp/i386
chown -R ftp:users /home/ftp/i386
chmod -R 555 /home/ftp/i386

Enregistrez et rendez le script exécutable avec un chmod +x puis lancez-le:

# chmod +x update_pkg
./update_pkg

Reconnectez vous à l'aide de Filezilla, vous pouvez maintenant voir vos paquets!

Déploiement des packages

Sur la machine cible (en l’occurrence le serveur de faible puissance) il n'y a pratiquement rien à faire, il faut juste ajouter votre source de packages.

# PATH="/usr/pkg/sbin:$PATH"
# PKG_PATH="ftp://192.168.56.20/i386/All"
# export PATH PKG_PATH
# pkg_add nginx

Classé dans : Sysadmin - Mots clés : aucun