如果我尝试在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
这是怎么回事?
答案 0 :(得分:3)
就我而言,它是通过启动 snapd
服务来解决的:
systemctl start snapd.service
答案 1 :(得分:1)
似乎GithubActionsCI不使用Docker,所以我现在使用它而不是GitLabCI来构建和测试快照包。
请注意:
snapcraft
(来构建软件包,而不仅仅是测试它们),则可以通过apt-get
来获得它,但是给出的版本有点旧(例如,它没有支持布局)。如果您想要更新的版本,则可以使用snap install snapcraft
通过snap安装,但是需要一些变通办法来使其运行,例如sudo chown root:root /
并传递--destructive-mode
标志(请参阅{{ 3}})。答案 2 :(得分:0)
不幸的是,snap使用了docker使用的许多基础安全技术,而且它们的表现也不尽如人意。安装快照还要求快照已运行,这不在docker中(因此出现错误)。恐怕您今天根本无法在Docker容器中可靠地安装快照。