UBUNTU 20.04 在无网络条件下,进行apt get离线安装

引言

主要就是下载相关的deb文件,然后使用dpkg -i *.deb安装。

开始

首先你还需要一台可以联网的电脑A,进行相关deb文件的下载。
当然,你还有一台电脑B,也就是目标主机,他是离线状态

# 构建下载地址
sudo mkdir -p /opt/ocean/offline-packages/archives
# 进入地址
cd /opt/ocean/offline-packages/archives
# 改变权限,详情见注1
sudo chown -Rv _apt:root /opt/ocean/offline-packages/archives
sudo chmod -Rv 700 /opt/ocean/offline-packages/archives
# 下载包和这个包的依赖,这里我实际下载的是nvidia-container-toolkit,详细解释见注2
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nvidia-container-toolkit | grep "^\w" | sort -u)

此时所有的deb相关包都被下载到了电脑A,通过手段将所有deb文件都复制到B的一个新文件夹中

# 姑且创建到 /opt/offline_packages/
mkdir -p /opt/offline_packages/
#
#.....将文件从A复制到B
#
cd /opt/offline_packages/
dpkg -i *.deb #unpack,没报错即为成功

# 题外话,由于我的安装的nvidia-container-tooltik是针对于docker的,我安装完以后忘记重启了,排查了很久,SOS。
# xdm别忘记就行

注1-权限改变

不改变权限在下载时会不完全,报错类似于

W: Download is performed unsandboxed as root as file '/opt/offline-packages/archives/libcrypt1_1%3a4.4.10-10ubuntu4_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

注2-命令的详细解释-GPT4o

sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nvidia-container-toolkit | grep "^\w" | sort -u)

这个命令的目的是下载 nvidia-container-toolkit 包及其所有依赖项,而不安装它们(这就是install和download关键词的区别)。以下是对命令每个部分的详细解释:

  1. apt-cache depends:这个命令列出一个包的所有依赖关系。通过加上选项,可以递归地列出所有依赖项,不包括建议的、推荐的、冲突的、破坏的、替换的或增强的包。

    • --recurse:递归地列出所有依赖项。
    • --no-recommends:不包括推荐的包。
    • --no-suggests:不包括建议的包。
    • --no-conflicts:不包括冲突的包。
    • --no-breaks:不包括破坏的包。
    • --no-replaces:不包括替换的包。
    • --no-enhances:不包括增强的包。
  2. nvidia-container-toolkit:这是目标包名。

  3. grep "^\w":过滤 apt-cache depends 命令输出,只保留包名(因为依赖关系信息行以空格开头,而包名行以字母或数字开头)。

  4. sort -u:对结果进行排序并去重,以确保每个包名只出现一次。

  5. sudo apt-get download:使用 apt-get 下载指定的包,而不是安装它们。$(...) 是命令替换语法,它将内部命令的输出作为参数传递给 sudo apt-get download

总结:
这个命令首先找到 nvidia-container-toolkit 包及其所有依赖项的包名,然后下载所有这些包,而不安装它们。

参考

参考1
参考2

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值