
当我们联网时,借助于 Ubuntu 上的包管理工具 apt 和社区的一帮幕后英雄,安装任何软件包几乎都是一行命令的事儿。
但有时候别无选择,需要离线安装,当我们漫不经心地把对应的 .deb 包拷到离线主机上,以为接下来又是枯燥无聊的一天时,却意外遭遇滑铁卢 —— 终端贴心地提示你缺少一系列的依赖。
当把 XX 依赖拷到离线主机,进行安装时,竟然又提示缺少另一个依赖。。。命„碳å。。。于是你度过了忙碌而充实的一天。晚上躺在床上,你尽量安慰自己今天并非一无所获 —— 毕竟还锻炼了身体。
为了拯救无聊的碳基生命的一天,让我们在(和离线机器一样的)联网机器环境中,把依赖列出来,可以借助于 apt-cache。
apt-cache depends \
--recurse \
--no-recommends \
--no-suggests \
--no-conflicts \
--no-breaks \
--no-replaces \
--no-enhances \
<package-name>
也可以借助于 apt-rdepends(r means recursive)。
apt-rdepends <package-name>
接下来利用管道一次性把软件包及其所有依赖下载下来。
apt download $(apt-rdepends <package-name> | grep -v "^ ")
将当前路径下的所有 .deb 包挪到离线机器上,dpkg -i *.deb 一把梭哈。
下载 fish shell 及其依赖的一个案例
apt download $(apt-rdepends fish \
| grep -v "^ " \
| sed 's/debconf-2.0/debconf/g' \
| sed -r 's/^www-browser$//g' \
| sed '/^$/d')
好了,今天就水到这里。
0 条评论