CPAN tak naprawdę nie instaluje plików. Uruchomi skrypt instalacyjny osadzony w każdej dystrybucji, która następnie wykona właściwą instalację.
Dla rozkładów korzystających ExtUtils::MakeMaker, domyślnie są udokumentowane tutaj: https://metacpan.org/pod/ExtUtils::MakeMaker#make-install (a domyślna wartość INSTALLDIRS
jest site
). Dla Module::Build, patrz https://metacpan.org/pod/Module::Build#INSTALL-PATHS.
Gdy dokumentacja mówi o $Config{foo}
lub %Config
, oznacza to zmienną %Config
dostarczoną przez the Config module. Wartość $Config{foo}
można również sprawdzić, uruchamiając perl -V:foo
.
(Jeśli sądzisz, że to wydaje się niepotrzebnie skomplikowane, masz rację.)
Krótka wersja jest taka, że Perl ma wiele katalogów „System”, z których jeden jest na „miejscu specyficzny” modułów, a zatem stosowany jako domyślny cel instalacji. Masz rację, że jest to pojedynczy katalog (perl install), który nie jest kompatybilny z systemem dla wielu użytkowników: jest wspólny dla wszystkich użytkowników, i potrzebujesz uprawnień root'a do instalacji modułów (i może to spowodować uaktualnienie/nadpisuj moduły z pakietów systemowych, co jest złym pomysłem).
To, co ludzie robią, to konfigurowanie ExtUtils :: MakeMaker, Module :: Build, itp. W celu zainstalowania w katalogu domowym użytkownika. Można to zrobić za pomocą zmiennych środowiskowych. Następnie powiedz perlowi, aby dodać ten katalog do @INC
, aby moduły faktycznie mogły zostać znalezione i załadowane. Odbywa się to za pomocą innej zmiennej środowiskowej, PERL5LIB
. (PERL5LIB
nie ma wpływu na instalację, jest używany wyłącznie do ładowania.)
Wszystkie powyższe elementy są zautomatyzowane i zamknięte w local::lib. (. Lokalny :: lib może być również stosowany do np utworzyć podkatalog per-projekt modułu)
Dokumentacja CPAN mówi:
Od CPAN 1.9463, jeśli nie masz uprawnień do pisania domyślne katalogi biblioteki perl, proces konfiguracji CPAN zapyta cię, czy chcesz bootstrapować local::lib
, co czyni utrzymanie osobistego katalogu biblioteki perl łatwym.
można ominąć cały problem instalując prywatną Perl w katalogu domowym (w tym przypadku katalog „system” jest tylko kolejnym podkatalogu pod $HOME
a tym samym nie są nikomu udostępniane i może być napisanym przez ciebie). Jest to bardzo łatwe z np. perlbrew.
Kolejna uwaga: Właśnie znalazłeś błąd w dokumentacji dla PERL5LIB
. "i bieżący katalog" jest nieaktualny: .
został usunięty z domyślnej listy lokalizacji modułów ze względów bezpieczeństwa.
Oprócz CPAN-repozytorium istnieje również moduł CPAN-the-Perl (który jest używany przez komendę 'cpan'). – melpomene
Czy stół jest skądś pochodził, czy sam to napisał? – simbabque