Dependencies 如何列出/下载debian包的递归依赖项?
我需要列出/下载debian包的所有递归依赖项 假设我需要安装包a.deb,它依赖于包b.deb,包b.deb又依赖于包c.deb 我需要下载所有依赖递归的包,这样它们就可以安装在其他机器上,而无需任何internet访问Dependencies 如何列出/下载debian包的递归依赖项?,dependencies,package,debian,Dependencies,Package,Debian,我需要列出/下载debian包的所有递归依赖项 假设我需要安装包a.deb,它依赖于包b.deb,包b.deb又依赖于包c.deb 我需要下载所有依赖递归的包,这样它们就可以安装在其他机器上,而无需任何internet访问 谢谢。您可以使用apt rdepends递归获取包的所有依赖项。通过将结果管道化到grep,您可以只获得包名,而忽略不需要的信息 示例: $ apt-rdepends cowsay | grep -E '^[a-zA-Z0-9]' cowsay perl libbz2-1
谢谢。您可以使用
apt rdepends
递归获取包的所有依赖项。通过将结果管道化到grep,您可以只获得包名,而忽略不需要的信息
示例:
$ apt-rdepends cowsay | grep -E '^[a-zA-Z0-9]'
cowsay
perl
libbz2-1.0
libc6
libgcc1
gcc-4.9-base
multiarch-support
libdb5.3
libgdbm3
dpkg
liblzma5
libselinux1
libpcre3
tar
libacl1
libattr1
zlib1g
install-info
perl-base
perl-modules
输出:
$ apt-rdepends cowsay | grep -E '^[a-zA-Z0-9]'
cowsay
perl
libbz2-1.0
libc6
libgcc1
gcc-4.9-base
multiarch-support
libdb5.3
libgdbm3
dpkg
liblzma5
libselinux1
libpcre3
tar
libacl1
libattr1
zlib1g
install-info
perl-base
perl-modules
然后,您可以使用apt get download$package
下载这些软件包,并在您的机器上脱机安装它们
默认情况下,apt
安装建议,因此您可能希望像这样运行apt rdepends
:
apt-rdepends -f Depends,PreDepends,Recommends -s Depends,PreDepends,Recommends cowsay
由于默认情况下,apt rdepends
遵循并仅显示依赖项,因此预先部署。如前所述-安装apt rdepends软件包,然后运行此程序
$ apt-rdepends gcc | awk '$1 ~ /^Depends:/{print $2}' | xargs apt-get download
这一行将递归地获取所有依赖项,并查看第二个管道,将按名称从stdio下载所有包,这一行-
awk$1~/^取决于:/{print$2}
。打印出包的名称。如果您另外运行这些命令,您就会明白我的意思。由于某种原因,apt rdepends
对我不起作用(在搜索“docker engine”包时,它错过了对libltdl7
的依赖,后者是在docker engine 1.11.1-0
中引入的)UPD可能是因为默认情况下,apt rdepends
不遵循并且不列出建议。并且不遵循虚拟包
因此,我提出了以下命令套件
递归地列出依赖项
(可选)安装这些依赖项
这稍微延伸了问题的范围,但似乎符合问题的意图
您需要为刚下载的软件包建立索引。这是从下载所有.deb的同一文件夹中完成的:
$ dpkg-scanpackages . | gzip -9c > Packages.gz
然后只需将该文件夹(all.deb+Packages.gz文件)复制到无法访问Internet的目标系统,并将该文件夹添加到APT源代码列表中
$ echo "deb file:<your folder here> ./" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update
一旦你知道了你需要的依赖项,你可以编辑/etc/apt/sources.list并添加/etc/apt/preferences.d/somename.pref,如果离线的机器有一个更新的Ubuntu版本(我试过了,它对旧版本不起作用)。请看:medium.com/@george.shuklin/…这太棒了!非常感谢!我想补充一点,为了在我的Ubuntu18.04新安装上运行,我必须对安装进行以下更改:echo“deb[allow unsecure=yes]file:./”| sudo tee-a/etc/apt/sources.list和sudo apt get install--allow unauthenticated docker engine您还可以使用“deb[trusted=yes]file:/your/folder/path/here/”因此,我不需要在apt命令中使用“-allow unauthenticated”(允许未经验证)。为什么要使用
——不使用pre-dependents
?我认为需要安装pre Dependes。@Steelywhing you's right:我相应地编辑了答案。谢谢相关的:
$ sudo apt-get install docker-engine