Como atualizar o File :: Path no meu Mac OS X como um usuário não root

2

Minha máquina mac é bem antiga (Mac OS X 10.6.8) e tenho uma pergunta sobre como atualizar um módulo perl File::Path .

Eu principalmente compilo meu documento LaTeX usando o latexmk que é basicamente um script perl. Ele requer File::Path versão 2.08, mas eu tenho um desatualizado (versão 2.07_02) na minha máquina. Esta é a mensagem de erro que recebi durante a execução do comando latexmk .

>> latexmk doc.tex
File::Path version 2.08 required--this is only version 2.07_02 at /usr/texbin/latexmk line 129.

Quando eu executei cpan como um usuário não-root e tentei atualizar este pacote executando o comando upgrade File::Path , recebi esta mensagem na tela.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/Library/Perl/Updates/5.10.0/File'
mkdir /Library/Perl/Updates/5.10.0/File: Permission denied at 
  /System/Library/Perl/5.10.0/ExtUtils/Install.pm line 479   
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 at -e line 1
make: *** [pure_perl_install] Error 13
  DLAND/File-Path-2.09.tar.gz
  /usr/bin/make install  -- NOT OK
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Failed during this command:
 DLAND/File-Path-2.09.tar.gz                  : install NO

É possível atualizar um módulo perl como um usuário não-root usando cpan no Mac OS X?

    
por user19906 10.01.2015 / 08:23

1 resposta

2

Você não pode modificar a instalação existente como não-raiz. Mas você pode instalar um módulo CPAN em seu diretório pessoal (ou onde quer que você tenha acesso de escrita) e então carregar aquele módulo preferencialmente (na maioria dos casos. É possível que haja conflitos entre módulos, mas você provavelmente está bem aqui).

Existem instruções para isso através da ferramenta cpan no perlfaq. Mas pode ser um pouco complicado. Usar cpanm é frequentemente recomendado.

link tem instruções detalhadas para instalando cpanm .

Então, quando instalado, você só precisa usá-lo em vez do módulo do sistema. Existem várias maneiras de fazer isso.

Você pode definir o PERL5LIB para o seu diretório local. Como exemplo:

$ export PERL5LIB=~/perl5
$ perl myprog

Se você só precisa fazer isso para um pequeno número de scripts, você pode adicionar o caminho no próprio script:

#!/bin/perl
use lib '/home/me/perl5';
use File::Path;

Qualquer um desses deve ser suficiente para você, mas se você está apenas testando coisas, você também pode adicionar um local ao caminho temporariamente como este

$ perl -I ~/perl5 myprog
    
por 10.01.2015 / 09:17

Tags