Macports irssi & perl5 problemas de instalação

0

Leitor de longa data, pôster da primeira vez. Grande e agradecido agradecimento pelo questionamento coletivo de todos e por responder aqui e no stackoverflow, isso me ajudou bastante ao longo do tempo em que estive aprendendo respostas através desses sites! Desculpas de antemão se eu não pesquisar o suficiente em posts que já existem neste site para descobrir o que eu poderia fazer sobre esse problema, mas achei que gostaria de tentar pelo menos uma vez.

Eu experimentei esse problema ao iniciar minha versão do irssi instalada no macports:

13:25 -!- Irssi: Error in script dispatch:
13:25 Can't locate lib.pm in @INC (@INC contains: 
      /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level 
      /opt/local/lib/perl5/site_perl/5.12.4 
      /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-multi-2level 
      /opt/local/lib/perl5/vendor_perl/5.12.4 
      /opt/local/lib/perl5/5.12.4/darwin-multi-2level 
      /opt/local/lib/perl5/5.12.4 
      /opt/local/lib/perl5/site_perl/5.12.3/darwin-multi-2level 
      /opt/local/lib/perl5/site_perl/5.12.3 /opt/local/lib/perl5/site_perl 
      /opt/local/lib/perl5/vendor_perl .) at (eval 18) line 1.
13:25 BEGIN failed--compilation aborted at (eval 18) line 1.
13:25 

Huh, estranho. Eu olhei para dentro um pouco:

╭─@Ds-MacBook.local /opt/local/lib/perl5  
╰─ find . -name "lib.pm" -ls
14673887           16 -r--r--r--    1 root     admin        6853 25 Jun 23:39 ./5.12.4/darwin-thread-multi-    2level/lib.pm

╭─@Ds-MacBook.local /opt/local/lib/perl5  
╰─ l 5.12.4/darwin-thread-multi-2level 
total 1864
drwxr-xr-x   55 root  admin    1870 28 Jun 19:28 .
drwxr-xr-x  158 root  admin    5372 28 Jun 19:28 ..
-rw-r--r--    1 root  admin  177814 25 Jun 23:39 .packlist
drwxr-xr-x    6 root  admin     204 28 Jun 19:28 B
-r--r--r--    1 root  admin   25714 25 Jun 23:39 B.pm
drwxr-xr-x   64 root  admin    2176 28 Jun 19:28 CORE
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 Compress
-r--r--r--    1 root  admin    3000 25 Jun 23:39 Config.pm
-r--r--r--    1 root  admin  228094 25 Jun 23:39 Config.pod
-r--r--r--    1 root  admin     409 25 Jun 23:39 Config_git.pl
-r--r--r--    1 root  admin   38759 25 Jun 23:39 Config_heavy.pl
-r--r--r--    1 root  admin   21174 25 Jun 23:39 Cwd.pm
-r--r--r--    1 root  admin   63535 25 Jun 23:39 DB_File.pm
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 Data
drwxr-xr-x    5 root  admin     170 28 Jun 19:28 Devel
drwxr-xr-x    4 root  admin     136 28 Jun 19:28 Digest
-r--r--r--    1 root  admin   25185 25 Jun 23:39 DynaLoader.pm
drwxr-xr-x   22 root  admin     748 28 Jun 19:28 Encode
-r--r--r--    1 root  admin   29731 25 Jun 23:39 Encode.pm
-r--r--r--    1 root  admin    6736 25 Jun 23:39 Errno.pm
-r--r--r--    1 root  admin    5445 25 Jun 23:39 Fcntl.pm
drwxr-xr-x    5 root  admin     170 28 Jun 19:28 File
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 Filter
-r--r--r--    1 root  admin    1819 25 Jun 23:39 GDBM_File.pm
drwxr-xr-x    4 root  admin     136 28 Jun 19:28 Hash
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 I18N
drwxr-xr-x   11 root  admin     374 28 Jun 19:28 IO
-r--r--r--    1 root  admin    1404 25 Jun 23:39 IO.pm
drwxr-xr-x    6 root  admin     204 28 Jun 19:28 IPC
drwxr-xr-x    4 root  admin     136 28 Jun 19:28 List
drwxr-xr-x    4 root  admin     136 28 Jun 19:28 MIME
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 Math
-r--r--r--    1 root  admin    2519 25 Jun 23:39 NDBM_File.pm
-r--r--r--    1 root  admin    4208 25 Jun 23:39 O.pm
-r--r--r--    1 root  admin   15563 25 Jun 23:39 Opcode.pm
-r--r--r--    1 root  admin   21011 25 Jun 23:39 POSIX.pm
-r--r--r--    1 root  admin   58962 25 Jun 23:39 POSIX.pod
drwxr-xr-x    5 root  admin     170 28 Jun 19:28 PerlIO
-r--r--r--    1 root  admin    2515 25 Jun 23:39 SDBM_File.pm
drwxr-xr-x    4 root  admin     136 28 Jun 19:28 Scalar
-r--r--r--    1 root  admin   10837 25 Jun 23:39 Socket.pm
-r--r--r--    1 root  admin   41003 25 Jun 23:39 Storable.pm
drwxr-xr-x    4 root  admin     136 28 Jun 19:28 Sys
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 Text
drwxr-xr-x    5 root  admin     170 28 Jun 19:28 Time
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 Unicode
-r--r--r--    1 root  admin   14462 25 Jun 23:39 attributes.pm
drwxr-xr-x   38 root  admin    1292 28 Jun 19:28 auto
-r--r--r--    1 root  admin   19892 25 Jun 23:39 encoding.pm
-r--r--r--    1 root  admin    6853 25 Jun 23:39 lib.pm
-r--r--r--    1 root  admin   11044 25 Jun 23:39 mro.pm
-r--r--r--    1 root  admin     997 25 Jun 23:39 ops.pm
-r--r--r--    1 root  admin   13945 25 Jun 23:39 re.pm
drwxr-xr-x    3 root  admin     102 28 Jun 19:28 threads
-r--r--r--    1 root  admin   33283 25 Jun 23:39 threads.pm

Então, parece-me que as permissões com as quais o perl5 foi instalado para esses módulos se misturaram de alguma forma? Eu não sou realmente um usuário perl além de apreciá-lo para operações massivas de localização / substituição de diretório em arquivos de texto, então eu não tenho muita idéia de como as permissões aqui devem ser, e eu não tenho certeza como proceder para determinar como o macports passou e instalou o perl dessa maneira quando, de outra forma, funcionava sem falhas há anos. Alguém tem alguma recomendação para o caminho mais saudável para corrigir esse problema? Além disso, há alguma razão interessante a respeito de porque o padrão macports para a porta perl5 instala o 5.12.4, e não o 5.16.0, que deve ser explicitamente instalado via a porta perl5.16?

Obrigado novamente!

    
por Dmitri DB 09.07.2012 / 22:53

1 resposta

2

O problema é que as portas Perl foram todas alteradas recentemente para sempre serem construídas com o que costumava ser o +threads variant, porque senão havia problemas severos com os pacotes do módulo Perl: eles instalam em caminhos diferentes dependendo do encadeamento ou não. Perl encadeado, mas não há nenhuma informação de variante disponível para os pacotes de módulo para dizer qual usar. Então, instalar a partir de pacotes, ou alguns casos estranhos a partir da fonte, substituiria módulos de trabalho com módulos instalados no caminho errado. Isso geralmente se manifesta, para aqueles que estavam construindo com +threads (como algumas portas dependentes forçadas), como coisas como XML::Parser desaparecendo (eu geralmente via isso no contexto de algo tentando usar gettext de seu configure ).

Assim, as portas foram alteradas, +threads está sempre ativo, os módulos não desaparecem mais aleatoriamente. Mas nem todo dependente Perl foi marcado como precisando ser reconstruído, então agora alguns deles são - como uma falha única, ao invés de um que continua acontecendo repetidamente - apontando para caminhos ruins. A correção é reconstruí-los manualmente:

sudo port -n -f upgrade irssi

irá reconstruir irssi , por isso está a apontar para os módulos perl corretos agora.

( irssi foi revompido para que o próximo port selfupdate; port upgrade outdated possa reconstruí-lo automaticamente.)

Quanto ao outro: há muitas coisas que dependem do Perl, e não foram testadas com nada mais recente que o 5.12 ainda. Como o material é testado, a versão padrão do Perl será movida para frente. Enquanto isso, você pode solicitar um mais novo usando uma variante, como

sudo port upgrade --enforce-variants perl5 -perl5_12 +perl5_16

Note que algumas coisas que dependem do Perl especificam a versão exata com a qual foram testadas; ou eles forçarão a instalação da versão Perl de trabalho conhecida ou, se tiver sorte, fornecerão uma variante como acima, para que você possa forçar a versão Perl que será usada. ( irssi parece usar qualquer Perl que tenha sido selecionado pela variante da perl5 port.)

    
por 10.07.2012 / 21:09