Dai package managers Linux agli Store dei sistemi mobile, quella dei software repositories è una storia di successo che però fatica a prendere piede su Windows. Ma qualcosa sta cambiando.
Un po’ di storia
L’installazione di software certificato da uno o più repository è da anni un caposaldo del mondo Linux. I vantaggi sono evidenti: la stabilità del sistema e la correttezza dei pacchetti sono garantite da un team di gestione qualificato, e l’utente non deve fare altro che usare un’interfaccia testuale o grafica per cercare e installare le applicazioni.
Sistemi analoghi si sono affermati nell’ambito dei linguaggi di programmazione: ovviamente in tal caso i pacchetti non contengono programmi, ma librerie riusabili che risparmiano al programmatore la fatica di inventare la ruota. Ne cito giusto due: il Python Package Index (PyPI) per il linguaggio ideato da Guido van Rossum e NuGet per la piattaforma Microsoft .NET.
Quando si parla di sistemi operativi mobile, infine, è evidente che questo pattern di usabilità detiene un dominio quasi incontrastato: ogni utente si aspetta di avere un “negozio di applicazioni” dal quale reperire tutto il software che desidera, e il caricamento di eseguibili da altre fonti (sideloading) è molto meno pratico (se non illegale).
E su Windows?
La distribuzione di software su Windows, al contrario, è sempre stato un processo decentralizzato: la responsabilità di reperire ed eseguire l’installer spetta all’utente finale.
Evidentemente è un modello pensato per un’altra epoca, in cui l’installazione via internet era l’eccezione e gli aggiornamenti avvenivano sporadicamente. Ma al giorno d’oggi, oltre a qualche rischio per la sicurezza, è soprattutto una fonte di infinite seccature (se la frase “Un nuovo aggiornamento di Java è disponibile” non vi fa sudare freddo, complimenti: avete più fegato di me).
Chocolatey
Qualcosa sta cambiando, dicevo. Appoggiandosi a OneGet e a PowerShell, il team di Chocolatey ha realizzato un software manager decentralizzato: se gli chiediamo di installare un’applicazione (ad esempio l’ottima f.lux), esso scaricherà uno script PowerShell che a sua volta contiene le istruzioni per il download e l’esecuzione dell’installer.
La community di Chocolatey verifica che gli script siano “benevoli”; in futuro verrà inoltre resa obbligatoria la verifica del checksum dei file scaricati, come ulteriore misura di sicurezza.
Comandi utili
Le istruzioni per installare choco sono sul sito ;) Qui riporto solo i comandi più importanti, la cui sintassi è molto simile a quella di altri gestori di pacchetti.
Comando | Descrizione |
---|---|
choco install f.lux | Installa il pacchetto |
choco uninstall f.lux | Disinstalla il pacchetto |
choco list --local-only | Elenca tutti i pacchetti installati |
choco outdated | Elenca i pacchetti per cui sono diponibili aggiornamenti |
choco upgrade f.lux | Aggiorna il pacchetto |
choco upgrade all | Aggiorna tutti i pacchetti obsoleti |
choco pin f.lux | Disabilita l’aggiornamento del pacchetto |
Bonus: PackageManagement
Gli sviluppatori Microsoft sono andati oltre e hanno ideato un “package manager manager”, cioè un’infrastruttura unificata per l’installazione di pacchetti da molteplici gestori di pacchetti. Ciò significa che un giorno l’utente potrà accedere a PyPI, NuGet, RubyGems e così via attraverso un’interfaccia unificata.
PackageManager (un tempo noto come OneGet) è incluso in Windows 10:
per i sistemi precedenti esiste un installer
che però non ho avuto modo di testare (Edit 2020-11-09: l’installer non è più reperibile).
L’obiettivo principale di OneGet è quello di consentire il download di script e
moduli da
PowerShellGallery,
quindi non è ancora il caso di utilizzarlo in altri ambiti.
Comunque, se avete il gusto dell’avventura, vi riporto velocemente una sequenza di comandi che permetteranno di recuperare pacchetti dai server di Chocolatey: per eseguirli bisogna aprire una console PowerShell come amministratore.
Set-ExecutionPolicy RemoteSigned -Scope Process
Get-Command -Module PackageManagement
Find-Package chocolatey
Get-PackageProvider -Name Chocolatey
Find-Package -Name f.lux
Install-Package -Name f.lux
Set-PackageSource -Name chocolatey -Trusted
- Consente l’esecuzione di script esterni ma dotati di firma digitale.
Il parametro
-Scope Process
limita questa politica alla shell attuale. - Elenca i comandi forniti dal modulo
PackageManagement
. - In realtà usiamo questo comando solo per provocare l’installazione del provider NuGet.
- Installa il package provider per il server di Chocolatey.
- Esempio di ricerca di un pacchetto.
- Installazione del pacchetto.
- Imposta chocolatey come fonte affidabile: le future installazioni non mostreranno avvisi di pericolo.
Purtroppo l’interfaccia è molto scarna e lo sviluppo tende a favorire PowerShellGallery: ad esempio manca un comando per aggiornare i pacchetti, mentre esistono comandi analoghi per gli script scaricati dal server Microsoft. Anche il repository GitHub sembra poco frequentato negli ultimi mesi: speriamo che non sia un brutto segno, perché l’idea è davvero interessante!