Skip to content

Commit 4827d27

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

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"
@@ -35,6 +36,16 @@ func runCmd(name string, flags []string, args ...string) error {
3536
return cmd.Run()
3637
}
3738

39+
func shell(name string, flags []string, args ...string) (string, error) {
40+
cmd := exec.Command(name, append(flags, args...)...)
41+
out, err := cmd.Output()
42+
if err != nil {
43+
return "", err
44+
}
45+
out = bytes.TrimSuffix(out, []byte{'\n'})
46+
return string(out), nil
47+
}
48+
3849
func guestInstallAction(cmd *cobra.Command, args []string) error {
3950
instName := DefaultInstanceName
4051
if len(args) > 0 {
@@ -69,18 +80,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
6980
if err != nil {
7081
return err
7182
}
72-
tmp := "/tmp/lima-guestagent"
83+
tmpname := "lima-guestagent"
84+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "lima-guestagent.XXXXXX")
85+
if err != nil {
86+
return err
87+
}
7388
bin := prefix + "/bin/lima-guestagent"
74-
logrus.Infof("Copying %q to %s", guestAgentBinary, hostname)
89+
logrus.Infof("Copying %q to %s:%s", guestAgentBinary, inst.Name, tmpname)
7590
scpArgs := []string{guestAgentBinary, hostname + ":" + tmp}
7691
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
7792
return nil
7893
}
79-
logrus.Infof("Installing %s to %s", tmp, bin)
94+
logrus.Infof("Installing %s to %s", tmpname, bin)
8095
sshArgs := []string{hostname, "sudo", "install", "-m", "755", tmp, bin}
8196
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
8297
return nil
8398
}
99+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
84100

85101
// nerdctl-full.tgz
86102
nerdctlFilename := cacheutil.NerdctlArchive(y)
@@ -89,17 +105,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
89105
if err != nil {
90106
return err
91107
}
92-
tmp := "/tmp/nerdctl-full.tgz"
93-
logrus.Infof("Copying %q to %s", nerdctlFilename, hostname)
108+
tmpname := "nerdctl-full.tgz"
109+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "nerdctl-full.XXXXXX.tgz")
110+
if err != nil {
111+
return err
112+
}
113+
logrus.Infof("Copying %q to %s:%s", nerdctlFilename, inst.Name, tmpname)
94114
scpArgs := []string{nerdctlArchive, hostname + ":" + tmp}
95115
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
96116
return nil
97117
}
98-
logrus.Infof("Installing %s in %s", tmp, prefix)
118+
logrus.Infof("Installing %s in %s", tmpname, prefix)
99119
sshArgs := []string{hostname, "sudo", "tar", "Cxzf", prefix, tmp}
100120
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
101121
return nil
102122
}
123+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
103124
}
104125

105126
return nil

0 commit comments

Comments
 (0)