Mam komputer Ubuntu bez internetu i komputer Ubuntu z Internetem. Ten bez internetu wymaga zainstalowania sterownika przez ndiswrapper. Problem polega na tym, że ndiswrapper-dkms
zależy od tego, dkms
co zależy od kilku rzeczy, a te kilka rzeczy zależy od wielu rzeczy, które zależą od więcej i tak dalej. Do tej pory ręcznie pobrałem 92 zależności i nadal potrzebuję więcej. Korzystałem z kodu
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
która wykonuje zadanie, ale tylko dla zależności jednego pakietu, a nie dla zależności pakietu i tak dalej. Zmieniło się to w wielogodzinną walkę o zdobycie wszystkich pakietów i jest to naprawdę nudne. Uruchomiłem ten kod, aby pobrać pliki .deb na dysk USB na moim komputerze online, następnie przeniosłem się na komputer offline, aby włożyć dysk, a następnie uruchomiłem sudo apt install ./*
folder i miałem nadzieję na najlepsze. Zwykle wyrzuca coś takiego:
...
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.
Czy ktoś zna metodę, aby po prostu zrzucić wszystkie pliki .deb dla zależności pakietów i wszystkich zależności zależnych do jednego folderu, aby zapisać moje zdrowie psychiczne? Dzięki!
źródło
Recommends
iSuggests
zamiast tylkoDepends
spodziewam się, że skończysz instalować cały internet bez względu na to, od którego pakietu zaczniesz.Odpowiedzi:
Spójrz na
apt-offline
(bardziej) przyjazny dla użytkownika sposób zarządzania zależnościami offline. Najpierw musisz go zainstalować, pobierając plik debf i przesyłając go na komputer offline. Możesz użyć czegoś takiegosudo apt download apt-offline
do obsługi pobierania. Instalację można wykonać za pomocąsudo dpkg -i /path/to/your/debfile.deb
na komputerze offline i tylkosudo apt install
na komputerze online.Gdy to zrobisz, musisz przygotować kilka rzeczy do faktycznej instalacji.
Zacznij od utworzenia podpisu swojego systemu offline z prośbą o zainstalowanie
ndiswrapper
pakietów:Skopiuj plik na komputer online i uruchom następujące polecenie na komputerze online, aby pobrać wszystkie wymagane pliki:
Przenieś pakiet zip z powrotem na komputer offline i uruchom na nim następujące polecenie:
Powinieneś
ndiswrapper-dkms
zainstalować w tym momencie i wszystko powinno być dobrze.Jeśli
apt-offline
pakiet nie zostanie zainstalowany, zanotuj pakiety zależne, które uległy awarii, i rozwiąż je jeden po drugim (ręcznie kopiuj w razie potrzeby). Zależność od piekła jest denerwująca, ale niestety jest to jeden z problemów związanych z systemem bardziej offline.Możesz także spróbować przyjrzeć się,
apt-rdepends
aby wygenerować pełny wykres zależności. Połącz to z,apt download
a możesz mieć alternatywne rozwiązanie problemu, chociaż moje testy z tym były co najmniej niejednoznaczne.źródło