whereisapp: lo script che identifica l’origine di un’applicazione

Quando si utilizzano più formati di pacchetti software nelle distribuzioni GNU/Linux, può diventare complicato ricordare come è stata installata una determinata applicazione. Potrebbe provenire da APT (Advanced Package Tool), essere stata installata come Snap, come Flatpak oppure essere un file AppImage scaricato manualmente in una cartella dell’utente.
Per evitare controlli ripetuti e l’uso di comandi diversi, ho realizzato whereisapp, uno script Bash semplice da utilizzare in una finestra Terminale che permette di verificare in pochi istanti l’origine di un’applicazione installata nel sistema. Lo script è pensato per le distribuzioni GNU/Linux che usano APT come package manager (applicazione di gestione dei pacchetti software) come Debian e le sue derivate, Ubuntu, Linux Mint, Pop!_OS e molte altre.
Obiettivo dello script
Lo scopo di whereisapp è fornire una risposta chiara alla domanda: Da quale fonte proviene questa applicazione installata sul mio sistema?
Questo è utile in diversi casi, ad esempio quando:
- esistono più versioni della stessa applicazione
- non si ricorda se un programma è stato installato tramite APT, Snap o Flatpak
- si vuole rimuovere la versione di troppo
- si desidera verificare se un’applicazione è stata installata tramite un formato universale
- si cercano AppImage dimenticate nella propria cartella home
Lo script completo
#!/bin/bash
# Uso: whereisapp nome_app
APP=$1
echo "=== APT ==="
dpkg -l | grep -i "$APP"
echo "=== SNAP ==="
snap list | grep -i "$APP"
echo "=== FLATPAK ==="
flatpak list | grep -i "$APP"
echo "=== APPIMAGE ==="
find ~/ -name "*$APP*.AppImage" 2>/dev/null
Come funziona
Se lo script viene eseguito senza alcun parametro, tutte le sezioni mostreranno l’elenco completo degli elementi installati nei rispettivi formati. La sezione dedicata ad APT visualizzerà l’intera lista dei pacchetti software gestiti da APT, poiché il comando dpkg -l, senza filtri, restituisce tutti i pacchetti software presenti nel sistema. Allo stesso modo, la sezione Snap mostrerà l’elenco completo degli Snap installati, la sezione Flatpak mostrerà tutti i pacchetti software Flatpak presenti e la sezione AppImage elencherà tutte le AppImage trovate nella cartella home dell’utente. Specificare un parametro permette invece di filtrare i risultati e visualizzare solo ciò che corrisponde al nome indicato.
Controllo dei pacchetti software APT
APT è il sistema di gestione dei pacchetti software delle distribuzioni GNU/Linux basate su Debian.
Il comando:
dpkg -l | grep -i "$APP"
permette di verificare se l’applicazione è installata come pacchetto software .deb, proveniente dai repository software ufficiali o da un file .deb installato manualmente.
Verifica dei pacchetti software Snap
Snap è un formato di pacchetto software universale sviluppato da Canonical.
Lo script utilizza:
snap list | grep -i "$APP"
per verificare se l’applicazione è installata come Snap.
Verifica dei pacchetti software Flatpak
Flatpak è un formato di pacchetto software universale molto diffuso, spesso installato tramite Flathub o altri repository software.
Il comando:
flatpak list | grep -i "$APP"
mostra eventuali installazioni Flatpak presenti nel sistema.
Ricerca delle AppImage
Le AppImage sono applicazioni portatili che non richiedono installazione.
Lo script cerca file con estensione .AppImage nella cartella home dell’utente:
find ~/ -name "*$APP*.AppImage"
Esempio pratico
Eseguendo:
whereisapp vlc
si potrebbe ottenere un risultato simile:
=== APT ===
ii vlc 3.0.20-0+deb12u1 amd64 Lettore multimediale VLC
=== SNAP ===
=== FLATPAK ===
org.videolan.VLC system 3.0.20
=== APPIMAGE ===
In questo modo l’utente può capire immediatamente:
- presenza di una versione installata tramite APT
- presenza di una versione installata come Flatpak
- assenza di una versione Snap
- assenza di AppImage nella cartella home
Compatibilità e limiti
Lo script è stato creato e testato inizialmente su Ubuntu, quindi nella sua forma originale include solo la sezione dedicata ad APT. Tuttavia può essere facilmente modificato per funzionare anche su distribuzioni GNU/Linux basate su RPM o su Arch Linux.
Esempio per distribuzioni basate su RPM (come Fedora, openSUSE, RHEL, AlmaLinux, Rocky Linux):
echo "=== RPM ==="
rpm -qa | grep -i "$APP"
Esempio per Arch Linux e derivate (come Manjaro, EndeavourOS, CachyOS):
echo "=== PACMAN ==="
pacman -Qs "$APP"
Queste aggiunte/modifiche permettono di adattare whereisapp a un numero molto più ampio di distribuzioni GNU/Linux, mantenendo lo stesso approccio semplice e immediato.
Possibili miglioramenti futuri
Lo script è stato creato con l’aiuto di un sistema di intelligenza artificiale. Utilizzando nuovamente un sistema di intelligenza artificiale è possibile modificarlo, ampliarlo o personalizzarlo in modo estremamente rapido, senza perdere nessuna delle funzionalità già presenti. Questo approccio permette di ottenere suggerimenti mirati, generare varianti dello script e adattarlo a nuove distribuzioni GNU/Linux senza dover riscrivere tutto manualmente. L’intelligenza artificiale è particolarmente utile perché consente di mantenere la struttura originale, aggiungere nuove sezioni in modo coerente e verificare la correttezza dei comandi prima dell’uso.
Tra le estensioni possibili, con spiegazione del perché potrebbero essere utili:
- possibilità di sostituire la sezione APT con sezioni equivalenti per RPM o Pacman, come mostrato negli esempi (questo permette di adattare lo script a distribuzioni GNU/Linux non basate su Debian, mantenendo la stessa logica operativa)
- rilevamento di AppImage integrate tramite AppImageLauncher (utile per distinguere AppImage “pure” da quelle gestite tramite integrazione nel sistema)
- controllo dei binari in
/usr/local/bin(molti utenti installano programmi compilati manualmente o script personali in questa cartella) - integrazione con i comandi
whichetype(per individuare rapidamente il percorso esatto dell’eseguibile e capire quale versione viene avviata dal sistema) - colorazione dell’output per una lettura più immediata (migliora la leggibilità quando si analizzano più risultati contemporaneamente)
- modalità avanzate come output in formato JSON (utile per chi vuole integrare lo script in strumenti di automazione o in interfacce grafiche)
Conclusione
whereisapp è uno strumento semplice ma molto utile per chi utilizza quotidianamente una distribuzione GNU/Linux e installa software da più fonti.
In pochi istanti permette di identificare l’origine di un’applicazione, evitando confusione, duplicati e perdite di tempo.
A me è stato particolarmente utile prima di reinstallare il mio sistema, quando ho dovuto identificare tutte le applicazioni che utilizzo abitualmente. Anche se avevo salvato la cartella home con i miei dati, era importante reinstallare i programmi esattamente come prima, perché ogni applicazione gestisce e salva le proprie configurazioni in modo diverso: alcune utilizzano cartelle nascoste nella home, altre salvano file in percorsi specifici del sistema e altre ancora dipendono da componenti installati tramite il proprio formato di pacchetto software. Ritrovare la stessa modalità di installazione garantisce quindi che le impostazioni vengano riconosciute correttamente.
Fonte: CoPilot e me 🙂
Se vuoi sostenermi, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che ho nel mio sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul mio negozio online, quelle mancanti possono essere comunque richieste.
Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
























