我有一台没有互联网的 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
,一种(更)用户友好的离线依赖管理方式。您需要先下载 debfile 并将其传输到离线机器上进行安装。您可以使用类似的东西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
,你可能会找到问题的替代解决方案,尽管我对此的测试至少可以说没有定论。