You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

离线环境下使用Ubuntu 22.04 Server ISO自动安装ubuntu-desktop时Firefox Snap依赖问题的解决方案咨询

离线环境下使用Ubuntu 22.04 Server ISO自动安装ubuntu-desktop时Firefox Snap依赖问题的解决方案咨询

嘿,我刚好在离线环境的Ubuntu部署中碰到过类似的Snap依赖坑,给你几个实际验证过的方向参考:

方案一:预加载Snap包到安装环境,手动离线安装

这应该是最直接解决Firefox Snap问题的方式:

  • 先在联网的Ubuntu 22.04机器上,下载Firefox及其所有依赖Snap包,用命令:
    snap download firefox --channel=stable
    snap download core20  # Firefox依赖的核心Snap
    snap download gtk-common-themes  # 可能需要的主题依赖
    
    执行后会得到对应的.snap.assert文件。
  • 把这些文件上传到你离线环境内的文件服务器(比如HTTP服务器),或者直接嵌入到你的PXE镜像的自定义目录中。
  • 在autoinstall的early-command阶段,把这些文件拉取到安装临时系统里:
    early-command: |
      mkdir -p /tmp/snaps
      wget http://your-internal-server/snap-packages/*.snap -P /tmp/snaps
      wget http://your-internal-server/snap-packages/*.assert -P /tmp/snaps
    
  • 然后在autoinstall的post-install阶段,先验证Snap包的签名,再离线安装:
    post-install: |
      cd /tmp/snaps
      snap ack core20_*.assert
      snap ack firefox_*.assert
      snap install --dangerous core20_*.snap
      snap install --dangerous firefox_*.snap
    
    注意安装顺序要先装依赖包(比如core20),再装Firefox。

方案二:绕开Snap版Firefox,改用Deb包版本

Ubuntu 22.04官方其实保留了Deb版的Firefox渠道,只是默认被Snap替换了,你可以这样操作:

  • 在联网环境下,同步Mozilla官方的Deb仓库包到你的离线APT镜像中,仓库地址是deb http://ppa.launchpad.net/mozillateam/ppa/ubuntu jammy main
  • 在autoinstall的user-data里配置APT源,优先使用Deb版Firefox,同时阻止Snap版的安装:
    apt:
      sources:
        mozillateam-ppa:
          source: "deb http://your-local-mirror/mozillateam/ppa/ubuntu jammy main"
      preferences:
        - package: firefox*
          pin: release o=LP-PPA-mozillateam
          pin-priority: 501
    
  • 之后再安装ubuntu-desktop-minimal时,系统就会自动安装Deb版Firefox,不会触发Snap的在线下载请求。

方案三:延后桌面安装到Cloud-init/Ansible阶段

你提到的用ansible-pull延后处理的思路非常可行,而且灵活性更高:

  • 在autoinstall阶段只完成基础系统的部署,不要直接安装ubuntu-desktop
  • 系统启动后,通过cloud-init触发ansible-pull,从你的离线Ansible仓库拉取 playbook。
  • 在playbook中处理桌面安装:
    • 要么推送预下载好的Snap包到目标机器,执行离线安装命令;
    • 要么配置APT源优先Deb版Firefox,再执行apt install ubuntu-desktop-minimal

另外补充个小细节:如果你的离线环境需要长期支持Snap包管理,可以考虑搭建本地Snap仓库(用snap store-proxy工具),这样后续其他Snap包的安装也能离线完成,不过短期解决Firefox问题的话,预下载手动安装就足够了。

备注:内容来源于stack exchange,提问作者Ken

火山引擎 最新活动