当前位置: 首页 > news >正文

离线进行apt安装的过程(在只能本地传输的ubuntu主机上使用apt安装)

在无法联网的设备上使用 apt install 安装软件包,可以通过以下步骤实现本地离线安装:


方法 1:使用预先下载的 .deb 文件

  1. 在联网机器上下载软件包及依赖
    在另一台联网的相同系统(相同发行版和版本)的机器上执行:

    apt download <包名>  # 下载主包
    apt-get install --download-only <包名>  # 下载主包及其所有依赖
    

    下载的文件默认保存在 /var/cache/apt/archives/ 目录中,均为 .deb 格式。

  2. 将文件复制到离线设备
    将下载的 .deb 文件通过U盘、移动硬盘或内网传输到离线设备的某个目录(如 ~/offline_packages)。

  3. 在离线设备上安装

    sudo dpkg -i ~/offline_packages/*.deb  # 安装所有.deb文件
    

    若依赖不完整,会报错,此时需手动补全缺失的依赖包。


方法 2:使用本地APT仓库镜像

  1. 在联网机器上创建仓库镜像
    使用 apt-mirrordebootstrap 创建完整镜像:

    sudo apt install apt-mirror
    sudo vim /etc/apt/mirror.list  # 配置镜像源(如Ubuntu官方源)
    sudo apt-mirror  # 开始同步(会消耗大量磁盘空间)
    
  2. 将镜像复制到离线设备
    将生成的镜像目录(如 /var/spool/apt-mirror)复制到离线设备的 /var/local/apt-mirror

  3. 配置离线设备的APT源
    修改离线设备的 /etc/apt/sources.list,指向本地路径:

    deb file:/var/local/apt-mirror/mirror/archive.ubuntu.com/ubuntu focal main restricted
    

    然后更新本地仓库索引:

    sudo apt update
    
  4. 正常安装软件

    sudo apt install <包名>  # APT会从本地仓库解析依赖
    

方法 3:使用 apt-offline 工具

  1. 在离线设备生成需求文件

    sudo apt-offline set offline.sig --install-packages <包名>
    
  2. 在联网机器上下载数据
    offline.sig 复制到联网机器,运行:

    apt-offline get offline.sig --bundle offline.zip
    
  3. 在离线设备应用数据包
    offline.zip 复制回离线设备,执行:

    sudo apt-offline install offline.zip
    

注意事项

  1. 系统版本一致
    确保联网和离线设备的系统版本(如Ubuntu 20.04)和架构(amd64/arm64)相同,否则依赖可能不兼容。

  2. 依赖问题
    dpkg -i 报依赖错误,需手动下载缺失的依赖包。可通过 apt-cache depends <包名> 在联网机器上查看依赖。

  3. 最小化依赖
    优先选择静态链接或依赖少的软件(如AppImage、Snap离线包),减少复杂度。


通过以上方法,可以在完全离线的环境中完成软件安装。推荐优先使用方法1或方法3,适用于单次安装;若需长期维护多台离线设备,方法2更高效。

http://www.dtcms.com/a/296211.html

相关文章:

  • 【Web APIs】JavaScript 节点操作 ⑧ ( 删除节点 - removeChild 函数 | 删除节点 - 代码示例 | 删除网页评论案例 )
  • 网站域名修改以及后续DNS配置
  • Java泛型初始化ArrayList<String>()和ArrayList<>()的区别
  • Vue3实现视频播放弹窗组件,支持全屏播放,音量控制,进度条自定义样式,适配浏览器小窗播放,视频大小自适配,缓冲loading,代码复制即用
  • C++面试8——虚函数表(vtable)
  • 【华为】笔试真题训练_20250611
  • uni-app支付宝小程序样式穿透失效
  • 森马联合新华社推出纪实短片《蹲下来试试》,以“蹲”演绎「森柔牛仔」柔韧体验
  • Android Telephony UrspRule 介绍
  • Windows上用于跨平台开发的环境工具
  • 普通三方App一般只能使用安卓原生Framework提供的公开接口
  • 螺杆支撑座安装后如何检验它的稳定性?
  • 力扣面试150题--在排序数组中查找元素的第一个和最后一个位置
  • Java中的静态变量是在“堆“还是“方法区“?
  • 无人机微型风速风向仪:翱翔天际的 “风之侦探”
  • GISBox实操指南:如何将IFC文件高效转换为3DTiles格式‌‌
  • docker及docker-compose离线安装包下载
  • Java中的抽象类 abstract 关键字
  • 第一节:认识大模型微调
  • S7-1500 与 ET200MP 的组态控制通信(Configuration Control)功能实现详解(上)
  • 【论文|复现】YOLOFuse:面向多模态目标检测的双流融合框架
  • IROS-2025 | OIKG:基于观察-图交互与关键细节引导的视觉语言导航
  • 疯狂星期四第17天运营日记
  • 手写DQN (FrozenLake环境)
  • 飞牛系统安装DataEase自定义Docker包
  • 医疗行业新变革:AR 培训系统助力手术培训精准高效​
  • 大模型回复数据标注优化方案
  • STM32-FSMC
  • 利用Web3加密技术保障您的在线数据安全
  • Java学习----原型模式