Installer paquets avec dépendances sur système sans Internet

Fermé
lenainjaune Messages postés 680 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 16 décembre 2024 - 15 nov. 2022 à 15:46
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 30 nov. 2022 à 19:55

Bonjour à tou.te.s :),

A la maison j'ai un PC Debian Bullseye 11 mais depuis 1 semaine, je n'ai plus Internet (en cours de dépannage) mais je souhaiterais quand même installer certains paquets avec leurs dépendances. Au boulot j'ai Internet. J'ai connaissance de apt-offline mais ça obligerait à avoir le paquet apt-offline installé sur le PC offline ... ce que je ne peux pas faire puisque je n'ai pas Internet ou alors j'ai mal compris.

Une solution ?

Avec adelphité,

lnj


Linux / Firefox 78.0

2 réponses

mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
15 nov. 2022 à 16:22

Bonjour,

L'idéal serait d'avoir une Debian bullseye qui a du réseau. Tu peux par exemple installer une machine virtuelle (e.g., à l'aide de virtualbox) à la maison sous Debian bullseye. Monte une clé USB dans /media/usb. Ensuite, en root :

mount /dev/sdb1 /media/usb # Si ta clé USB est /dev/sdb1
mkdir /media/usb/paquets
cd /media/usb/paquets
apt update
apt download le_paquet_qui_m_interesse
umount /media/usb

Le paquet et ses dépendances sont téléchargées dans /media/usb/paquets.

Ensuite reviens avec ta clé USB sur la machine qui n'a pas de réseau, et copie les paquets stockés sur la clé dans dans /var/cache/apt/archives. En root :

mount /dev/sdb1 /media/usb
cp /media/usb/paquets/*deb /var/cache/apt/archives
umount /media/usb
apt install le_paquet_qui_m_interesse

Comme tout est en cache l'installation devrait fonctionner.

Bonne chance

0
lenainjaune Messages postés 680 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 16 décembre 2024 52
15 nov. 2022 à 17:26

Coucou :D

C'est l'inverse, c'est chez moi que je n'ai pas Internet ;)

apt download le_paquet_qui_m_interesse

Il ne télécharge PAS les dépendances apparemment.

Pour avancer sur le sujet, je suis en train d'essayer de récupérer le package apt-offline et ses dépendances.

En suivant ce lien, j'ai testé :

apt download $( apt-rdepends apt-offline | grep -v "^ " | sed 's/debconf-2.0/debconf/g' )

Et il a bien téléchargé le package apt-offline et plein d'autres deb ; à voir si ça suffit !

0
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809 > lenainjaune Messages postés 680 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 16 décembre 2024
Modifié le 15 nov. 2022 à 17:32

Ah oui exact, je pensais à tort que ça téléchargeais aussi les dépendances. J'aime bien aussi cette solution qui ne nécessite pas apt-rdepends.

apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
  --no-conflicts --no-breaks --no-replaces --no-enhances \
  --no-pre-depends ${PACKAGES} | grep "^\w")

... en remplaçant ${PACKAGES} par la liste des paquets qui nous intéressent.

Bonne chance

1
lenainjaune Messages postés 680 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 16 décembre 2024 52 > mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024
15 nov. 2022 à 19:21

Cool merci :D ! J'aime bien n'avoir que des outils natifs !

De plus la version que tu as trouvé récupère plus de packages que celle que j'ai trouvé qui en plus se révèle insuffisante dans mon cas.

En virtu, j'ai réussi à installer apt-offline (bien que j'ai quelques galères avec le réseau qui m'a forcé à redémarrer la VM pour voir une réparation d'inodes => ?) ; en tout cas, j'ai pu générer le fichier sig nécessaire pour pouvoir rapatrier ce dont j'ai besoin avec apt-offline

Je vais aussi tenter la solution avec synaptic au cas où ça donne plus de résultats.

Je te dirais si ça a marché !

0
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
16 nov. 2022 à 11:09

Bonjour

1) Si la base de paquets connues par APT est récente, tu peux directement injecter les paquets dans /var/cache/apt/archives et tu pourras les installer avec apt comme si tu avais du réseau.

2) Sinon

2.a) Il vaut mieux utiliser apt-offline pour mettre à jour la base APT et ainsi pouvoir s'appuyer sur sa capacité à gérer les dépendance.

2.b) si pour une raison donnée, tu ne veux pas ou ne peux pas apt-offline, alors tu peux t'en sortir en répétant autant de fois que nécessaire :

sudo dpkg -i /media/usb/le_paquet_qui_m_interesse_x.y.z.deb

Le problème c'est que dpkg ne sait pas gérer les dépendances (c'est d'ailleurs l'un des gros apports d'apt), et si la base APT n'est pas à jour tu ne pourras pas réparer les dépendances avec :

sudo apt-get install -f

... même si tu copies tes paquets dans /var/cache/apt/archives.

Répéter la commande dpkg fera ce qu'il faut, mais pour APT, chacun des paquets ainsi installé sera marqué en installation explicite (et non par dépendance). Ce statut se voit notamment dans aptitude (paquets iA vs paquets i) et corriger cela nécessite vraisemblablement de passer par apt-mark. Je n'ai jamais vraiment creusé ces aspects, car les seules fois où je dois bidouiller ainsi, c'est pour installer des firmwares de carte réseau (afin d'en avoir !) et ces paquets n'ont pas de dépendances. Mais vu que dans ton cas, tu as des dépendances, cette discussion donne des éléments de pour cette autre approche.

Bonne chance

0
lenainjaune Messages postés 680 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 16 décembre 2024 52
30 nov. 2022 à 18:25

Coucou :)

Désolé mais des problèmes de santé récents m'ont fait mettre ce projet en pause (je veux trop en faire et à un moment ça casse).

Là, maintenant j'ai Internet par un généreux partage de Wifi (aussi je caresse l'espoir de retrouver ma connexion d'ici peu) et j'ai pu installer apt-offline et générer mon fichier de signature nécessaire pour télécharger depuis un système online pour qu'au prochain problème similaire je puisse installer les paquets manquants sans Internet.

Je n 'ai pas réussi à installer offline les paquets avec leur dépendance (il y avait toujours un truc qui coinçait). J'ai testé plein de solutions mais je n'ai pas du faire ce qui fallait. Je garde sous le coude aussi la possibilité de copier directement le paquet et ses dépendances dans /var/cache/apt/archive pour installer ce paquet.

Toutefois je ne laisse pas tomber ce sujet, j'ai envie de trouver une méthode qui marche si je dois installer sur un PC qui est constamment offline (ex : chalet dans la montagne :D), j'expérimenterais sans doute plus tard et ne manquerais pas de faire un retour.

En tout cas merci du temps que tu m'as consacré :)

lnj

0
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809 > lenainjaune Messages postés 680 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 16 décembre 2024
30 nov. 2022 à 19:55

Hello lenainjaune,

J'espère que tu vas vite te rétablir.

Concernant ton problème, je me permets de te rappeler que si ton problème consiste à installer un paquet firmware (sans dépendance) de sorte à avoir du réseau sur le PC impacté, le plus simple est de récupérer manuellement le .deb depuis un PC qui a une connexion fonctionnelle (par exemple ici pour les cartes intel), le mettre sur ta clé USB, monter la clé USB sur le PC impacté et l'installer avec :

sudo dpkg -i /media/usb/firmware-iwlwifi_20221109-2_all.deb

Dans ce cas particulier, pas besoin d'apt-offline, car le paquet n'a pas de dépendance, et sa version est au moins aussi récente que celle connue par APT. Comme il n'y a pas de dépendances, pas besoin de l'injecter dans /var/cache/apt/archives car on l'installe directement avec dpkg, sans passer par apt. Bien entendu, si le paquet qui t'intéresse a de nombreuses dépendances, apt-offline est sans doute plus indiqué.

Bonne chance et bon rétablissement

0