Skip to content

Commit 862fde4

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

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 {
@@ -64,18 +75,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
6475
if err != nil {
6576
return err
6677
}
67-
tmp := "/tmp/lima-guestagent"
78+
tmpname := "lima-guestagent"
79+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "lima-guestagent.XXXXXX")
80+
if err != nil {
81+
return err
82+
}
6883
bin := prefix + "/bin/lima-guestagent"
69-
logrus.Infof("Copying %q to %s", guestAgentBinary, hostname)
84+
logrus.Infof("Copying %q to %s:%s", guestAgentBinary, inst.Name, tmpname)
7085
scpArgs := []string{guestAgentBinary, hostname + ":" + tmp}
7186
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
7287
return nil
7388
}
74-
logrus.Infof("Installing %s to %s", tmp, bin)
89+
logrus.Infof("Installing %s to %s", tmpname, bin)
7590
sshArgs := []string{hostname, "sudo", "install", "-m", "755", tmp, bin}
7691
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
7792
return nil
7893
}
94+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
7995

8096
// nerdctl-full.tgz
8197
nerdctlFilename := cacheutil.NerdctlArchive(inst.Config)
@@ -84,17 +100,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
84100
if err != nil {
85101
return err
86102
}
87-
tmp := "/tmp/nerdctl-full.tgz"
88-
logrus.Infof("Copying %q to %s", nerdctlFilename, hostname)
103+
tmpname := "nerdctl-full.tgz"
104+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "nerdctl-full.XXXXXX.tgz")
105+
if err != nil {
106+
return err
107+
}
108+
logrus.Infof("Copying %q to %s:%s", nerdctlFilename, inst.Name, tmpname)
89109
scpArgs := []string{nerdctlArchive, hostname + ":" + tmp}
90110
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
91111
return nil
92112
}
93-
logrus.Infof("Installing %s in %s", tmp, prefix)
113+
logrus.Infof("Installing %s in %s", tmpname, prefix)
94114
sshArgs := []string{hostname, "sudo", "tar", "Cxzf", prefix, tmp}
95115
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
96116
return nil
97117
}
118+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
98119
}
99120

100121
return nil

0 commit comments

Comments
 (0)