如何将Ubuntu系统补丁同步至Google Artifact Registry私有仓库更新离线VM
同步Ubuntu系统补丁/更新到Google Artifact Registry离线仓库
步骤1:在联网Ubuntu机器上生成更新签名文件
在能联网的Ubuntu机器上,先刷新本地源缓存,再生成包含系统更新、安全补丁、Bug修复的签名文件:
sudo apt update sudo apt-offline set --update --upgrade --security --bugfix update.sig
--update:获取源的最新索引信息--upgrade:包含所有常规系统升级包--security:仅抓取官方安全补丁--bugfix:包含官方标记为Bug修复的更新包
步骤2:下载所有需要的更新包
用生成的签名文件下载对应的deb包及依赖,打包成压缩文件:
sudo apt-offline get update.sig --bundle update-bundle.zip
这个压缩包会包含所有满足需求的deb包,以及更新后的源索引文件。
步骤3:整理包结构并生成源索引
解压下载的压缩包,然后生成符合Ubuntu源规范的索引文件:
unzip update-bundle.zip -d update-packages cd update-packages dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
注意:要根据你的离线VM的Ubuntu版本(如jammy、focal)和架构(如amd64),把这些文件放到Google Artifact Registry仓库对应的目录下(比如ubuntu/jammy/main/amd64/),确保和离线VM的apt源配置路径匹配。
步骤4:上传到Google Artifact Registry
确保你已经配置好gcloud CLI并拥有仓库访问权限,然后用gsutil同步文件到仓库:
# 先配置Docker认证(如果还没做) gcloud auth configure-docker us-central1-docker.pkg.dev # 同步本地包目录到仓库对应路径 gsutil rsync -r update-packages gs://your-artifact-registry-bucket/ubuntu/jammy/main/amd64/
替换命令中的区域、仓库桶名和路径为你自己的实际信息。
步骤5:在离线VM上应用更新
离线VM的apt源已经配置指向你的Google Artifact Registry私有仓库,直接执行以下命令完成更新:
sudo apt update # 执行全量系统升级 sudo apt upgrade -y # 仅安装安全补丁(可选) sudo apt-get install --only-upgrade -y $(apt-get --just-print upgrade | grep -E '^Inst.*security' | awk '{print $2}')
注意事项
- 定期重复上述流程(比如每周一次),确保离线仓库的补丁保持最新状态
- 严格匹配离线VM的Ubuntu版本和架构,不要跨版本上传包,避免依赖冲突
apt-offline会自动处理所有依赖包,无需手动解决依赖问题- 确认离线VM的
/etc/apt/sources.list中源条目正确指向你的私有仓库,格式示例:deb [arch=amd64] https://us-central1-docker.pkg.dev/your-project/your-repo/ubuntu jammy main
内容的提问来源于stack exchange,提问作者Shivkumar Mallesappa
相关产品推荐
相关产品推荐

