2009-02-12 13 views
56

Używam hostowanego komputera z systemem Linux, więc nie mam uprawnień do napisania do katalogu /usr/lib.Jak zainstalować moduł CPAN w lokalnym katalogu?

Kiedy próbuję zainstalować moduł CPAN wykonując zwykle:

perl Makefile.PL 
make test 
make install 

Ten moduł jest wyodrębnione do folderu blib/lib/. Zachowałem use blib/lib/ModuleName, ale nadal kompilator mówi moduł nie może być znaleziony . Próbowałem skopiować plik .pm do lokalnego katalogu i zachowałem require ModuleName, ale nadal daje mi to błąd.

Jak mogę zainstalować moduł w innym katalogu i używać go?

+1

W ogóle, należy podać informację o błędzie. "Niektóre błędy" niewiele pomagają. – jrockway

+5

możliwy duplikat [Jak mogę użyć nowego modułu Perla bez uprawnień instalacyjnych?] (Http://stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module- bez -instaluj -permissions) – daxim

+0

WAŻNE ... niektóre moduły używają Build.PL zamiast Makefile.PL (lub zawijają je jednym lub drugim), w niektórych przypadkach (np. podczas testów), instalując z/do ścieżki ze spacjami Zmyli MANIFEST i sprawi, że testy się nie powiedzie, zwykle dzieje się tak tylko wtedy, gdy ustawiono RELEASE_TESTING, więc upewnij się, że nie ma go w twoim komputerze. Jeśli występują błędy typu MANIFEST, to prawdopodobnie czają się inni, trzymajcie się ścieżek, które nie mają białych znaków (spacja, tabulacja, unispace itp.). – osirisgothra

Odpowiedz

32

miałem podobny problem, gdzie nie mogę nawet zainstalować lokalny :: lib

stworzyłem instalator że zainstalowany moduł gdzieś względem .pl plików

Instalator idzie tak:

perl Makefile.PL PREFIX=./modulos 
make 
make install 

Następnie w pliku .pl że wymaga modułu, który jest w ./

use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path 
use module::name; 

Pozostałe pliki (makefile.pl, module.pm, etc) nie wymagają żadnych zmian.

można nazwać plik .pl z zaledwie

perl file.pl 
+13

Nie ma powodu, aby modyfikować swój skrypt - ustaw PERL5LIB zamiast używając 'use lib'. local :: lib dba o to za Ciebie - postępuj zgodnie z jego instrukcjami i powinno być dobrze. – jrockway

+9

użyj INSTALL_BASE zamiast PREFIX. –

+0

perl Makefile.PL INSTALL_BASE =/home/irraju/PadWalker dał mi ten błąd "" INSTALL_BASE "nie jest znaną nazwą parametru MakeMaker." Nawet opcja PREFIX dała mi taką samą – Ram

19

local::lib pomoże. Przekona to "make install" (i "Build install") do zainstalowania w katalogu, do którego możesz pisać, i powie perl jak dostać się do tych modułów.

Ogólnie rzecz biorąc, jeśli chcesz użyć modułu znajdującego się w katalogu blib /, powinieneś powiedzieć: perl -Mblib ..., gdzie ... to sposób normalnego wywoływania skryptu.

+0

Ja ** naprawdę polecam używanie local :: lib. Dba o wszystkie drobne szczegóły. – melo

+0

Niestety, podczas próby zainstalowania nie udało się przejść testu "make test". – reinierpost

59

innych odpowiedzi już na Stackoverflow:

Od perlfaq8:


How do I keep my own module/library directory?

Podczas tworzenia modułów, powiedz Perl gdzie zainstalować moduły.

Na dystrybucjach opartych Makefile.PL, należy wybrać opcję INSTALL_BASE podczas generowania Makefile:

perl Makefile.PL INSTALL_BASE=/mydir/perl 

Można ustawić to w konfiguracji CPAN.pm więc moduły automatycznie zainstalować w swoim prywatnym katalogu biblioteki podczas korzystania z CPAN.pm shell:

% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

Na dystrybucjach opartych Build.PL, należy wybrać opcję --install_base:

perl Build.PL --install_base /mydir/perl 

można skonfigurować tak, aby automatycznie CPAN.pm skorzystać z tej opcji TOO:

% cpan 
cpan> o conf mbuildpl_arg '--install_base /mydir/perl' 
cpan> o conf commit 
+1

Myślę, że powinieneś dodać cytaty: 'o conf mbuild_arg '--install_base/mydir/perl'' – Amro

+4

Myślę, że osoby, które znajdują problemy, powinny edytować post. :) –

+0

Brian, jedno pytanie - podany link informuje, że parametr '--install_base' jest przekazywany do' perl Build.PL'; ale 'mbuild_arg' dotyczy argumentów do'./Build'. Może masz na myśli 'mbuildpl_arg'? Lub jest błąd w perlfaq? – skaurus

3

Gorąco polecam Perlbrew. Pozwala uruchamiać wiele wersji Perla, instalować pakiety, hakować wewnętrzne elementy Perla, jeśli chcesz, wszystkie zwykłe uprawnienia użytkownika.

+0

Czy łącze jest martwe? – ceving

2

Na dystrybucjach opartych Makefile.PL, należy wybrać opcję INSTALL_BASE podczas generowania Makefile:

perl Makefile.PL INSTALL_BASE=/mydir/perl 
Powiązane problemy