У меня есть компьютер Ubuntu без интернета и компьютер Ubuntu с интернетом. Тот, у которого нет интернета, требует установки драйвера через ndiswrapper. Проблема в том, что ndiswrapper-dkms
зависит от dkms
того, что зависит от нескольких вещей, а эти несколько вещей зависят от многих вещей, которые зависят от большего количества и так далее. Я вручную скачал 92 зависимости, и мне все еще нужно больше. Я использовал код
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
что делает работу, но только для зависимостей одного пакета, а не зависимостей зависимостей пакета и так далее. Это превратилось в многочасовую битву за получение всех пакетов, и это действительно утомительно. Я запускал этот код, чтобы загрузить файлы .deb на USB-накопитель на моем онлайн-компьютере, затем переходил на офлайн-компьютер, чтобы вставить накопитель, затем запускал sudo apt install ./*
в папке и надеялся на лучшее. Обычно он выдает что-то вроде этого:
...
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.
Кто-нибудь знает способ просто сбросить все файлы .deb для зависимостей пакетов и всех подзависимостей в одну папку, чтобы сохранить рассудок? Спасибо!
решение1
Взгляни наapt-offline
, (более) удобный способ управления офлайн-зависимостями. Сначала вам нужно будет установить его, загрузив deb-файл и перенеся его на свою офлайн-машину. Вы можете использовать что-то вроде sudo apt download apt-offline
для управления загрузкой. Установка может быть выполнена как sudo dpkg -i /path/to/your/debfile.deb
на офлайн-машине, так и только sudo apt install
на вашей онлайн-машине.
После этого вам нужно будет подготовить кучу вещей для самой установки.
Начните с создания подписи вашей автономной системы с просьбой установить пакеты
ndiswrapper
:sudo apt-offline set offline.sig --install-packages ndiswrapper-dkms
Скопируйте файл на свой онлайн-компьютер и выполните на нем следующую команду, чтобы загрузить все необходимые файлы:
apt-offline get offline.sig --bundle ndis-ao.zip
Переместите пакет zip-файлов обратно на автономный компьютер и выполните на нем следующую команду:
sudo apt-offline install ndis-ao.zip
На этом этапе вы уже должны были ndiswrapper-dkms
установить его, и все должно быть хорошо.
Если ваш apt-offline
пакет не устанавливается, запишите зависимые пакеты, которые не удалось установить, и устраните их по одному (копируя вручную по мере необходимости). Ад зависимостей раздражает, но, к сожалению, это одна из проблем более автономной системы.
Вы можете попробовать взглянуть наapt-rdepends
а также для созданияполныйграфик зависимости. Объедините это с apt download
и вы, возможно, получите альтернативное решение проблемы, хотя мое тестирование с этим было, мягко говоря, неубедительным.