7

如果我尝试在 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

这是怎么回事?

4

3 回答 3

4

在我的情况下,它是通过启动snapd服务来解决的:

systemctl start snapd.service
于 2021-01-29T18:53:29.817 回答
3

不幸的是,snap 使用了 docker 使用的许多底层安全技术,而且它们的性能不是很好。安装 snap 还需要 snapd 正在运行,它不在 docker 中(因此出现错误)。恐怕您今天根本无法在 docker 容器中可靠地安装 snap 包。

于 2019-04-23T05:40:39.250 回答
2

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

请注意:

  • 您需要 sudo 才能使用 apt-get 安装 snap,还需要使用 snap 命令安装任何 snap 包。
  • 如果你想运行snapcraft(构建包,而不仅仅是测试它们),通过apt-get工程获取它,但提供一个有点旧的版本(例如它不支持布局)。如果你想要一个更新的版本,你可以通过 snap with 安装它,snap install snapcraft但你需要一些变通方法来让它运行,例如sudo chown root:root /并传递--destructive-mode标志(参见https://forum.snapcraft.io/t/permissions-problem-using -snapcraft-in-azure-pipelines/13258/16)。
于 2019-12-20T07:58:38.200 回答