统信uos构建离线apt源需四步:一、联网机安装dpkg-dev并创建仓库目录(如/tmp/uos-offline-repo);二、复制所有.deb包至该目录并设644权限;三、执行dpkg-scanpackages . /dev/null | gzip -9c > packages.gz生成索引;四、配置trusted=yes本地源、apt update后即可在离线机用apt install自动解析依赖安装。

统信系统如何使用dpkg-scanpackages做离线源
你需要在断网的统信UOS设备上长期、批量安装多个.deb软件包,且希望像联网时一样用apt install命令自动解析依赖、避免手动补包。这必须提前在联网机器上用dpkg-scanpackages生成APT可识别的本地仓库元数据。
准备离线包目录与工具
打开联网的统信UOS终端,确认已安装dpkg-dev:sudo apt install dpkg-dev -y。
创建专用仓库目录,例如:【mkdir -p /tmp/uos-offline-repo】。这个路径后续要写入源列表,不能用临时挂载点或/home下的用户目录(权限或路径稳定性不足)。
把所有待离线安装的.deb包复制进去:sudo cp ~/Downloads/*.deb /tmp/uos-offline-repo/。
检查文件权限:ls -l /tmp/uos-offline-repo/ 必须能看到所有.deb文件且属主为root或当前用户有读取权;若出现权限拒绝,立即执行 sudo chmod 644 /tmp/uos-offline-repo/*.deb。
生成Packages.gz索引文件
进入仓库目录:cd /tmp/uos-offline-repo。
执行核心命令生成APT所需元数据:【dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz】。这里/dev/null是必需参数,跳过override文件处理;不加它会导致Packages.gz格式异常,后续apt update会报错“Invalid ‘Package’ field”。
验证是否生成成功:ls -lh Packages.gz。正常应看到几KB到几百KB大小的压缩文件;若文件为空或报错“command not found”,说明dpkg-dev未装或路径错误。
配置本地源并启用
第一步:添加源记录。执行命令:【echo "deb [trusted=yes] file:/tmp/uos-offline-repo ./" | sudo tee /etc/apt/sources.list.d/offline-local.list】。注意路径必须以file:/开头,末尾的/.不可省略,否则apt无法识别为有效源。
第二步:更新索引:sudo apt update。
第三步:检查是否生效:apt list --installed | grep offline,或直接搜索一个已放入仓库的包名,如apt list com.163.music.deepin。如果返回“installed”或“upgradable”,说明源已加载成功。
若apt update报错“Failed to fetch … no such file”,请立刻检查:1)Packages.gz是否真实存在于/tmp/uos-offline-repo/;2)file:后路径是否多写了斜杠(如file:///tmp/…是错的);3)是否漏掉[trusted=yes]导致GPG校验失败。
在离线机上使用该源安装软件
将整个/tmp/uos-offline-repo目录(含Packages.gz)拷贝到目标离线机的相同路径下,例如仍放在/tmp/uos-offline-repo。
在离线机上重复执行源配置命令:sudo sh -c 'echo "deb [trusted=yes] file:/tmp/uos-offline-repo ./" > /etc/apt/sources.list.d/offline-local.list'。
运行sudo apt update ——此时不联网也能完成,因为APT只读取本地Packages.gz。
最后执行安装:sudo apt install com.163.music.deepin。APT会自动从本地仓库中匹配主包及全部依赖,无需再手动dpkg -i或apt --fix-broken。











