Finalmente un package manager semplice, sicuro ed efficace per installare utility e programmi anche per Windows!

Scoop: package manager Windows!

Probabilmente molti di voi conoscono un altro famoso gestore pacchetti per Windows, Chocolatey ma il motivo per cui ho scelto di parlarvi di Scoop è che lo trovo migliore per molti aspetti. In particolare mi piace la soluzione adottata da scoop per installare i programmi: questi infatti non vengono installati nella solita directory C:\Programmi\ ma vengono installati all'interno della cartella dell'utente. Questo consente di eseguire Scoop senza i diritti di amministratore (proprio come fa Homebrew su MacOS) e installare i programmi senza che ci venga mostrato il noioso pop-up del User Account Control. Un altro pregio di Scoop è l'installazione indipendente di ogni programma: se un programma richiede delle librerie (i famosi file .dll) specifiche, queste vengono installate direttamente con il programma e saranno utilizzate solo da questo. Così, al costo di occupare un po' più di spazio su disco, si risolvono anche i possibili problemi di compatibilità che possono derivare da diverse versioni della stessa libreria.

Non ho ancora detto che Scoop funziona da riga di comando, su PowerShell. So bene che parlare di "riga di comando" alla maggior parte degli utenti Windows è come parlare della scoperta del fuoco ad un astronauta ma, se questa "antica" interfaccia viene ancora utilizzata per amministrare moltissimi server su cui si regge internet, un motivo ci sarà ed è anche facilmente intuibile: l'efficienza, senza fronzoli grafici il comando impiega il minimo delle risorse necessarie per essere eseguito.

L'unico requisito richiesto per l'installazione di Scoop è avere PowerShell versione 5.1 o superiore.

Apriamo PowerShell (come utente normale non come amministratore!) e digitiamo:

Set-ExecutionPolicy RemoteSigned -scope CurrentUser

Rispondiamo S seguito da invio: con questo comando avremo "sbloccato", per il solo nostro utente (CurrentUser), la possibilità di eseguire degli script firmati da un autore attendibile (RemoteSigned). In questo modo saremo sicuri che l'installazione di Scoop andrà a buon fine e potremo procedere digitando il criptico comando per scaricare i file necessari e avviare l'installazione vera e propria:

iwr -useb get.scoop.sh | iex

Scoop: package manager Windows!

A questo punto possiamo digitare scoop help come suggerito al termine dell'installazione

Scoop: package manager Windows!

Come possiamo vedere i comandi principali di ogni package manager ci sono tutti:

  • search, per cercare i programmi tramite parola chiave; se nessuna parola chiave è specifica, scoop mostrerà una lista di tutti i programmi disponibili;
  • install, seguito dal nome del pacchetto per installare il programma desiderato;
  • uninstall, sempre seguito dal nome del pacchetto per rimuovere un programma;
  • update, senza argomenti aggiornerà solo Scoop, se seguito dal nome di un programma aggiornerà solo quello mentre per aggiornare in una volta tutti i programmi installati dovremo aggiungere * .

Se vogliamo avere maggiori dettagli per ogni altro comando disponibile sarà sufficiente digitare:

scoop help nome-comando

Se osserviamo attentamente i comandi ne possiamo individuare almeno altri 2 che sono degni di nota: uno è checkup e l'altro è virustotal.

scoop checkup sarà da eseguire subito dopo l'installazione per trovare evenutali problemi che protrebbero impedire o limitare il corretto funzionamento e una volta individuati, Scoop segnalerà anche la soluzione

Scoop: package manager Windows!

Come vedere dallo screenshot sopra, alcuni comandi per correggere i problemi rilevati iniziano con una parola ben conosciuta dagli utenti Linux: sudo. In questo caso non ha niente a che vedere con quello presente sulle distro Linux ma funziona in maniera analoga: poiché Scoop è eseguito da un normale utente, utilizzare sudo prima del comando consente di eseguire quel comando (e solo quel comando) con i diritti di amministratore. sudo non rientra nell'installazione predefinita di Scoop e andrà quindi installato con il comando:

scoop install sudo

Dopodiché sarà possibile passare alla correzione dei problemi rilevati digitando i comandi suggeriti. Sempre nello screenshot sopra possiamo vedere come un comando eseguito senza sudo restituisca un errore mentre, con sudo davanti, lo stesso comando vada a buon fine.

Adesso che abbiamo installato sudo, avremo anche la possibilità di installare programmi nella cartella di sistema dedicata a tale scopo C:\Programmi\Scoop, cosa che sconsiglio se non strettamente necessaria perché si perde una delle carattestiche fondamentali di Scoop, ma molto utile se vogliamo che un programma sia utilizzabile da tutti gli evenutali altri utenti.

Se avete notato attentamente lo screenshot sopra, avrete visto che due dei "problemi" rilevati da Scoop riguardano il controllo in tempo reale dell'antivirus che può rallentare notevolmente l'esecuzione di Scoop. Se abbiamo seguito il suggerimento e abbiamo disabilitato questo controllo solo per le cartelle di Scoop, per fare una verifica dei programmi installati possiamo avvalerci di un altro comando interessante: scoop virustotal *, che consente di sfruttare il famoso servizio (VirusTotal, appunto) per testare in una volta tutti i programmi installati!

NB: escludere le cartelle di Scoop dalla scansione in tempo reale non rende il computer meno sicuro! Qualora installassimo un malware in queste cartelle, questo sarebbe comunque bloccato non appena eseguito!!!

Scoop: package manager Windows!

Per impostazione predefinita, i programmi disponibili tramite Scoop devono rispettare rigidi criteri e per avere accesso a molti altri programmi (più di mille!!) dovremo abilitare altri repository (chiamati bucket). Per una lista completa dei repository disponibili possiamo consultare il sito ufficiale; vi consiglio però di limitarvi a quelli ufficiali (che sono i primi nove, identificati da un segno di spunta sulla destra) e che potete vedere anche impartendo il comando:

scoop bucket know

Per abilitare un bucket (ad esempio, extra), è richista la presenza di git che dovremo quindi installare prima:

scoop install git

scoop bucket add extras

Scoop: package manager Windows!

Da notare che questi repository non contengono i file da installare ma, come le Formulae di Homebrew, contengono file con estensione .json con le istruzioni per scaricare e installare il programma dal sito ufficiale o altra fonte affidabile.

Se installiamo programmi che hanno un'interfaccia grafica, potremo trovare le icone per lanciarli nel menu, tutti raggruppati in una cartella Scoop.

Scoop: package manager Windows!

Un'altro vantaggio di utilizzare Scoop per installare i nostri programmi preferiti è che, non solo possiamo aggiornarli tutti in una volta, come già visto, con un semplice comando, ma anche perché questi non vengono sovrascritti come avviene di solito durante un aggionamento, ma vengono installati a fianco: in questo modo possiamo sempre tornare facilmente ad una versione precedente, indicando a Scoop quale versione deve avviare; questo può essere fatto con il comando reset, seguito dal nome del programma che ci interessa (ad esempio, Firefox) con il numero di versione preceduto da @:

scoop reset firefox@99.0

Scoop: package manager Windows!

In caso, per qualche motivo, volessimo mantenere una particolare versione di un programma (ad esempio, sempre Firefox) ed evitare che venga aggiornato, basterà istruire Scoop:

scoop hold firefox

Al momento che cambiamo idea, potremo sempre annullare la limitazione:

scoop unhold firefox

La caratteristica di non sovrascrivere i programmi durante l'aggiornamento ma installlarli a fianco ha, però, anche una controindicazione: di normale vengono conservate tutte le vecchie versioni e questo, con il tempo, può portare ad occupare molto spazio. Possiamo fare un po' di pulizia con il comando clenaup seguito dal nome del programma di cui vogliamo rimuovere le vecchie versioni oppure seguito da * per eliminare in una volta tutte le vecchie versioni di tutti i programmi:

scoop cleanup *

Il rassicurante messaggio Evetringh is shiny now! ci informa che le vecchie versioni sono state cancellate.