L'aventure d'un serveur sous NetBSD #4
Rédigé par Xavier - -
J'ai un problème récurent avec pkgsrc. Pour bien comprendre le fonctionnement il faut savoir que NetBSD lui-même ne fourni que peu de logiciels. Un daemon SSH, FTP, HTTP... et pour le reste il faut aller piocher dans pkgsrc, l'équivalent des ports de FreeBSD ou de emerge sur Gentoo. Un ensemble de scripts qui va chercher les sources d'un logiciel et les compile ainsi que ses dépendances.
L'ennui est que par deux fois déjà j'ai été confronté à des logiciels qui ne marchent pas. Prenons tout d'abord prosody. La compilation et installation fonctionnent mais le logiciel ne se lance pas, l'erreur suivante s'affiche :
# prosodyctl start ************************** Prosody was unable to find util.encodings This package can be obtained in the following ways: Windows: Make sure you have encodings.dll from the Prosody distribution in util/ GNU/Linux: Run './configure' and 'make' in the Prosody source directory to build util/encodings.so util.encodings is required for Prosody to run, so we will now exit. More help can be found on our website, at http://prosody.im/doc/depends **************************
La solution est d'ajouter le préfixe LD_LIBRARY_PATH indiquant l'emplacement des librairies :
# LD_LIBRARY_PATH="/usr/pkg/lib" prosodyctl start
Et puisqu'il n'y a pas de script rc.d pour lancer Prosody, en voici un. Il n'est sûrement pas très propre ou pas parfait mais il fonctionne. Il est inspiré de celui fourni sur FreeBSD :
#!/bin/sh # # Prosody XMPP Server init script # # PROVIDE: prosody # REQUIRE: LOGIN $_rc_subr_loaded . /etc/rc.subr name="prosody" pidfile="/var/run/prosody.pid" command="/usr/pkg/bin/prosodyctl" load_rc_config $name prosody=${prosody_enable-"NO"} extra_comands="status" start_cmd="prosody_cmd start" stop_cmd="prosody_cmd stop" restart_cmd="$stop_cmd; $start_cmd" status_cmd="prosody_cmd status" prosody_cmd() { if ! /var/run/prosody.pid -f then touch /var/run/prosody.pid && chown prosody:wheel /var/run/prosody.pid LD_LIBRARY_PATH="/usr/pkg/lib" /usr/pkg/bin/prosodyctl $1 else LD_LIBRARY_PATH="/usr/pkg/lib" /usr/pkg/bin/prosodyctl $1 fi } run_rc_command "$1"
Puis ensuite :
# /etc/rc.d/prosody start
J'essaie maintenant de compiler Xen 4.1 mais ça ne passe pas. Il y a une petite modification à faire dans le Makefile pour pouvoir y arriver. Mais les étapes suivantes posent aussi des problèmes. Si je trouve la solution j'écrirais un article pour la décrire. Je viens de m'inscrire à la mailing list des bugs de pkgsrc et lorsqu'elle sera validé je soumettrai des rapports de bugs.
pkgsrc n'est donc pas fiable à 100%. Il y a des logiciels qui ne compilent pas ou ne se lancent pas.