ubuntu 离线安装包,以 vim 为例

整个过程主要分为"联网电脑上下载打包 "和"离线电脑上安装使用"两大步。

在联网电脑上:准备离线安装包

  1. 创建并进入工作目录。为了保持整洁,我们创建一个专门存放包的文件夹:

    bash 复制代码
    mkdir -p ~/offline-vim
    cd ~/offline-vim
  2. 下载 vim 及其所有依赖包 。这里用了一条命令,它会自动分析 vim 的全部依赖并下载 :

    bash 复制代码
    apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^\w" | sort -u)

    命令执行后,~/offline-vim 文件夹里会出现很多 .deb 文件。

  3. 生成软件包索引文件 。为了让 apt 能识别这个文件夹为一个"软件源",需要生成索引 :

    bash 复制代码
    sudo apt install dpkg-dev -y       # 安装所需工具
    dpkg-scanpackages -m . /dev/null | gzip -9c > Packages.gz

    这个 Packages.gz 文件就是 APT 的"目录",记录了有哪些包以及它们的依赖关系 。

  4. 打包并传输到U盘 。将整个 offline-vim 文件夹复制到U盘:

    bash 复制代码
    cd ~
    cp -r offline-vim /media/你的U盘路径/

    请将 /media/你的U盘路径/ 替换为实际的U盘挂载点。

在离线电脑上:配置本地源并安装

  1. 从U盘复制到系统 。将U盘插入离线电脑,把整个 offline-vim 文件夹复制到一个方便的地方,比如家目录 :

    bash 复制代码
    cp -r /media/你的U盘路径/offline-vim ~/
  2. 配置本地 APT 源。我们需要告诉系统,把这个文件夹当作安装源 。

    bash 复制代码
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 备份原文件
    echo "deb [trusted=yes] file:///home/你的用户名/offline-vim ./" | sudo tee -a /etc/apt/sources.list
    • [trusted=yes] 表示信任这个本地源,跳过GPG密钥检查 。
    • file:///home/你的用户名/offline-vim 是包的路径。
    • 请务必将 你的用户名 换成实际的用户名。
    • 如果为了更加直观,可以将 /etc/apt/sources.list 中的其他源都注释了,只留下最后一行。
  3. 更新源并安装 vim。现在就可以像在线一样操作了:

    bash 复制代码
    sudo apt update      # 读取本地Packages.gz,更新列表 
    sudo apt install vim # 从本地安装vim及其依赖 

    注意这里执行的是 sudo apt update 而不是 sudo apt upgrade

    执行之后,用命令 apt list 查询可安装的依赖,或者定点查询 apt search

  4. 验证安装。安装完成后验证一下:

    bash 复制代码
    vim --version
  5. 其它验证方式。如果安装的是一些依赖,则可以使用如下命令进行检查:

bash 复制代码
apt list --installed | grep libusb
# 或者
dpkg -l libusb-1.0-0

⚠️ 关键注意事项

  • 系统版本必须一致 :联网和离线电脑的 Ubuntu 版本(如 20.04、22.04)和系统架构(如 amd64) 必须相同,否则依赖可能不兼容 。
  • 用完记得恢复源 :安装成功后,建议删除或注释掉 sources.list 里添加的那一行,并把备份的 .bak 文件还原,以免影响后续使用。

整个过程就是这样。如果在下载依赖包或者配置源的时候遇到什么报错,随时把具体信息发给我,我帮你看看问题出在哪。

相关推荐
bjzhang7529 分钟前
CentOS下安装MySQL详解
linux·mysql·centos
Jason_chen2 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld2 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统
weixin_523185324 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
凡人叶枫5 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
云栖梦泽5 小时前
玩转RK3506SDK
linux·嵌入式硬件
Java面试题总结5 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
kong@react6 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
凡人叶枫6 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
凡人叶枫6 小时前
Effective C++ 条款10:令 operator= 返回一个 reference to *this
java·linux·服务器·开发语言·c++·effective c++