In questo articolo vedremo come utilizzare apt-get in modo un pò particolare. Funziona particolarmente utile quando si vuole installare un’applicazione con una procedura alternativa a quella rapida del repository.

Scenario: abbiamo un pc, che chiameremo DESKTOP con una connessione lenta (o magari collegabile a internet tramite scheda sim con piano tariffario con Gigabytes limitati) ed abbiamo a disposizione una connessione veloce su un altro pc, che chiameremo PORTATILE.  Quando si vuole aggiornare o installare del software sul DESKTOP di solito si cerca di scaricare il pacchetto .deb sperando (o più spesso pregando) che le dipendenze vengano soddisfatte. Con questa guida risolveremo ogni nostro problema.

Il trucco stà nell’usare l’opzione –prin-uris di apt-get che, anzichè portare avanti l’esecuzione di apt-get, lo forza a stampare a video i link dei diversi pacchetti da installare. La cosa più importante è assicurarsi che, avendo eseguito apt-get sul pc DESKTOP, tra i link dei pacchetti da scaricare ci siano anche tutti i pacchetti necessari a soddisfare le dipendenze.

Cerchiamo di capire il tutto con un paio di esempi.

1- Aggiornamento del sistema

2- Installazione programmi

1- Aggiornamento del sistema

Cominciamo con il dare il comando

sudo apt-get update

che serve ad aggiornare l’elenco dei pacchetti  (questa operazione consumerà qualcosa del traffico dati della nostra connessione).

poi facciamo stampare a video l’elenco dei pacchetti necessari per aggiornare il pc:

sudo apt-get –print-uris –yes upgrade > upgrade.htm

L’opzione –yes serve ad evitare che apt-get si blocchi aspettando la conferma da parte dell’utente. Se andiamo ad aprire il file update.htm:

Lettura elenco dei pacchetti...
Generazione albero delle dipendenze...
Lettura informazioni sullo stato...
I seguenti pacchetti sono stati mantenuti alla versione attuale: linux-image-generic
I seguenti pacchetti saranno aggiornati: account-plugin-facebook account-plugin-flickr account-plugin-google
account-plugin-icons account-plugin-identica account-plugin-twitter account-plugin-windows-live accountsservice
alsa-utils apparmor apport apport-gtk bamfdaemon cups cups-bsd cups-client cups-common cups-ppdc dbus dbus-x11
firefox firefox-globalmenu firefox-gnome-support firefox-locale-en firefox-locale-it iptables isc-dhcp-client
isc-dhcp-common libaccountsservice0 libasound2 libbamf3-0 libcups2 libcupscgi1 libcupsimage2 libcupsmime1
libcupsppdc1 libcurl3 libcurl3-gnutls libcurl3-nss libdbus-1-3 libdbus-1-3:i386 libdrm-intel1 libdrm-nouveau1a
libdrm-nouveau2 libdrm-radeon1 libdrm2 libfs6 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgnutls26 libkms1
libpulse-mainloop-glib0 libpulse0 libpulsedsp libpython2.7 libpython3.2 libraw5 libssl1.0.0 libtiff5
libufe-xidgetter0 libx11-6 libx11-data libx11-xcb1 libxatracker1 libxcb-composite0 libxcb-dri2-0 libxcb-glx0
libxcb-randr0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 libxcursor1 libxext6 libxfixes3
libxi6 libxinerama1 libxp6 libxrandr2 libxrender1 libxres1 libxt6 libxtst6 libxv1 libxvmc1 libxxf86dga1
libxxf86vm1 linux-libc-dev openssl pulseaudio pulseaudio-module-bluetooth pulseaudio-module-gconf
pulseaudio-module-x11 pulseaudio-utils python python-apport python-apt python-apt-common python-minimal
python-problem-report python2.7 python2.7-minimal python3 python3-apport python3-apt python3-distupgrade
python3-minimal python3-problem-report python3.2 python3.2-minimal rsyslog signon-plugin-oauth2
telepathy-gabble telepathy-idle thunderbird thunderbird-globalmenu thunderbird-gnome-support
thunderbird-locale-it ubuntu-release-upgrader-core ubuntu-release-upgrader-gtk unity-scope-video-remote
xdiagnose xserver-xorg-video-intel xserver-xorg-video-openchrome xul-ext-unity
127 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati. E' necessario scaricare 82,8 MB di archivi.
Dopo quest'operazione, verranno occupati 3587 kB di spazio su disco.
'http://it.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.1c-3ubuntu2.5_amd64.deb' libssl1.0.0_1.0.1c-3ubuntu2.5_amd64.deb 1053332 MD5Sum:d4205880337e0858b73f3c0ea727ea7c
'http://it.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.6.4-1ubuntu4.1_i386.deb' libdbus-1-3_1.6.4-1ubuntu4.1_i386.deb 153900 MD5Sum:91bf92799165dbe92e4b7cd30d739e5c
'http://it.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.6.4-1ubuntu4.1_amd64.deb' libdbus-1-3_1.6.4-1ubuntu4.1_amd64.deb 150424 MD5Sum:09c146199695f90dc975a1430fb62263
'http://it.archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm2_2.4.43-0ubuntu0.2_amd64.deb' libdrm2_2.4.43-0ubuntu0.2_amd64.deb 26438 MD5Sum:be8bedc9e8d10e4b873caee9b32ad4c4
'http://it.archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm-nouveau1a_2.4.43-0ubuntu0.2_amd64.deb' libdrm-nouveau1a_2.4.43-0ubuntu0.2_amd64.deb 14186 MD5Sum:025133f66464198b00d2ae5a39397ebb
'http://it.archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm-radeon1_2.4.43-0ubuntu0.2_amd64.deb' libdrm-radeon1_2.4.43-0ubuntu0.2_amd64.deb 24168 MD5Sum:e3b58dd8acb2e258d37ceeb361e581c9 

Ecc…

Vediamo subito che c’è un bel pò di roba…. Per sistemare il tutto, ed ottenere in uscita solo i link che ci interessano basta modificare il comando precedente in:

sudo apt-get –ptint-uris –yes upgrade | grep ^’ | cut -d’ -f2 > upgrade.htm

In questo modo avremo un file contenente i soli link, “purgato” da tutte le altre informazioni come MD5 e messaggi di sistema.

Adesso basta prendere questo file, copiarlo sul nostro PORTATILE e scaricare i pacchetti con il comando:

wget –input-file upgrade.htm

Scaricati i pacchetti, li portiamo sul DESKTOP e li installiamo tutti insieme con il comando

apt-get -o dir::cache::archives=”/disc” upgrade

Dove /disc è la cartella in cui abbiamo salvato i pacchetti scaricati (percorso assoluto).
Se tutto è andato bene il sistema ci risponderà con qualcosa del tipo:

127 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati.
 È necessario scaricare 0 B/82,8 MB di archivi.
 Dopo quest'operazione, verranno occupati 3587 kB di spazio su disco.
 Continuare [S/n]?

Da notare la seconda riga (0 B / 82,8 Mb) che sta a indicare che non è necesario scaricare alcun pacchetto. Per completare l’aggiornamento basta dare “S” e il sistema sarà aggiornato.