tailscale.comtailscale.com/clientupdate Index | Files | Directories

package clientupdate

import "tailscale.com/clientupdate"

Package clientupdate implements tailscale client update for all supported platforms. This package can be used from both tailscaled and tailscale binaries.

Index

Constants

const (
	StableTrack   = "stable"
	UnstableTrack = "unstable"
)

Variables

var CurrentTrack = func() string {
	if version.IsUnstableBuild() {
		return UnstableTrack
	} else {
		return StableTrack
	}
}()

Functions

func CanAutoUpdate

func CanAutoUpdate() bool

CanAutoUpdate reports whether auto-updating via the clientupdate package is supported for the current os/distro.

func LatestTailscaleVersion

func LatestTailscaleVersion(track string) (string, error)

LatestTailscaleVersion returns the latest released version for the given track from pkgs.tailscale.com.

func Update

func Update(args Arguments) error

Update runs a single update attempt using the platform-specific mechanism.

On Windows, this copies the calling binary and re-executes it to apply the update. The calling binary should handle an "update" subcommand and call this function again for the re-executed binary to proceed.

Types

type Arguments

type Arguments struct {
	// Version is the specific version to install.
	// Mutually exclusive with Track.
	Version string
	// Track is the release track to use:
	//
	//   - CurrentTrack will use the latest version from the same track as the
	//     running binary
	//   - StableTrack and UnstableTrack will use the latest versions of the
	//     corresponding tracks
	//
	// Leaving this empty will use Version or fall back to CurrentTrack if both
	// Track and Version are empty.
	Track string
	// Logf is a logger for update progress messages.
	Logf logger.Logf
	// Stdout and Stderr should be used for output instead of os.Stdout and
	// os.Stderr.
	Stdout io.Writer
	Stderr io.Writer
	// Confirm is called when a new version is available and should return true
	// if this new version should be installed. When Confirm returns false, the
	// update is aborted.
	Confirm func(newVer string) bool
	// PkgsAddr is the address of the pkgs server to fetch updates from.
	// Defaults to "https://pkgs.tailscale.com".
	PkgsAddr string
	// ForAutoUpdate should be true when Updater is created in auto-update
	// context. When true, NewUpdater returns an error if it cannot be used for
	// auto-updates (even if Updater.Update field is non-nil).
	ForAutoUpdate bool
}

Arguments contains arguments needed to run an update.

type Updater

type Updater struct {
	Arguments
	// Update is a platform-specific method that updates the installation. May be
	// nil (not all platforms support updates from within Tailscale).
	Update func() error
	// contains filtered or unexported fields
}

func NewUpdater

func NewUpdater(args Arguments) (*Updater, error)

Source Files

clientupdate.go clientupdate_downloads.go clientupdate_notwindows.go

Directories

PathSynopsis
clientupdate/distsignPackage distsign implements signature and validation of arbitrary distributable files.
Version
v1.84.0 (latest)
Published
May 21, 2025
Platform
linux/amd64
Imports
26 packages
Last checked
2 days ago

Tools for package owners.