2015-09-22 22 views
9

Używam perlbrew do zarządzania środowiskiem Perl. Po zainstalowaniu perlbrew po raz pierwszy, zgodnie z dokumentacją, wszystko zostało zainstalowane na ~/perl5/perlbrew, co teraz uważam za niepożądane.Jak przenieść plik PERLBREW_ROOT do innego katalogu?

Państwa dokumentacja:

W katalogu ~/perl5/perlbrew będzie zawierał wszystkie zainstalować perla wykonywalne, biblioteki, dokumentacje, lib site_libs. W dokumentacji ten katalog jest określany jako "root perlbrew". Jeśli trzeba ustawić go gdzieś indziej, bo, powiedzmy, w domu ma ograniczony kontyngent, można to zrobić poprzez ustawienie zmiennej środowiskowej PERLBREW_ROOT przed uruchomieniem instalatora:

export PERLBREW_ROOT=/opt/perl5/perlbrew 
curl -kL http://install.perlbrew.pl | bash 

Pytanie: Jak mogę przenieść PERLBREW_ROOT katalog ma być /opt/perl5/perlbrew zamiast ~/perl5/perlbrew?

+0

Nie testowałem tego, ale ponieważ wszystkie informacje dotyczące perlbrew są przechowywane w tym pojedynczym katalogu '~/perl5'. Nie widzę żadnego powodu, dla którego nie można zaktualizować 'PERLBREW_ROOT', aby wskazywało'/opt/perl5', a następnie 'mv ~/perl5/opt/perl5'. Lub w zależności od tego, ile Perls już zainstalowałeś, po prostu 'rm ~/perl5' i ponownie zainstaluj w'/opt/perl5' –

+0

@Hunter McMillen, '@ INC' będzie całkowicie błędny, dla jednego. – ikegami

+0

@ikegami hmm, bym pomyślał, że kiedykolwiek "perlbrew użyje vX.XX.XX", to ponownie zbada PERLBREW_ROOT. –

Odpowiedz

7

Niestety, nie można po prostu przenieść zainstalowanego Perla. Na początek ścieżki dodane do @INC są zakodowane na stałe. Przedstawiam wam cztery rozwiązania, z których trzeci polecam.

Ale najpierw polecam używać /opt/perlbrew zamiast /opt/perl5/perlbrew, ponieważ nie ma potrzeby stosowania dodatkowego poziomu. Poniższe fragmenty kodu zakładają, że postępujesz zgodnie z tą rekomendacją.

  1. Zacznij od zera, ponownie instalując dowolną kompilację z perl, którą posiadałeś.

    Con: Dla każdej kompilacji należy również przeinstalować wszystkie moduły, które zostały zainstalowane. Oznacza to, że musisz ponownie przetestować wszystkie swoje aplikacje. Jest to czasochłonne i nie bez ryzyka.

  2. Przenieś katalog perlbrew, ale spróbuj naprawić instalacje.

    Przenieś instalację następująco jeśli ~ i /opt są na tym samym systemie plików:

    mv ~/perl5/perlbrew /opt/ 
    # Adjust file ownership and permissions as desired. 
    

    przesunąć instalację następująco jeśli ~ i /opt są na różnych systemach plików:

    (cd ~/perl5 ; tar c perlbrew) | (cd /opt ; tar x) 
    # Adjust file ownership and permissions as desired. 
    

    Następnie , edytuj ścieżki w każdym z plików wydrukowanych przez:

    for q in /opt/perlbrew/perls/* ; do 
        "$q/bin/perl" -le' 
         use Config; 
         require "Config_heavy.pl"; 
         print $INC{"Config.pm"}; 
         print $INC{"Config_heavy.pl"}; 
        ' 
    done 
    

    Będziesz także musiał edytować linię wielu shebang (#!).

    Con: Dużo pracy (choć nie tak bardzo jak pierwsza opcja), delikatne i nie gwarantowane.

  3. Twórz przyszłe kompilacje w /opt/perlbrew, ale zachowaj istniejące kompilacje tam, gdzie są.

    Po zainstalowaniu perlbrew w /opt/perlbrew, uruchom następujące:

    cd /opt/perlbrew/perls 
    for q in ~/perl5/perlbrew/perls/* ; do 
        ln -s "$q" 
    done 
    

    Pro: Super proste i szybkie. Z biegiem czasu możesz stopniowo wycofywać swoje ~/perl5/perlbrew (usuwając niepotrzebne kompilacje, zamieniając je zgodnie z opcją 1 lub przesuwając je zgodnie z opcją 2).

    Con: Wszyscy, którzy powinni mieć dostęp do /opt/perlbrew, również potrzebują dostępu do Twojego ~/perl5/perlbrew.

  4. Nie zmieniaj PERLBREW_ROOT. Po prostu uczyń /opt/perlbrew dowiązaniem symbolicznym.

    ln -s ~/perl5/perlbrew /opt/perlbrew 
    

    Pro: Super prosty i szybki.

    Con: Wszyscy, którzy powinni mieć dostęp do /opt/perlbrew, również potrzebują dostępu do Twojego ~/perl5/perlbrew.

+1

To jest powód, dla którego kompiluję wszystkie moje Perls z -D userelocateableinc. –

+0

@abraxxa, To pomaga, ale nadal musisz naprawić wszystkie linie shebang między innymi. // Czy wiesz, co robią wady? – ikegami

+0

Używam tego na moim dev notebooku i wszystkich prod boxach od lat z perlbrew i do tej pory nie zauważyłem żadnych efektów ubocznych. Linie shebang są modyfikowane z/usr/bin/env perl przez Module :: Install, nie wiem, czy Dist :: Zilla również je modyfikuje. –

Powiązane problemy