Skip to content

Commit 927ecca

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

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
@@ -4,6 +4,7 @@
44
package main
55

66
import (
7+
"bytes"
78
"fmt"
89
"os"
910
"os/exec"
@@ -38,6 +39,16 @@ func runCmd(name string, flags []string, args ...string) error {
3839
return cmd.Run()
3940
}
4041

42+
func shell(name string, flags []string, args ...string) (string, error) {
43+
cmd := exec.Command(name, append(flags, args...)...)
44+
out, err := cmd.Output()
45+
if err != nil {
46+
return "", err
47+
}
48+
out = bytes.TrimSuffix(out, []byte{'\n'})
49+
return string(out), nil
50+
}
51+
4152
func guestInstallAction(cmd *cobra.Command, args []string) error {
4253
instName := DefaultInstanceName
4354
if len(args) > 0 {
@@ -67,18 +78,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
6778
if err != nil {
6879
return err
6980
}
70-
tmp := "/tmp/lima-guestagent"
81+
tmpname := "lima-guestagent"
82+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "lima-guestagent.XXXXXX")
83+
if err != nil {
84+
return err
85+
}
7186
bin := prefix + "/bin/lima-guestagent"
72-
logrus.Infof("Copying %q to %s", guestAgentBinary, hostname)
87+
logrus.Infof("Copying %q to %s:%s", guestAgentBinary, inst.Name, tmpname)
7388
scpArgs := []string{guestAgentBinary, hostname + ":" + tmp}
7489
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
7590
return nil
7691
}
77-
logrus.Infof("Installing %s to %s", tmp, bin)
92+
logrus.Infof("Installing %s to %s", tmpname, bin)
7893
sshArgs := []string{hostname, "sudo", "install", "-m", "755", tmp, bin}
7994
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
8095
return nil
8196
}
97+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
8298

8399
// nerdctl-full.tgz
84100
nerdctlFilename := cacheutil.NerdctlArchive(inst.Config)
@@ -87,17 +103,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
87103
if err != nil {
88104
return err
89105
}
90-
tmp := "/tmp/nerdctl-full.tgz"
91-
logrus.Infof("Copying %q to %s", nerdctlFilename, hostname)
106+
tmpname := "nerdctl-full.tgz"
107+
tmp, err := shell(sshExe, sshFlags, hostname, "mktemp", "-t", "nerdctl-full.XXXXXX.tgz")
108+
if err != nil {
109+
return err
110+
}
111+
logrus.Infof("Copying %q to %s:%s", nerdctlFilename, inst.Name, tmpname)
92112
scpArgs := []string{nerdctlArchive, hostname + ":" + tmp}
93113
if err := runCmd(scpExe, scpFlags, scpArgs...); err != nil {
94114
return nil
95115
}
96-
logrus.Infof("Installing %s in %s", tmp, prefix)
116+
logrus.Infof("Installing %s in %s", tmpname, prefix)
97117
sshArgs := []string{hostname, "sudo", "tar", "Cxzf", prefix, tmp}
98118
if err := runCmd(sshExe, sshFlags, sshArgs...); err != nil {
99119
return nil
100120
}
121+
_, _ = shell(sshExe, sshFlags, hostname, "rm", tmp)
101122
}
102123

103124
return nil

0 commit comments

Comments
 (0)