Come posso modificare il mio ambiente cygwin per usare Strawberry Perl invece della distribuzione Perl in pacchetto?

StackOverflow https://stackoverflow.com/questions/463947

Domanda

Attualmente uso Strawberry Perl come mia principale distribuzione Perl. Tuttavia, ho alcune applicazioni che effettuano chiamate Perl tramite cygwin. Questi generalmente falliscono perché stanno chiamando la versione di Perl che è stata impacchettata con cygwin e stanno cercando solo nelle cartelle lib di cygwin. Come posso modificare il mio ambiente cygwin per chiamare Strawberry Perl (e usare invece le directory C: / strawberry / perl / lib)?

È stato utile?

Soluzione

Se rimuovi Perl da cygwin usando il programma di installazione, utilizzerà Strawberry Perl per impostazione predefinita.

Se non riesci a rimuovere Perl da cygwin, puoi creare un collegamento simbolico all'eseguibile Perl da Strawberry.

Da una shell cygwin, utilizzare il seguente set di comandi:

$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl

Questo presuppone che tu abbia usato il programma di installazione Strawberry Perl predefinito. Aggiorna il tuo perl.exe di conseguenza se lo hai installato altrove.

Verifica che il link funzioni correttamente controllando la versione Perl:

$ perl -v

Dovrebbe essere indicato Questo è perl, (versione) creato per MSWin32-x86-multi-thread (o simile) e non creato per cygwin-thread -multi-64int .

Altri suggerimenti

Puoi cambiare il tuo PERCORSO per mettere prima le directory Strawberry. Strawberry cerca di essere gentile mettendo le sue directory alla fine del PERCORSO. Se hai installato dal file .zip, tuttavia, non ha cambiato il PERCORSO.

Potresti spostare / usr / bin / perl, ma questa è una cattiva idea poiché si interrompe quando cygwin cerca di aggiornare quello che pensa sia il suo perl. Questa settimana mi è appena successo e mi è capitato di capitare sul mio Mac fino a quando non ho smesso di giocare con l'installazione del sistema e ho installato le mie cose completamente separate.

Una cosa buona che posso aggiungere è che se ottieni il perl giusto per primo nel percorso, dovrebbe gestire i moduli CPAN specifici del sito che potresti aver installato con il perl fragola in esecuzione in una shell CMD.

" quale perl " è tuo amico.

In caso di problemi, è possibile impostare la variabile di ambiente PERL5LIB, ma non dovrebbe essere necessario.

Passo ancora i percorsi di file in stile DOS come parametri nello script perl, vale a dire " d: \ data \ myfile.txt " ;, non " /cygdrive/d/data/myfile.txt" ;. Abbastanza stranamente, questo mix di path notation funziona:

bash > /cygdrive/d/scripts/myscript.pl d: \ data \ myfile.txt

Molte di queste sono buone soluzioni, ma preferisco prenderne una semplice che non devo modificare più di una volta.

Tutto quello che devi fare è aggiungere / modificare una riga nel tuo file .bashrc.

# Prepend strawberry perl to cygwin's path
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH

file .bashrc di origine dalla tua shell (o avvia una nuova shell) ed esegui il tuo programma.

source ~/.bashrc
perl script.pl 

Probabilmente questa non è una soluzione preferita, ma dovresti essere in grado di modificare il #! riga:

#!/cygdrive/c/strawberry/perl/bin/perl5.10.0

Mi riferisco sempre a una posizione e installazione esplicite di perl, piuttosto che fare affidamento su ciò che è in / usr / bin.

Ho due script che uso per modificare la prima riga di script Perl in base a quello che Perl è il primo nel mio percorso: rightperl esegue l'hardcode per il Perl che è il primo nel mio $ PATH ora , envperl cambierà la linea in #! / usr / bin / env perl in modo che il Perl da usare venga scelto solo nel momento in cui lo script viene invocato. Funziona davvero bene con Cygwin (e da una shell Unix in generale).

Se non vuoi scherzare con alcun percorso o fare qualcosa di permanente, c'è un hack TEMPORANEO facile . Digita "dove perl" al prompt di Cygwin sh. Elencherà tutti i Perl.exe che vede in PERCORSO nel loro ordine di esecuzione. Cambia i nomi di quelli che non vuoi vedere che vengono elencati prima del perl che vuoi usare. Ma ricordati di cambiarli quando hai finito o potresti avere qualche problema lungo la strada.

Non ho la mia macchina cygwin nelle vicinanze, quindi non posso provarlo, ma forse puoi front-end il comando perl con uno script: vai su / bin sotto cygwin e sposta lì il perl.exe in qualcos'altro come perl-org.exe, quindi imposta uno script di shell che esegua l'altro tuo perl con gli stessi argomenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top