mirror of https://github.com/tailscale/tailscale/
clientupdate: add linux tarball updates (#9144)
As a fallback to package managers, allow updating tailscale that was self-installed in some way. There are some tricky bits around updating the systemd unit (should we stick to local binary paths or to the ones in tailscaled.service?), so leaving that out for now. Updates #6995 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>pull/9175/head
parent
ce1e02096a
commit
4e72992900
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (c) Tailscale Inc & AUTHORS
|
||||||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
|
package clientupdate
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/coreos/go-systemd/v22/dbus"
|
||||||
|
)
|
||||||
|
|
||||||
|
func restartSystemdUnit(ctx context.Context) error {
|
||||||
|
c, err := dbus.NewWithContext(ctx)
|
||||||
|
if err != nil {
|
||||||
|
// Likely not a systemd-managed distro.
|
||||||
|
return errors.ErrUnsupported
|
||||||
|
}
|
||||||
|
defer c.Close()
|
||||||
|
if err := c.ReloadContext(ctx); err != nil {
|
||||||
|
return fmt.Errorf("failed to reload tailsacled.service: %w", err)
|
||||||
|
}
|
||||||
|
ch := make(chan string, 1)
|
||||||
|
if _, err := c.RestartUnitContext(ctx, "tailscaled.service", "replace", ch); err != nil {
|
||||||
|
return fmt.Errorf("failed to restart tailsacled.service: %w", err)
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
case res := <-ch:
|
||||||
|
if res != "done" {
|
||||||
|
return fmt.Errorf("systemd service restart failed with result %q", res)
|
||||||
|
}
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
// Copyright (c) Tailscale Inc & AUTHORS
|
||||||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
|
//go:build !linux
|
||||||
|
|
||||||
|
package clientupdate
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func restartSystemdUnit(ctx context.Context) error {
|
||||||
|
return errors.ErrUnsupported
|
||||||
|
}
|
Loading…
Reference in New Issue