Anvil porta una GUI web minimale per pacman su Arch Linux

Anvil su Arch Linux con KDE Plasma

Gestire i pacchetti su Arch Linux significa normalmente affidarsi al terminale e agli strumenti della distribuzione, con pacman come componente principale per installazione, rimozione, ricerca e aggiornamento del software. Anvil propone un approccio differente, offrendo una semplice interfaccia grafica accessibile dal browser senza cercare di sostituire la logica di pacman.

Il progetto è una GUI self-hosted composta da un backend basato su FastAPI e da un’interfaccia web realizzata con Tailwind. Il principio fondamentale è piuttosto interessante: Anvil non reimplementa la logica di pacman. Ogni operazione viene eseguita richiamando direttamente i binari reali presenti sul sistema, mentre l’output viene trasmesso all’interfaccia web in tempo reale.

Il backend gestisce le richieste di sola lettura tramite API HTTP, mentre le operazioni che modificano il sistema vengono eseguite attraverso WebSocket. In questo modo l’utente può visualizzare direttamente ciò che sta accadendo durante una transazione, comprese eventuali richieste di conferma.

La parte informativa permette di ottenere lo stato dei pacchetti installati, quelli installati esplicitamente, gli eventuali pacchetti orfani e gli aggiornamenti disponibili nei repository. Anvil può inoltre interrogare l’AUR attraverso yay, effettuare ricerche nei repository ufficiali e nell’AUR e mostrare informazioni dettagliate sui singoli pacchetti.

La cronologia delle operazioni viene ricavata dal log di pacman presente in /var/log/pacman.log, mentre le informazioni aggiuntive sui pacchetti vengono recuperate quando necessario, evitando di eseguire richieste non indispensabili.

Aggiornamenti, AUR e molto altro

Uno degli elementi più interessanti di Anvil riguarda la gestione delle operazioni interattive. Il progetto evita deliberatamente di utilizzare l’opzione --noconfirm, perché questa impostazione può accettare automaticamente le risposte predefinite di pacman e non risolve correttamente alcune situazioni di conflitto.

Il backend osserva invece l’output prodotto da pacman e yay per identificare le richieste di conferma. Quando viene riconosciuto un prompt reale, questo viene trasferito all’interfaccia web e mostrato direttamente nel pannello della transazione.

Per le richieste [Y/n] e [y/N] sono disponibili pulsanti dedicati, mentre per gli altri prompt viene mostrato un campo di testo. Questo permette di rispondere anche alle richieste generate da yay durante le operazioni sull’AUR, comprese alcune delle sue procedure interattive.

Particolare attenzione è stata dedicata anche alla password richiesta da sudo durante alcune operazioni di yay. Poiché sudo può indirizzare la richiesta direttamente al terminale, Anvil utilizza un meccanismo basato su socket Unix e SUDO_ASKPASS per trasferire la richiesta al browser. La password viene mantenuta esclusivamente in memoria durante l’operazione e non viene inserita nei log o salvata su disco.

Le operazioni disponibili comprendono sincronizzazione dei database, aggiornamento del keyring, aggiornamento completo del sistema, installazione e rimozione dei pacchetti, installazione e rimozione tramite AUR e pulizia delle cache di pacman e yay.

Anvil segue inoltre una scelta importante per Arch Linux: quando sono disponibili aggiornamenti, l’operazione di aggiornamento utilizza pacman -Syu invece di permettere aggiornamenti parziali. Gli aggiornamenti dei repository non possono quindi essere selezionati singolarmente, mentre i nuovi pacchetti possono essere gestiti attraverso una transazione separata.

Il progetto è attualmente pensato per un singolo computer e ascolta esclusivamente sull’indirizzo 127.0.0.1. Non è quindi progettato per essere esposto direttamente su una rete. Il supporto AUR è inoltre legato a yay; chi utilizza strumenti come paru non potrà sfruttare le relative funzioni attraverso Anvil.

Come installare Anvil su Arch Linux

Per installare Anvil su Arch Linux, il percorso più semplice, quando il pacchetto sarà disponibile, consiste nell’utilizzare AUR:

yay -S anvil-manager
anvil-manager

Se il pacchetto non è ancora disponibile, è possibile installare il progetto direttamente dai sorgenti utilizzando pip:

cd anvil
pip install -e .
anvil-manager

L’installazione aggiunge FastAPI, uvicorn e il comando anvil-manager, che avvia il server locale all’indirizzo http://127.0.0.1:8000 e apre automaticamente l’interfaccia nel browser.

Per chi desidera provare il progetto senza modificare l’ambiente Python di sistema è disponibile anche run.sh. Lo script prepara un ambiente virtuale locale, installa Anvil in modalità editable e avvia anvil-manager.

Per interrompere il server è sufficiente tornare al terminale e premere Ctrl+C.

Anvil rimane quindi un progetto particolarmente interessante per chi utilizza Arch Linux e cerca una GUI semplice per pacman, mantenendo però l’esecuzione dei comandi originali e la possibilità di vedere in tempo reale ciò che accade durante le operazioni sui pacchetti. Abbiamo testato Anvil su Arch Linux con ambiente desktop KDE Plasma.

Lascia un commento