snap和gitlab-CI:错误:无法与服务器通信:发布http:// localhost / v2 / snaps / hello-world

时间:2019-04-23 04:15:41

标签: docker gitlab gitlab-ci snapcraft

如果我尝试在gitlab-CI管道下运行snap,安装最简单的软件包,它将失败,并显示以下信息:

  

$ snap install hello-world

     

错误:无法与服务器通信:发布   http://localhost/v2/snaps/hello-world:拨打Unix /run/snapd.socket:   连接:没有这样的文件或目录

gitlab-ci yml配置文件是有史以来最简单的文件:

image: ubuntu:18.04

before_script:
  - apt-get update -qq

test:
  script:
    - apt-get install -y snapd
    - snap version
    - snap install hello-world
    - hello-world

这是怎么回事?

3 个答案:

答案 0 :(得分:3)

就我而言,它是通过启动 snapd 服务来解决的:

systemctl start snapd.service

答案 1 :(得分:1)

似乎GithubActionsCI不使用Docker,所以我现在使用它而不是GitLabCI来构建和测试快照包。

请注意:

  • 您需要sudo才能使用apt-get安装snap,还需要使用snap命令安装任何snap软件包。
  • 如果您想运行snapcraft(来构建软件包,而不仅仅是测试它们),则可以通过apt-get来获得它,但是给出的版本有点旧(例如,它没有支持布局)。如果您想要更新的版本,则可以使用snap install snapcraft通过snap安装,但是需要一些变通办法来使其运行,例如sudo chown root:root /并传递--destructive-mode标志(请参阅{{ 3}})。

答案 2 :(得分:0)

不幸的是,snap使用了docker使用的许多基础安全技术,而且它们的表现也不尽如人意。安装快照还要求快照已运行,这不在docker中(因此出现错误)。恐怕您今天根本无法在Docker容器中可靠地安装快照。