Skip to content

Commit d39fb57

Browse files
committed
Use temporary file names for installing
Signed-off-by: Anders F Björklund <[email protected]>
1 parent 12e678b commit d39fb57

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

Diff for: cmd/limactl/guest_install.go

+27-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"bytes"
45
"fmt"
56
"os"
67
"os/exec"
@@ -36,6 +37,16 @@ func runCmd(name string, flags []string, args ...string) error {
3637
return cmd.Run()
3738
}
3839

40+
func shell(name string, flags []string, args ...string) (string, error) {
41+
cmd := exec.Command(name, append(flags, args...)...)
42+
out, err := cmd.Output()
43+
if err != nil {
44+
return "", err
45+
}
46+
out = bytes.TrimSuffix(out, []byte{'\n'})
47+
return string(out), nil
48+
}
49+
3950
func guestInstallAction(cmd *cobra.Command, args []string) error {
4051
rsync, err := cmd.Flags().GetBool("rsync")
4152
if err != nil {
@@ -79,18 +90,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
7990
if err != nil {
8091
return err
8192
}
82-
tmp := "/tmp/lima-guestagent"
93+
tmpname := "lima-guestagent"
94+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "lima-guestagent.XXXXXX")
95+
if err != nil {
96+
return err
97+
}
8398
bin := prefix + "/bin/lima-guestagent"
84-
logrus.Infof("Copying %q to %s", guestAgentBinary, hostname)
99+
logrus.Infof("Copying %q to %s:%s", guestAgentBinary, inst.Name, tmpname)
85100
scpArgs := []string{guestAgentBinary, hostname + ":" + tmp}
86101
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
87102
return nil
88103
}
89-
logrus.Infof("Installing %s to %s", tmp, bin)
104+
logrus.Infof("Installing %s to %s", tmpname, bin)
90105
sshArgs := []string{hostname, "sudo", "install", "-m", "755", tmp, bin}
91106
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
92107
return nil
93108
}
109+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
94110

95111
// nerdctl-full.tgz
96112
nerdctlFilename := cacheutil.NerdctlArchive(y)
@@ -99,17 +115,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
99115
if err != nil {
100116
return err
101117
}
102-
tmp := "/tmp/nerdctl-full.tgz"
103-
logrus.Infof("Copying %q to %s", nerdctlFilename, hostname)
118+
tmpname := "nerdctl-full.tgz"
119+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "nerdctl-full.XXXXXX.tgz")
120+
if err != nil {
121+
return err
122+
}
123+
logrus.Infof("Copying %q to %s:%s", nerdctlFilename, inst.Name, tmpname)
104124
scpArgs := []string{nerdctlArchive, hostname + ":" + tmp}
105125
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
106126
return nil
107127
}
108-
logrus.Infof("Installing %s in %s", tmp, prefix)
128+
logrus.Infof("Installing %s in %s", tmpname, prefix)
109129
sshArgs := []string{hostname, "sudo", "tar", "Cxzf", prefix, tmp}
110130
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
111131
return nil
112132
}
133+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
113134
}
114135

115136
return nil

0 commit comments

Comments
 (0)