Ce tutoriel est destiné à tous ceux qui ont installé Ubuntu sur un ordinateur qui n'a pas de connexion à Internet, mais qui aimeraient bien néanmoins tenir leur système à jour et installer les applications qui leur manquent.
apt-offline permet de faire aisément ceci à partir d'un autre ordinateur relié à Internet.
L'ensemble des méthodes listées ci-dessous suppose que vous pouvez avoir accès à un ordinateur disposant d'une connexion Internet haut débit sur lequel vous n'avez pas nécessairement les droits d'administration, et que vous possédez une clé USB (1 Gio serait confortable). Ce tuto s'adressant plutôt aux débutants sous Ubuntu.
Il est nécessaire d'installer le paquet apt-offline sur les deux ordinateurs soit en trouvant le moyen de connecter momentanément l'ordinateur cible à Internet, soit en utilisant une des méthodes décrites sur le portail dédié à l'installation de paquets hors-ligne. Ou bien en téléchargeant directement le paquet ici pour Ubuntu 14.04 et là pour la version 16.04.
Il est également possible d'effectuer toutes les tâches qui suivent grâce à une interface graphique pour apt-offine. Pour cela installez le paquet apt-offline-gui. Lancez-le avec la commande :
gksudo apt-offline-gui
Dans ce qui suit veillez bien à remplacer $USER par votre identifiant de session.
Générer un fichier de signatures dans un support usb déjà monté :
sudo apt-offline set /media/$USER/USB/apt-offline.sig
La commande ci-dessus va générer toutes les informations requises par apt pour mettre à jour sa base de données.
Par défaut, sans arguments supplémentaires, apt-offline va extraire les informations de mise à jour de la base de données APT (option –update implicite), ainsi que la liste des paquets à mettre à niveau (option –upgrade implicite).
Ces options peuvent également être utilisées individuellement si vous le souhaitez.
Connecter la clé USB et télécharger dans un répertoire les données correspondant au fichier de signature généré précédemment :
sudo mkdir /media/$USER/USB/apt sudo apt-offline get /media/$USER/USB/apt-offline.sig -d /media/$USER/USB/apt --threads 5
L'option threads permet d'accélérer l'opération en téléchargeant jusqu'à cinq fichiers en parallèle.
Reconnecter la clé USB et réinjecter les données téléchargées :
sudo apt-offline install /media/$USER/USB/apt
Ceci mettra à jour votre base de données APT de manière transparente.
sudo apt list --upgradable
Ceci listera les paquets qui peuvent être mis à jour automatiquement.
sudo apt upgrade
Ceci mettra à jour vos paquets de manière transparente.
apt-offline est très puissant, puisqu'il vous permet de télécharger également les sources si vous le désirez.
sudo apt-offline set NOM_PAQUET-offline.sig --install-packages NOM_PAQUET --src-build-dep --install-src-packages NOM_PAQUET
Placez-y le fichier NOM_PAQUET-offline.sig que vous avez généré précédemment, puis :
sudo apt-offline get NOM_PAQUET-offline.sig --no-checksum --bundle NOM_PAQUET-offline.zip
Extrayez l'archive obtenue dans le cache de apt :
sudo apt-offline install NOM_PAQUET-offline.zip
Puis installez les paquets de manière classique :
sudo apt upgrade
Alternativement, extrayez l'archive obtenue dans un répertoire temporaire :
unzip -l NOM_PAQUET-offline.zip
Puis installez les paquets de manière classique :
sudo apt-get -o dir::cache::archives=CHEMIN/VERS/LE/DOSSIER install NOM_PAQUET
sudo dpkg -i *.deb
Reportez-vous au tutoriel Comment créer un miroir de dépôt local ?
La procédure décrite ci-dessous permet la mise à jour de votre liste de paquets. À noter pour les utilisateurs avertis qu'il existe des alternatives sous forme de scripts.
À tester si rien d'autre ne marche. Cependant il est bon de l'exposer car ça permet de voir ce qui se passe vraiment.
Ouvrez un terminal et tapez :
sudo apt-get update -qq --print-uris >> toto.txt && gedit toto.txt
Dans le fichier qui s'ouvre, vous trouverez notamment une url par ligne. Enregistrez le fichier sur votre clé, allez sur l'ordinateur (Linux) où vous avez Internet, et pour chaque url, tapez :
wget <url>
Puis ramenez les fichiers téléchargés sur votre ordinateur hors-ligne. Placez-vous dans le dossier où vous avez téléchargé (on suppose dans les prochaines commandes que ce sont les seuls fichiers .gz du répertoire). Comme précédemment afin d'alléger la présentation de la page, voici les commandes successives en un seul bloc :
# On copie les paquets dans le bon répertoire sudo cp *.gz /var/lib/apt/lists/ # On se place dans ce répertoire cd /var/lib/apt/lists/ # On dézippe les listes de paquets sudo gunzip *.gz
À ce stade cela pourrait marcher, mais vous allez avoir des problèmes en lançant l'utilitaire de mise à jour qui va vous dire qu'il n'a pas réussi à déverrouiller les fichiers. C'est pourquoi il faut ajouter :
sudo chmod 755 *_Packages
Vos listes sont désormais à jour.
Cette méthode s'utilise avec le terminal mais elle est assez simple et efficace ! Les listes de paquets utilisées étant celles de l'ordinateur relié à Internet, il n'est pas nécessaire de passer par les étapes précédentes (c.-à-d. la mise à jour de la liste source, et la mise à jour des listes des paquets) à condition que les listes de l'ordinateur relié à Internet soient suffisamment à jour (mais si vous pouvez le faire c'est quand même mieux).
cd /chemin/vers/votre/dossier/tempo
Par exemple :
cd /home/raouf/Bureau/tempo
suivi de la touche ENTRÉE du clavier.
apt-get --install-recommends -o "Dir::Cache::archives=`pwd`" -o "Debug::NoLocking=true" -o "Dir::State::status=/dev/null" -d install monpaquet
Reste alors à patienter selon le débit de votre connexion . Vous pouvez répéter cette commande une autre fois pour vous assurer que toutes les dépendances ont bien été téléchargées. (: bizarre)
cd /chemin…/tempo
+ ENTRÉE).sudo dpkg -i *.deb
Cette méthode est particulièrement intéressante dans un dualboot avec un réseau Windows opérationnel et un réseau Ubuntu ne fonctionnant absolument pas (wifi comme ethernet).
mkdir /home/$USER/offline cd /mnt/c/Users/Nomd'utilisateurWindows/Downloads cp apt-offline_1.3.1_all.deb /home/$USER/offline sudo dpkg -i /home/$USER/offline/*.deb
sudo apt-offline --verbose set /home/$USER/offline/liste.sig
Mais c'est uniquement pour vérifier que la méthode marche car cette action doit se faire sur l'ordinateur qui n'a pas d'Internet.
cp /home/$USER/offline/liste.sig /mnt/c/Users/Nomd'utilisateurWindows/Downloads
cd /mnt/c/Users/Nomd'utilisateurWindows/Downloads mkdir apt sudo apt-offline get liste.sig -d apt --threads 1