1 votos

10.8 de MacOSX y módulos perl de 32-bit

Acabo de actualizar desde MacOSX 10.6 10.8. Muchos de mis proyectos dependen de Mac::Pegamento, Mac::Carbono y sus secuaces. A pesar de que Mac::Pegamento viene con MacOSX 10.8 perl, parece que no funciona:

[kw|~] perl -ce 'use Mac::Glue'
Can't load '/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle' for module MacPerl: dlopen(/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle, 1): no suitable image found.  Did find:
    /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle: mach-o, but wrong architecture at /System/Library/Perl/5.12/darwin-thread-multi-2level/DynaLoader.pm line 204.
 at /System/Library/Perl/Extras/5.12/Mac/Glue/Common.pm line 21
Compilation failed in require at /System/Library/Perl/Extras/5.12/Mac/Glue/Common.pm line 21.
BEGIN failed--compilation aborted at /System/Library/Perl/Extras/5.12/Mac/Glue/Common.pm line 21.
Compilation failed in require at /System/Library/Perl/Extras/5.12/Mac/Glue.pm line 7.
BEGIN failed--compilation aborted at /System/Library/Perl/Extras/5.12/Mac/Glue.pm line 7.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Mac::Pegamento es de 32 bits:

[kw|~] lipo -info /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle
Non-fat file: /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle is architecture: i386

/usr/bin/perl dice ser compatible con la arquitectura:

[kw|~] file /usr/bin/perl
/usr/bin/perl: Mach-O universal binary with 2 architectures
/usr/bin/perl (for architecture i386):  Mach-O executable i386
/usr/bin/perl (for architecture x86_64):    Mach-O 64-bit executable x86_64

Estoy corriendo MacOSX 10.8.2, perl 5.12.4.

¿Alguien tiene alguna idea de cómo solucionar este problema? Si MacOSX es de 64 bits, hace que impiden perl de ser compatible con módulos de 32 bits, a pesar de su pretensión de ser compatible con las dos arquitecturas?

1voto

Kevin Walker Puntos 126

He encontrado una solución para el problema: el uso de la MacOSX 'arco' comando de la fuerza de perl para ejecutar como de 32 bits. (Ver también http://stackoverflow.com/questions/2088569/how-do-i-force-python-to-be-32-bit-on-snow-leopard-and-other-32-bit-64-bit-quest .)

[kw|~] arch -32 perl5.12 -ce 'use Mac::Glue'
-e syntax OK

Tenga en cuenta que una de las necesidades de la explícita "perl5.12" y no simplemente "perl", ya que (en MacOSX 10.8) /usr/bin/perl es un script de shell que los delegados a /usr/bin/perl5.12 o /usr/bin/perl5.10.

1voto

Andy Gaskell Puntos 141

En realidad, hay dos otras maneras de hacerlo, si nos referimos a man perlmacosx :

  1. Uso de "defectos":

    % defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes 
    
  2. Utilizar la variable de entorno VERSIONER_PERL_PREFER_32_BIT establece en "true", "si" o 1

Con cada uno, perl -ce 'use Mac::Glue' que recibe:-e syntax OK

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X