From 44cc0e885e0cbf0f1f04e7b050d84ecd4223bacb Mon Sep 17 00:00:00 2001 From: Joe Groocock Date: Sun, 8 Jul 2018 18:48:28 +0100 Subject: [PATCH 1/2] Infer the community repo from the main repo URL Adds a default dl-cdn community repo if main is absent, based on /etc/alpine-release --- libmachine/provision/alpine.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libmachine/provision/alpine.go b/libmachine/provision/alpine.go index a66b01cc98..470c60ef5e 100644 --- a/libmachine/provision/alpine.go +++ b/libmachine/provision/alpine.go @@ -137,7 +137,14 @@ func (provisioner *AlpineProvisioner) Provision(swarmOptions swarm.Options, auth } log.Debug("Add Community repo") - if _, err := provisioner.SSHCommand("if ! which docker >/dev/null && ! apk info docker >/dev/null; then ver=$(awk '{split($1,a,\".\"); print a[1]\".\"a[2]}' /etc/alpine-release); echo \"http://dl-cdn.alpinelinux.org/alpine/v$ver/community\" >> /etc/apk/repositories; apk update; fi"); err != nil { + if _, err := provisioner.SSHCommand(` + if ! grep -q '^[[:blank:]]*[^#].*community$' /etc/apk/repositories; then + if ! grep -q '^[[:blank:]]*[^#].*main$' /etc/apk/repositories; then + echo "http://dl-cdn.alpinelinux.org/alpine/v$(cut -d. -f1-2 /etc/alpine-release)/community" >> /etc/apk/repositories; + else + sed -i '/^\\s*[^#].*main/{p;s/main/community/;}' /etc/apk/repositories; + fi + fi`); err != nil { return err } From 13e737ada7f5c9095fe0fad91f62ba7d13acfcd7 Mon Sep 17 00:00:00 2001 From: Joe Groocock Date: Sun, 8 Jul 2018 22:54:29 +0100 Subject: [PATCH 2/2] Add missing 'apk update' --- libmachine/provision/alpine.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libmachine/provision/alpine.go b/libmachine/provision/alpine.go index 470c60ef5e..a1656788eb 100644 --- a/libmachine/provision/alpine.go +++ b/libmachine/provision/alpine.go @@ -144,7 +144,8 @@ func (provisioner *AlpineProvisioner) Provision(swarmOptions swarm.Options, auth else sed -i '/^\\s*[^#].*main/{p;s/main/community/;}' /etc/apk/repositories; fi - fi`); err != nil { + fi; + apk update`); err != nil { return err }