Usare ASDF per installare diverse versioni di PHP, insieme!

0
1653

Qualche giorno fa, parlando di Laravel Sail ed ambienti di sviluppo, ho scritto di quanto sia interessante (ed importante) avere un environment semplice da installare e configurare quando lavoriamo con i nostri progetti.

Quante volte, però, capita di aver bisogno di fare una “prova al volo”?

Magari vogliamo solo provare un nuovo package, oppure testare del codice senza troppi fronzoli. Niente database, Redis o altro. Giusto il runtime di quel linguaggio, magari in una versione specifica.

La soluzione di cui abbiamo bisogno è…

Asdf?

Per questi casi, uso uno strumento che si chiama asdfNo, non ho premuto i primi tasti a caso sulla tastiera, si chiama davvero così. Asdf è un tool che permette di installare in locale una o più versioni specifiche di qualsiasi dei linguaggi supportati. Mi piace per tre motivi:

  • supporta letteralmente una marea di linguaggi (si può vedere qui la lista);
  • installare un linguaggio è questione di un singolo comando, il resto viene fatto tutto automaticamente;
  • è possibile installare più versioni di uno stesso linguaggio contemporaneamente, e passare da una versione all’altra è semplicissimo;

Impariamo come usarlo.

Installare Asdf

Per installare Asdf, l’unico requisito è git. Quindi, eseguiamo:

Fatto questo, assicuriamoci di aggiungere asdf alla nostra shell correttamente. Consultiamo la guida sul sito in base al sistema operativo / shell usata.

Fatto? Riavviamo la shell e verifichiamo l’installazione con un

che dovrebbe mostrarci la versione installata e l’elenco dei comandi disponibili.

Installare PHP con Asdf

Asdf lavora con un sistema a plugin. Per ogni linguaggio che si vuole installare, infatti:

  • si installa il plugin dedicato;
  • si installano le versioni specifiche del linguaggio di cui abbiamo bisogno;

Proviamo ad installare PHP (qui la pagina). Iniziamo dal plugin, eseguendo

Fatto questo, dobbiamo scegliere quale versione di PHP installare. Possiamo vedere la lista completa di tutte le versioni di PHP installabili da asdf con

che ci restituirà una listona simile a questa:

Possiamo dire che la scelta non manca! Proviamo ad installare la 8.0.0 eseguendo

ed aspettiamo qualche minuto. Asdf si occuperà di tutto il resto. A cose fatte, eseguiamo

Perfetto: PHP c’è! Non rimane che chiedere ad asdf di impostarlo in modo tale da poterlo usare “normalmente” da linea di comando.

Funziona!


Attenzione! Il processo di installazione potrebbe dare errori, per problemi legati all’assenza di sqlite3 o di oniguruma. Se è così, installiamoli per il nostro OS e poi riproviamo. Nel mio caso, ho risolto eseguendo


Cambiare Versione con Asdf

Adesso vediamo meglio una problematica in cui Asdf può aiutarci davvero. Molto spesso, infatti, lavoro con diverse versioni di PHP. Può servirmi quando scrivo un package, o magari quando voglio vedere le differenze di esecuzione di uno snippet di codice tra un linguaggio e l’altro.

Qui entra in gioco la potenza di Asdf. Abbiamo PHP 8.0: installiamo anche PHP 7.4.

Attendiamo un paio di minuti, dopodiché…

Perfetto. Adesso abbiamo due versioni di PHP funzionanti, in contemporanea, in locale. Passare da una versione all’altra è semplicissimo: non dobbiamo fare altro che usare il comando asdf global php X, dove X è la versione di cui abbiamo bisogno.

E non finisce qui! Prima di concludere, ci sono un altro paio di cose interessanti da considerare:

  • il comando asdf global imposta la versione del linguaggio a livello dell’intera macchina;
  • se ci interessa impostare una versione specifica soltanto per la sessione corrente della nostra shell, basta usare asdf shell LINGUAGGIO VERSIONE (esempio: asdf shell php 8.0.0);
  • se ci interessa impostare una versione specifica soltanto per la directory in cui ci troviamo al momento, basta usare asdf local LINGUAGGIO VERSIONE (esempio: asdf local php 7.4.0). Il comando local può risultare molto comodo quando si lavora con diversi progetti con diverse versioni dello stesso linguaggio;
  • di tanto in tanto, eseguite il comando asdf plugin update –all, che si occupa di aggiornare i plugin dei vari linguaggi che avete installato;

Per oggi direi che è tutto. Su Asdf in realtà c’è ancora molto da dire, magari approfondirò di più il tema in futuro. Voi lo avete usato? Che ne pensate?