Gli utenti di Ubuntu sono abituati a installare il software aggiuntivo tramite apt, il gestore dei pacchetti che li scarica automaticamente dai repository. Ma... come fare quando il PC è offline e apt non può scaricare i file? Ebbene: in tal caso, ci si arma di un po' di pazienza e si procede a scaricare i pacchetti da un altro PC, per poi installarli offline. Per semplificare le cose al massimo, possiamo usare lo script automatico che abbiamo preparato noi di TurboLab.it, oppure procedere "alla vecchia maniera", prelevando i pacchetti via web. Vediamo allora come scaricare i pacchetti e installare software su un PC offline con Ubuntu 20.04
Script completamente riscritto per rendere la procedura più semplice e maggiormente compatibile
nota: questa procedura è "generale", e consente di installare qualsiasi pacchetto offline su Ubuntu. Se però hai bisogno dello specifico build-essential, c'è un modo più rapido:
» Leggi: Come installare build-essential su Ubuntu 20.04 senza connessione ad Internet (PC offline)
Scaricare i pacchetti di apt per installarli offline
Il primo metodo prevede di:
- scaricare la nostra collezione di script su una chiavetta USB
- generare la lista dei pacchetti da installare sul PC offline
- scaricare automaticamente questi file su un secondo PC dotato di collegamento a Internet
- installare i pacchetti così scaricati sul PC offline
Questo è sicuramente il mio metodo preferito (ed è quello che utilizzo per pacchettizzare build-essential). Ha il grande vantaggio di gestire automaticamente le dipendenze, ma richiede l'uso di un secondo computer con Ubuntu (qualsiasi versione, anche diversa da quella del PC offline).
Passo 1: Preparare la chiavetta
Per movimentare i file da un PC all'altro ci servirà una chiavetta USB. Iniziamo collegandola al PC dotato della connessione ad Internet.
Se stiamo usando Ubuntu Desktop, la chiavetta verrà automaticamente "montata" e potremo accedervi subito. Se invece stiamo usando Ubuntu Server, dobbiamo svolgere l'operazione manualmente:
A questo punto, apriamo il Terminale e posizioniamoci all'interno della chiavetta. Allo scopo, impartiamo innanzitutto ls -la /media/$USER
per vedere la lista dei dispositivi disponibili e scoprire il nome della chiavetta
Nello screenshot precedente, ad esempio, la chiavetta si chiama Zane
. Entriamoci quindi con
cd /media/$USER/Zane
Passo 2: Scaricare lo script nella chiavetta
Scarichiamo ora all'interno della chiavetta il pacchetto che contiene i nostri script:
sudo apt install curl -y && curl -Ls https://turbolab.it/scarica/359 | sudo sh
Passo 3: Espellere la chiavetta
Ora è tutto pronto. Espelliamo la chiavetta impartendo un comando simile a
umount /media/$USER/Zane
Di nuovo: sostituire a Zane
il nome della chiavetta.
Passo 4: Collegare la chiavetta al PC offline
Procediamo ora a collegare la chiavetta USB che abbiamo appena preparato al PC che è attualmente offline, cioè quello sul quale abbiamo effettivamente bisogno di installare alcuni pacchetti.
Ripetiamo quindi la procedura indicata al precedente Passo 1
per "montare" la chiavetta, aprire il Terminale ed entrarci.
Passo 5: Generare la lista dei pacchetti da installare
A questo punto, possiamo lanciare il primo script, ovvero quello che colleziona i nomi dei pacchetti e file che vogliamo installare sul PC offline.
Allo scopo, impartiamo qualcosa di simile a
bash 1-build-list.sh "nomePacchetto1 nomePacchetto2 nomePacchetto3"
Chiaramente sostituiamo ai vari nomePacchetto
i reali nomi dei pacchetti che vogliamo installare, separandoli da uno spazio. Massima attenzione a conservare le virgolette!
Nel mio caso, ad esempio, avevo bisogno di installare i servizi necessari a connettere Ubuntu Server alla rete Wi-Fi. Allo scopo, ho impartito:
sudo bash 1-build-list.sh "wpasupplicant wireless-tools"
La procedura genera un file, chiamato packages-to-download.txt
, che contiene gli URL dai quali prelevare i pacchetti indicati, e tutte le relative dipendenze.
Passo 6: Ri-collegare la chiavetta al PC "online"
Non appena lo script termina, espelliamo la chiavetta come visto al precedente Passo 3
.
Ri-colleghiamola quindi al computer dotato di connessione a Internet, poi ripetiamo la procedura indicata al precedente Passo 1
per "montare" la chiavetta, aprire il Terminale ed entrarci.
Passo 7: Scaricare i pacchetti di apt per usarli offline
Scarichiamo ora i pacchetti appena collezionati lanciando
sudo bash 2-download-list.sh
Questo script:
- legge la lista di URL dal file
packages-to-download.txt
, ovvero quello generato sul PC offline - scarica tutti i file indicati
- li salva nella sottocartella
archives
Passo 8: Ri-collegare la chiavetta al PC "offline"
Non appena lo script termina, espelliamo la chiavetta come visto al precedente Passo 3
.
Ri-colleghiamola quindi al computer offline e ripetiamo la procedura indicata al precedente Passo 1
per "montare" la chiavetta, aprire il Terminale ed entrarci.
Passo 9: Installare i pacchetti di apt offline
Siamo arrivati "al dunque". Lanciamo l'installazione dei pacchetti scaricati:
sudo bash 3-install-offline.sh
A meno di problemi, dovrebbero così essere installati i pacchetti desiderati. Abbiamo terminato!
Scaricare i pacchetti da web per installarli offline
Come soluzione alternativa, segnalo la possibilità di scaricare i pacchetti di Ubuntu direttamente da web. Il flusso di lavoro sarà dunque il seguente:
- recuperare le informazioni necessarie dal PC offline
- usare un PC, smartphone o tablet dotato di connessione ad Internet funzionante per scaricare i pacchetti via web
- sfruttare una chiavetta USB per copiare il materiale sul PC offline
- installare i pacchetti offline
Lavoreremo da Terminale, quindi apriamolo sul PC offline:
» Leggi: Come aprire il terminale di Ubuntu
Iniziamo scoprendo il nome in codice della versione di Ubuntu in uso. Allo scopo, basta impartire lsb_release -c
, e otterremo in risposta un nome in codice come focal
, eoan
, bionic
e via dicendo
Ci servirà conoscere anche l'architettura, quindi impartiamo arch
» Leggi anche: Come scoprire se Linux/Ubuntu/CentOS è a 32 bit oppure 64 bit
Spostiamoci ora sul dispositivo dotato di connessione ad Internet e apriamo questa pagina:
» Vai: Ubuntu Packages Search
Tramite il campo di ricerca a centro pagina, cerchiamo il pacchetto di nostro interesse, quindi clicchiamo sul link nella pagina dei risultati per aprire il dettaglio.
Da qui, cliccare sul link in alto a destra che indica il nome in codice (quello scoperto un attimo fa) della versione di Ubuntu presente sul PC offline, ovvero quello sul quale desideriamo installare il pacchetto
Scorriamo la pagina verso il basso, fino alla tabella Download
. Da essa, scegliamo il file compatibile con la nostra architettura (così come scoperto in precedenza tramite il comando arch
):
- per architettura
x86_64
: seguire il linkamd64
- per architettura
x86_32
: seguire il linki386
Dalla pagina successiva, otteniamo il file .deb cliccando su uno qualsiasi dei link (mirror) disponibili.
Usiamo ora una chiavetta USB per copiare il file .deb scaricato sul PC offline sul quale desideriamo installare il pacchetto.
A questo punto basta fare doppio click sul file e confermare con Installa
per raggiungere l'obbiettivo
In alternativa, installiamo il .deb da linea di comando impartendo qualcosa di simile a questo:
sudo dpkg -i /percorso/cartella/file.deb
Il limite di usare questa tecnica è che non è possibile risolvere le dipendenze. Certi pacchetti, infatti, abbisognano di installarne altri (in specifiche versioni) per funzionare: quando siamo connessi ad Internet, apt si occupa di tutto automaticamente. Scaricando i singoli pacchetti da web, invece, questo non è possibile: se il pacchetto che stiamo installando ha delle dipendenze irrisolte, l'operazione fallisce.
Da linea di comando, in particolare, otteniamo un errore simile a dpkg: errore nell'elaborare il pacchetto - problemi con le dipendenze - lasciato non configurato
Per gestire la situazione è necessario ripetere tutta la procedura per cercare, scaricare e installare manualmente ogni singola dipendenza che il sistema ci segnala come "mancante". Non è divertente, e se ci sono dipendenze-delle-dipendenze diventa un incubo, ma in caso di necessità si fa.