2010-06-03 9 views
2

Après avoir déménagé mon site mod_perl de Linux d'hébergement à FreeBSD, j'ai cette erreur dans le fichier journal:problème avec le module POSIX

Votre fournisseur n'a pas défini SIGRTMIN macro Posix, utilisé à ../. ./lib/POSIX.pm (autosplit en ../../lib/auto/POSIX/SigRt/_init.al) ligne 993 \ n

Le script importe et utilise juste POSIX certaines fonctions (ceil, etc)

Comment puis-je résoudre ce problème?

Répondre

3

Essayez importing que peu (ou pas) des routines à partir du module:

use POSIX(); 
my $n = POSIX::ceil(1.1); 

Cette habitude de travailler pour moi dans les mêmes circonstances, je ne sais pas pourquoi :)

+0

Cela a fonctionné, merci. – planetp

4

FreeBSD est principalementPOSIX-compliant. Par exemple, il doesn't defineSIGRTMIN et SIGRTMAX dans son signal.h. Nous sommes mis en garde contre cela dans POSIX's documentation:

En outre, certains fournisseurs de mal se réclamation 1003,1 conformité, mais en fait sont pas: ils ne passeront pas les SICP (Posix conformité des suites de tests). Par exemple, un fournisseur ne peut pas définir EDEADLK, ou la sémantique des valeurs errno définies par open (2) peut ne pas être tout à fait raison. Perl n'essaie pas de vérifier la conformité POSIX en . Cela signifie vous pouvez actuellement dire avec succès "utiliser POSIX", et puis plus tard dans votre programme vous trouvez que votre fournisseur a été laxiste et il n'y a pas de macro ICANON utilisable après tout. Cela pourrait être interprété comme étant un bug.

solution de eugene y pourrait fonctionner car elle empêche l'exportation automatique dans votre espace de noms, mais assurez-vous de préfixe des appels à ceil et ainsi de suite avec POSIX::.