2009-02-26 6 views
5

Chcę ustawić Perl 5.10 w moim katalogu domowym oprócz starożytnego Perla aktualnie na komputerze w/usr/local. Nie jestem super-użytkownikiem tego komputera.Czy mogę zainstalować wstępnie skonfigurowany pakiet binarny Perl w moim katalogu domowym?

Znalazłem wymagany pakiet binarny 5.10 HPUX perl i wydaje się, że działa, ale z jakiegoś powodu wydaje się zakładać, że działa w/usr/local (o czym świadczy komunikat o błędzie @INC). Czy oprócz PERLLIB jest jakaś inna zmienna, na przykład PERLHOME lub coś, co muszę ustawić, aby Perl nie szukał niczego w katalogach/usr/local?

P.S. Widziałem, advice online, aby skompilować i ustawić katalog w kroku ./Configure, ale miałem trudności z kompilowaniem rzeczy na tym starym pudełku, więc wolałbym użyć wstępnie skompilowanego Perla, ponieważ wydaje się, że działa.


AKTUALIZACJA - Leon odpowiedział to, więc w zasadzie nie jest możliwe uruchomienie perl binarny poprawnie z domu reż chyba że został opracowany z myślą o tym

Odpowiedz

4

To zależy od tego, czy Twój perl binarny jest relokowalny. Jest to opcja czasu kompilacji. Jaki jest wynik tego polecenia? Czy to jest określone, czy nie?

perl -V:userelocatableinc 
+0

perl -V: userelocatableinc userelocatableinc = 'undef'; –

+0

Wtedy nie masz szczęścia. Będziesz musiał to sam skompilować. –

+0

Czy to oznacza, że ​​nie zadziała? Więc twoje odpowiedzi są zasadniczo takie, że nie ma sposobu na umieszczenie tego pliku binarnego w moim katalogu domowym, ponieważ ta zmienna nie została ustawiona, gdy ktoś ją skompilował. Powiedzmy, że mieli, jak by to wtedy działało? –

-1

można wskazać dowolną ścieżkę interpretera chcesz w pierwszej linii:

!#/my/local/perl 

A jeśli nie szukasz przenoszenia całej maszyny, można ustawić ręcznie @ INC w skrypcie. Myślę, że jest sposób na wydobycie go z env, co może być bardziej przenośne.

+0

W pliku binarnym istnieje kilka domyślnie oznaczonych ścieżek, które nie zostały skompilowane z opcjami wymienionymi powyżej. –

4

Nie spodoba ci się ta odpowiedź.

Perl przechowuje @INC jako ciągi w swoich plikach binarnych. Przed wprowadzeniem userelocatableinc technika przenoszenia Perla polegała na wyszukiwaniu i zamianie plików binarnych, a także na zmianie ich w Config.pm. W ten sposób ActiveState wysłał relokowalny Perl.

Łańcuchy muszą pozostać takie same jak przedtem, wypełniając dodatkowe miejsce bajtami zerowymi. ActiveState obejmie ten problem, konfigurując Perl z prefiksem takim jak "/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" lub czymś podobnym. To również sprawiło, że naprawdę jednoznaczne jest znalezienie w pliku binarnym. Nie masz takiego szczęścia, więc będzie działać tylko wtedy, gdy bieżące ścieżki są krótsze niż ścieżki, które chcesz zastąpić.

Ale to zbyt skomplikowane. Po prostu skompiluj Perla dla siebie używając źródła HP/UX lub po prostu pobierz zwykłe źródło z perl.org. Perl ma dedykowanego programistę HP/UX, więc wszystko powinno pójść gładko.

+0

Dzięki za dodatkowe informacje o activestate itp., Więc skompilowałem perl od zera i działa, ale wciąż mam problemy z PAR @INC, więc wkrótce pojawi się nowe pytanie. Dzięki –