Come reinstallare Mac OS X costruito in Perl su Mountain Lion?

8

Mi sono aggiornato a Mountain Lion 4 giorni fa e poi mi sono reso conto che i miei script perl non funzionavano più. Così ho installato ActivePerl 5.14 (la versione più recente) perché pensavo che perl fosse stato cancellato. Dopo aver installato ActivePerl, i miei programmi non funzionavano ancora:

Warning message:
running command 'perl calc.pl' had status 2 
Can't locate Excel/Writer/XLSX.pm in @INC (@INC contains:    
/Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 
/Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 
/Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level 
/System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-
2level /System/Library/Perl/Extras/5.12 .) at test.pl line 3.
BEGIN failed--compilation aborted at calc.pl line 3.

Nel terminale quando digito perl -v mostra che utilizza ActivePerl appena installato. Ho usato sudo clan - > installare Excel :: Writer :: XLSX per installare il modulo mancante. Tuttavia, non lo installa per 5.12 ma per ActivePerl 5.14.

Le giunzioni di Perl per Mac OS X da installare qui:

bash-3.2$ ls /Library/Perl/
5.10    5.12    Updates
bash-3.2$ ls /System/Library/Perl/
5.10    5.12    Extras  lib
bash-3.2$

C'è anche una versione qui:

bash-3.2$ ls /opt/local/lib/perl5/
5.12.4      site_perl   vendor_perl

Ho pensato che fosse meglio eliminare ActivePerl eseguendo il suo programma di disinstallazione. L'ho fatto e ho rimosso anche il 5.12.4 e la directory site_perl in / opt / local / lib / perl5.

Quindi volevo reinstallare il modulo XLSX :: Writer usando cpan. Ho pensato che è quindi installato nella vecchia directory di Perl. Tuttavia, l'esecuzione di cpan ora genera il seguente errore:

bash-3.2$ sudo cpan
Can't locate strict.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 
/opt/local/lib/perl5/vendor_perl/5.12.3/darwin-multi-2level 
/opt/local/lib/perl5/vendor_perl/5.12.3 /opt/local/lib/perl5/vendor_perl .) at 
/opt/local/bin/cpan line 5.
BEGIN failed--compilation aborted at /opt/local/bin/cpan line 5.

Non so cosa fare ora. Penso che il meglio che posso fare è probabilmente reinstallare il Perl di Mac OS X, come farlo?

    
posta user26392 31.07.2012 - 12:11
fonte

2 risposte

5

Ho trovato su un altro sito web il seguente comando

$ sudo perl -MCPAN -e 'CPAN :: Shell- > notest (install = > CPAN :: Shell- > r)'

Questo ha aggiornato tutti i miei moduli perl e tutto è tornato alla normalità. Non sei sicuro del motivo o di cosa, ma non preoccuparti che funzioni adesso.

    
risposta data 01.08.2012 - 17:19
fonte
0

Per vari e svariati motivi, l'aggiornamento del sistema operativo richiede uno per aggiornare / reinstallare MacPorts separatamente. Gli sviluppatori hanno in realtà creato una bella pagina Migrazione che descrive in dettaglio il processo necessario per ripristinare il funzionamento del vostro ambiente portuale dopo l'aggiornamento del SO .

Riepilogati, i passaggi che devi seguire sono:

  1. Scarica e installa il nuovo Xcode.
  2. Assicurarsi che gli strumenti della riga di comando (gcc, make, ecc.) siano installati. Dall'interno dell'applicazione Xcode vai su Preferenze- > Scarica e installali.
  3. Scarica l' programma di installazione MacPorts di scelta per la versione del tuo sistema operativo.
  4. Installa.
  5. Apri il tuo terminale di scelta.
  6. Esegui il comando port -qv installed > myports.txt . Questo preleva una copia di tutte le porte installate.
  7. Disinstalla tutte le porte: sudo port -f uninstall installed
  8. Metti in ordine la tua area di gioco: sudo port clean all
  9. Passa attraverso il file myports.txt e reinstalla i pacchetti che desideri realmente.

In realtà ho accelerato il mio processo di reinstallazione modificando il file myports.txt , in modo tale che contenesse i nomi (e solo i nomi) dei pacchetti che volevo con un pacchetto per riga, ed eseguendo il seguente comando

cat myports.txt | xargs -n1 port install

Ciò che fa è passare attraverso quel file ed eseguire il comando port install line per ogni riga nel file. È un uso inutile di cat, ma a chi importa, è più facile da leggere.

    
risposta data 31.07.2012 - 15:48
fonte

Leggi altre domande sui tag