2015-09-22 9 views
9

Io uso perlbrew per gestire il mio ambiente Perl. Quando ho installato perlbrew la prima volta come da documentazione, ha installato tutto su ~/perl5/perlbrew, che ora trovo indesiderabile.Come posso spostare PERLBREW_ROOT in un'altra directory?

Gli stati di documentazione:

La directory ~/perl5/perlbrew conterrà tutti i file eseguibili installare perl, biblioteche, documentazioni, lib, site_libs. Nella documentazione, quella directory viene chiamata "radice perlbrew". Se è necessario impostare a qualche altra causa, per esempio, la vostra casa ha limitato quota, è possibile farlo impostando variabile d'ambiente PERLBREW_ROOT prima di eseguire il programma di installazione:

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

Domanda: Come posso spostare La directory PERLBREW_ROOT deve essere /opt/perl5/perlbrew anziché ~/perl5/perlbrew?

+0

Non ho provato questo, ma poiché tutte le informazioni perlbrew sono memorizzate in quella singola directory '~/perl5'. Non vedo alcun motivo per cui non è possibile aggiornare 'PERLBREW_ROOT' per puntare a'/opt/perl5', quindi 'mv ~/perl5/opt/perl5'. O a seconda di quanti Perls hai già installato, solo 'rm ~/perl5' e reinstallalo in'/opt/perl5' –

+0

@Hunter McMillen, '@ INC' sarà tutto sbagliato, per esempio. – ikegami

+0

@ikegami hmm, avrei pensato che ogni volta che si usa perlbrew vX.XX.XX' si riesaminasse PERLBREW_ROOT. –

risposta

7

Sfortunatamente, non è possibile spostare semplicemente un Perl installato. Per i principianti, i percorsi aggiunti a @INC sono hardcoded. Vi presento quattro soluzioni, di cui raccomando la terza.

Ma prima, mi raccomando di usare /opt/perlbrew invece di /opt/perl5/perlbrew poiché non è necessario per il livello extra. I frammenti di codice seguenti presumono che tu abbia seguito questa raccomandazione.

  1. ripartire da zero, la reinstallazione di qualsiasi build di perl di avere.

    Con: Per ogni generazione, è inoltre necessario reinstallare tutti i moduli installati. Ciò significa che dovrai ripetere il test di tutte le tue applicazioni. Questo richiede tempo e non senza rischi.

  2. Spostare la directory perlbrew, ma tentare di correggere le installazioni.

    Spostare l'installazione come segue se ~ e /opt sono sullo stesso file system:

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

    Spostare l'installazione come segue se ~ e /opt sono su diversi file system:

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

    Poi , modificare i percorsi in ciascuno dei file stampati dal seguente:

    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 
    

    Avrete anche bisogno di modificare la linea di shebang (#!) di molti script.

    Con: Un sacco di lavoro (anche se non quasi quanto la prima opzione), fragile e non garantito per funzionare.

  3. Creare build futuri in /opt/perlbrew, ma mantenere le build esistenti dove si trovano.

    Dopo aver installato perlbrew in /opt/perlbrew, eseguire il seguente:

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

    Pro: Super semplice e veloce. Nel tempo, puoi eliminare gradualmente il tuo ~/perl5/perlbrew (eliminando le build non necessarie, sostituendole come per l'opzione 1 o spostandole come per l'opzione 2).

    Con: Chiunque abbia accesso a /opt/perlbrew ha anche bisogno di accedere al proprio ~/perl5/perlbrew.

  4. Non modificare PERLBREW_ROOT. Basta fare /opt/perlbrew un link simbolico.

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

    Pro: Super semplice e veloce.

    Con: Chiunque abbia accesso a /opt/perlbrew ha anche bisogno di accedere al proprio ~/perl5/perlbrew.

+1

Questo è il motivo per cui compilo tutti i miei Perls con -D userelocateableinc. –

+0

@abraxxa, Questo aiuta, ma devi ancora correggere tutte le linee di shebang, tra le altre cose. // Sai quali sono gli svantaggi nel farlo? – ikegami

+0

Lo sto usando sul mio quaderno di sviluppo e su tutti i pasticci di plastica da anni con perlbrew e finora non ho notato alcun effetto collaterale. Le righe shebang sono modificate da/usr/bin/env perl da Module :: Install, non sono sicuro che anche Dist :: Zilla li modifichi. –