Premessa
Avamar Administrator è progettato solo per Windows. Ma mi sono chiesto: e se provassimo a farlo girare su Linux?
La risposta breve: sì, si può fare. E senza trucchi strani, solo con un po’ di conoscenza di Java, delle librerie e dei percorsi giusti. In questo post ti spiego come ci sono riuscito.
La cosa piu importante da tenere a mente è che con questo approccio, se abbiamo un java ben scritto, è quasi sempre possibile far girare il software anche sulla nostra linux, anche se non ufficialmente supportato.
Perché provarci?
- Uso Linux come ambiente principale.
- Odio dover avviare una VM o Wine solo per un client Java.
- Java è multipiattaforma — quindi in teoria dovrebbe funzionare.
Spoiler: funziona.
Requisiti
- Una distro Linux (Debian, Ubuntu, etc.)
- SDKMAN per gestire versioni di Java
- Java 8 (Amazon Corretto)
- File Avamar copiati da una macchina Windows
Iniziamo: estrazione del file exe
Lo so, lo so… i puristi storceranno il naso, ma io ritengo che sia il metodo più semplice. Quando dobbiamo spacchettare un file .exe pensato per Windows, la soluzione più rapida e indolore è usare una macchina virtuale. Sì, non è la soluzione più elegante, ma fidatevi, è quella che funziona senza troppi grattacapi.
Qualcuno ci giudicherà per questo? Sticazzi!
in questi casi io uso semplicemente il fidatissimo 7-Zip direttamente sul .exe estraggo nel desktop di Windows (uso una macchia virtuale ma andrebbe bene anche una macchina “di appoggio”)

è elegante? NO ma è efficace, io lo chiamo “UNO SCHIAFFO”
bene ora prendiamo il contenuto di questa cartella e copiamolo in un percorso sulla nostra linux, io ho scelto di usare una sottocartella che ho nominato “avamar” nella mia Home, cosi da facilitarmi il processo ( e anche per essere ordinati e poter integrare anche questo nei mie salvataggi di sicurezza
come lo faccio? DAI… stavolta basta un copia -> incolla, su! Non complichiamoci la vita quando non serve:

Creiamo lo script usando quello che abbiamo imparato fino ad ora (sdkman)
Avamar, è un tool di backup e recovery di EMC, che ancora si sente a suo agio in compagnia di Java 8, pertanto usiamo il buon SDKMan per usare questo dinosaruo informatico (rigorosamente Amazon Corretto, ça va sans dire).
Lo script imposta l’ambiente giusto, sistema qualche variabile misteriosa e lancia finalmente la GUI di Avamar… senza che tu debba sacrificare ogni volta un pomeriggio di debugging. (come ho fatto io)
creiamo il file con nano e incolliamoci il codice
cd avamar
nano avamar.sh
e incolliamo questo codice:
#!/bin/bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk use java 8.0.442-amzn
sleep 2
AVAMAR_HOME="$HOME/avamar"
LIBS="$AVAMAR_HOME/lib"
BIN="$AVAMAR_HOME/bin"
# Costruisci il classpath includendo tutte le librerie nella cartella lib
CLASSPATH="$LIBS/*"
# Percorso corretto delle immagini
IMAGE_DIR="$LIBS/images"
# Esegui
java -Djava.util.prefs.userRoot="$HOME/.avamardata/var/mc/gui_data/prefs" \
-DIMAGE_DIR="$IMAGE_DIR" \
-Djava.util.logging.config.file="$LIBS/mcclient_logging.properties" \
-Dsun.java2d.noddraw=true \
-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
-Xmx512m \
-cp "$CLASSPATH" \
com.avamar.mc.gui.console.LoginDialog "$@"
ora messa giù cosi la cosa sembra molto semplice, ma vi assicuro che non è stato cosi e ci sono volute ore di tentativi e analisi degli errori per arrivare a questo ( elegantissimo) script.
Rendiamolo eseguibile e integriamolo nel sistema
una volta salvato lo script, come sempre, lo rendiamo eseguibile:
chmod +x avamar.sh
e lo rendiamo disponibile da terminale all’intero sistema:
sudo cp avamar.sh /usr/local/bin/
ottimo! q uesto punto il programma puo essere richimato da qualsiasi terminale con “avamar.sh” facciamo l’ultima integrazione per mettere una bella icona nel menu della nostra popOS!
nano ~/.local/share/applications/avamar.desktop
e incolliamo questo codice:
[Desktop Entry]
Name=Avamar Backup Console
Comment=Avvia Avamar Backup Console
Exec=/usr/local/bin/avamar.sh
# il file icona lo andiamo a prendere nel percorso creato nella home, attenzione a questo passaggio
Icon=/home/riccardo/avamar/lib/images/avamar.png
Terminal=false
Type=Application
Categories=Network;Utility;
StartupWMClass=Avamar Backup Console
salviamo il tutto, rendiamo eseguibile e ricarichiamo il menu:
sudo chmod +x ~/.local/share/applications/avamar.desktop
update-desktop-database ~/.local/share/applications
e… ci siamo!


dopo solo un infinita di passaggi, e un pomeriggio di debug… ecco qui il nostro dinosauro pronto e funzionante sulla nostra Linux!
Non è tutto così facile come sembra…
Nel mio caso, il percorso è stato tutt’altro che lineare. Errori, ricerche infinite, configurazioni sbagliate, e tanto stress. Ogni passo sembrava portarmi più lontano dalla meta, e ogni nuovo errore sembrava essere una montagna insormontabile. Però, alla fine, ce l’ho fatta! E vi ho risparmiato tutta quella sfilza di errori a cui sono andato incontro, facendovi risparmiare tempo e frustrazione. Sì, perché non è stato affatto semplice – e spero che questa guida vi eviti almeno una parte di quel processo di tentativi e fallimenti.
La collaborazione con ChatGPT:
il mio alleato per risolvere gli errori!
Per me, il bello di questa esperienza è stato anche il poter collaborare con strumenti come ChatGPT per risolvere gli errori. anche se il risultato finale può sembrare semplice, non è mai così lineare. Ogni passaggio ha richiesto tempo e tentativi. (NDR: in uno dei prossimi articoli mi sono ripromesso di caricare screenshots e log per far capire bene il mio approccio a questo tipo di “programmazione), Ogni errore era un’opportunità di apprendimento, ma anche un altro motivo per mettermi a scrivere e chiedere aiuto.
A questo punto, voglio aprire una riflessione: quando ci troviamo di fronte a problemi difficili da risolvere, non siamo soli! E lo so che tante volte, quando non si sa da dove partire, l’idea di chiedere aiuto a una macchina può sembrare strana. Ma io ho imparato che, in fondo, ogni grande risultato è il frutto di tante piccole risposte che ci vengono offerte.
Quindi, se vi trovate nella stessa situazione, sentitevi liberi di scrivermi nei commenti o di chiedere aiuto. Come ho fatto io con il mio assistente virtuale, forse anche voi potreste risolvere problemi che sembrano insormontabili. E chissà, magari troveremo insieme nuove soluzioni per migliorare e ottimizzare ancora di più l’esperienza su Linux!
Cosa ho imparato?
In poche parole, l’errore fa parte del processo. Ci saranno frustrazioni, momenti di “perché non funziona?” e “perché è così complicato?”, ma l’importante è perseverare e trovare una soluzione. E quando la trovate, è tutta una soddisfazione!
BONUS: Gli errori più significativi (e come li abbiamo risolti)

- Il crash per IMAGE_DIR mancante
Errore:
Key not found: IMAGE_DIR, value=/lib/images/
SEVERE: No image root path found
NullPointerException
🔧 Soluzione: abbiamo scoperto che Avamar cerca le immagini in un path assoluto se IMAGE_DIR non è impostato correttamente. Aggiungere:
-DIMAGE_DIR="$LIBS/images"
nel comando java ha risolto il problema.
- Classe XML mancante (DocumentBuilderFactoryImpl)
Errore:
javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
🔧 Soluzione: serviva Xerces, una libreria XML usata dal programma. Inizialmente avevo provato ad aggiungerla manualmente, ma la vera soluzione è stata usare il classpath così:
-cp "$LIBS/*"
che include tutti i .jar nella cartella lib, Xerces compreso.
- Mancanza dei percorsi di log e prefs
Errore:
java.nio.file.NoSuchFileException: ~/.avamardata/var/mc/gui_log/mcclient.log.0.lck
🔧 Soluzione: creare manualmente le cartelle richieste:
mkdir -p ~/.avamardata/var/mc/gui_log
mkdir -p ~/.avamardata/var/mc/gui_data/prefs
“Il segreto? Un errore alla volta, un prompt ChatGPT alla volta, un insulto al software alla volta.”
