J'ai un ordinateur Ubuntu sans Internet et un ordinateur Ubuntu avec Internet. Celui sans Internet nécessite l'installation d'un pilote via ndiswrapper. Le problème est que cela ndiswrapper-dkms
dépend de dkms
ce qui dépend de quelques choses, et ces quelques choses dépendent de beaucoup de choses, qui dépendent de plus, etc. Jusqu'à présent, j'ai téléchargé 92 dépendances manuellement et j'en ai encore besoin de plus. J'ai utilisé le code
for i in $(apt-cache depends <package> | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done
qui fait le travail mais uniquement pour les dépendances d'un package, pas les dépendances des dépendances du package et ainsi de suite. Cela s'est transformé en un combat de plusieurs heures pour obtenir tous les packages et c'est vraiment fastidieux. J'ai exécuté ce code pour télécharger les fichiers .deb sur le lecteur USB de mon ordinateur en ligne, puis je me suis déplacé vers l'ordinateur hors ligne pour insérer le lecteur, puis j'ai exécuté sudo apt install ./*
dans le dossier et espéré le meilleur. Il crache généralement quelque chose comme ceci:
...
The following packages have unmet dependencies:
binutils : Depends: binutils-common (= 2.30-21ubuntu1~18.04.1) but 2.30-21ubuntu1~18.04 is to be installed
Depends: libbinutils (= 2.30-21ubuntu1~18.04.1) but 2.30-21ubuntu1~18.04 is to be installed
Depends: binutils-x86-64-linux-gnu (= 2.30-21ubuntu1~18.04.1) but 2.30-21ubuntu1~18.04 is to be installed
cpp-doc : Depends: cpp-7-doc (>= 7.4.0-1~) but it is not installable
file : Depends: libmagic1 (= 1:5.32-2ubuntu0.2) but 1:5.32-2ubuntu0.1 is to be installed
g++-7 : Depends: libstdc++-7-dev (= 7.4.0-1ubuntu1~18.04) but it is not installable
g++-multilib : Depends: g++-7-multilib (>= 7.4.0-1~) but it is not installable
gcc-7-multilib : Depends: lib32gcc-7-dev (= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libx32gcc-7-dev (= 7.4.0-1ubuntu1~18.04) but it is not installable
gfortran : Depends: gfortran-7 (>= 7.4.0-1~) but it is not installable
glibc-doc : Depends: glibc-doc-reference (>= 2.18) but it is not installable
libasan4-dbg : Depends: libasan4 (= 7.4.0-1ubuntu1~18.04) but it is not installable
libatomic1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: libatomic1 (= 8.3.0-6ubuntu1~18.04) but it is not installable
libbabeltrace1 : Depends: libdw1 (>= 0.126) but it is not installable
libcc1-0 : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
libcilkrts5-dbg : Depends: libcilkrts5 (= 7.4.0-1ubuntu1~18.04) but it is not installable
libfl-dev : Depends: libfl2 (= 2.6.4-6) but it is not installable
libgcc-7-dev : Depends: libitm1 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libatomic1 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libasan4 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: liblsan0 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libtsan0 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libubsan0 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libcilkrts5 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
Depends: libmpx2 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
libgcc1 : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
libgcc1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
libgomp1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: libgomp1 (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
libitm1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: libitm1 (= 8.3.0-6ubuntu1~18.04) but it is not installable
liblsan0-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: liblsan0 (= 8.3.0-6ubuntu1~18.04) but it is not installable
libmpx2-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: libmpx2 (= 8.3.0-6ubuntu1~18.04) but it is not installable
libquadmath0-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: libquadmath0 (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
libstdc++6 : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
libtsan0-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
Depends: libtsan0 (= 8.3.0-6ubuntu1~18.04) but it is not installable
libubsan0-dbg : Depends: libubsan0 (= 7.4.0-1ubuntu1~18.04) but it is not installable
libumfpack5 : Depends: libcholmod3 (>= 1:4.5.2) but it is not going to be installed
m4 : Depends: libsigsegv2 (>= 2.9) but it is not installable
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
Est-ce que quelqu'un connaît une méthode pour simplement vider tous les fichiers .deb pour les dépendances d'un package et toutes les sous-dépendances dans un seul dossier pour sauver ma santé mentale? THX!
la source
Recommends
etSuggests
au lieu de seulementDepends
je m'attends à ce que vous finissiez par installer tout Internet, quel que soit le package à partir duquel vous démarrez.Réponses:
Jetez un œil à
apt-offline
, une manière (plus) conviviale de gérer les dépendances hors ligne. Vous devrez d'abord l'installer en téléchargeant le fichier debfile et en le transférant sur votre machine hors ligne. Vous pouvez utiliser quelque chose commesudo apt download apt-offline
pour gérer le téléchargement. L'installation peut être effectuée en utilisantsudo dpkg -i /path/to/your/debfile.deb
sur la machine hors ligne et uniquementsudo apt install
sur votre machine en ligne.Une fois cela fait, vous devrez préparer un tas de choses pour l'installation réelle.
Commencez par créer une signature de votre système hors ligne demandant d'installer les
ndiswrapper
packages:Copiez le fichier sur votre ordinateur en ligne et exécutez la commande suivante sur l'ordinateur en ligne pour télécharger tous les fichiers requis:
Déplacez le fichier zipfile vers votre ordinateur hors ligne et exécutez cette commande dessus:
Vous devriez avoir
ndiswrapper-dkms
installé à ce stade et tout devrait aller bien.Si l'
apt-offline
installation de votre package échoue, notez les packages dépendants qui ont échoué et résolvez-les un par un (copie manuelle si nécessaire). L'enfer de la dépendance est ennuyeux, mais malheureusement, c'est l'un des problèmes d'un système plus hors ligne.Vous pouvez jeter un oeil à
apt-rdepends
même de générer un complet graphe de dépendance. Combinez cela avecapt download
et vous pourriez avoir une solution alternative au problème, bien que mes tests avec cela n'aient pas été concluants pour le moins.la source