From b3b42d069d92956556c5ae142019a122fcfcf5ad Mon Sep 17 00:00:00 2001 From: Evan Hazlett Date: Thu, 13 Aug 2015 01:24:15 -0400 Subject: [PATCH] fixes upgrade for debian/ubuntu for new package name Signed-off-by: Evan Hazlett --- libmachine/provision/debian.go | 24 +++++++++++++++++++++- libmachine/provision/ubuntu.go | 37 ++++++++++++++++++++++++++-------- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/libmachine/provision/debian.go b/libmachine/provision/debian.go index aa0691b6..4c100bd0 100644 --- a/libmachine/provision/debian.go +++ b/libmachine/provision/debian.go @@ -70,7 +70,7 @@ func (provisioner *DebianProvisioner) Package(name string, action pkgaction.Pack switch name { case "docker": - name = "lxc-docker" + name = "docker-engine" } if updateMetadata { @@ -79,6 +79,28 @@ func (provisioner *DebianProvisioner) Package(name string, action pkgaction.Pack } } + // handle the new docker-engine package; we can probably remove this + // after we have a few versions + if action == pkgaction.Upgrade && name == "docker-engine" { + // run the force remove on the existing lxc-docker package + // and remove the existing apt source list + // also re-run the get.docker.com script to properly setup + // the system again + + commands := []string{ + "rm /etc/apt/sources.list.d/docker.list || true", + "apt-get remove -y lxc-docker || true", + "curl -sSL https://get.docker.com | sh", + } + + for _, cmd := range commands { + command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E %s", cmd) + if _, err := provisioner.SSHCommand(command); err != nil { + return err + } + } + } + command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E apt-get %s -y %s", packageAction, name) log.Debugf("package: action=%s name=%s", action.String(), name) diff --git a/libmachine/provision/ubuntu.go b/libmachine/provision/ubuntu.go index c4835c84..58e4b83f 100644 --- a/libmachine/provision/ubuntu.go +++ b/libmachine/provision/ubuntu.go @@ -47,10 +47,9 @@ func (provisioner *UbuntuProvisioner) Service(name string, action pkgaction.Serv } func (provisioner *UbuntuProvisioner) Package(name string, action pkgaction.PackageAction) error { - var ( - packageAction string - updateMetadata = true - ) + var packageAction string + + updateMetadata := true switch action { case pkgaction.Install: @@ -62,21 +61,43 @@ func (provisioner *UbuntuProvisioner) Package(name string, action pkgaction.Pack packageAction = "upgrade" } - // TODO: This should probably have a const switch name { case "docker": - name = "lxc-docker" + name = "docker-engine" } if updateMetadata { - // issue apt-get update for metadata - if _, err := provisioner.SSHCommand("sudo -E apt-get update"); err != nil { + if _, err := provisioner.SSHCommand("sudo apt-get update"); err != nil { return err } } + // handle the new docker-engine package; we can probably remove this + // after we have a few versions + if action == pkgaction.Upgrade && name == "docker-engine" { + // run the force remove on the existing lxc-docker package + // and remove the existing apt source list + // also re-run the get.docker.com script to properly setup + // the system again + + commands := []string{ + "rm /etc/apt/sources.list.d/docker.list || true", + "apt-get remove -y lxc-docker || true", + "curl -sSL https://get.docker.com | sh", + } + + for _, cmd := range commands { + command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E %s", cmd) + if _, err := provisioner.SSHCommand(command); err != nil { + return err + } + } + } + command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E apt-get %s -y %s", packageAction, name) + log.Debugf("package: action=%s name=%s", action.String(), name) + if _, err := provisioner.SSHCommand(command); err != nil { return err }