floe update
floe binary with the latest release, or with --check only reports
whether a newer one exists.
floe update never touches Floe Desktop, which updates on its own track. Desktop builds ship on
their own desktop-v* tags, marked Pre-release on GitHub only to keep them out of Latest release,
so neither floe update nor the install scripts ever pick them up. See the Update section of
Install the desktop app.Script and manual installs
Run the built-in update command:Terminal
checksums.txt, and
replaces the running binary in place:
Output
floe 1.11.0 and earlier write the newer version with a leading v, as in
Update available: 1.10.11 -> v1.11.0. When nothing newer exists, floe update prints
Already up to date (1.x.x) after the first two lines and stops.
floe update installs nothing when the checksum does not match, or when the release lists no
checksum for the archive, and the install scripts stop in the same two cases. floe update gives
GitHub 10 seconds to say which release is newest, 30 seconds for checksums.txt, and 5 minutes for
the whole archive, and an update that runs out of time installs nothing.
On macOS and Linux, if floe lives in a folder you cannot write to, such as /usr/local/bin (the
install script’s usual place), the final swap needs sudo. One more line then comes before
Updated to, followed by a password prompt:
Output
sudo is
not installed, the update stops and tells you to run it again as root or to reinstall with the
install script.
On Windows no administrator rights are needed when floe.exe is in a folder you can write to, as
the install script’s is: floe renames the running file aside, to
floe.exe.floe-update-old, and moves the new one into place. That file stays until floe next
starts, which removes it. floe 1.11.0 and earlier named it floe.exe.bak. floe update still
removes a file of that name before it renames, and nothing else does.
To check for an update without installing:
Terminal
Run `floe update` to install. instead of downloading anything.
floe update always installs the latest release. To install a particular version, run the install
script with FLOE_VERSION: see One-line installer. A later
floe update then offers to move you to the latest one. floe 1.12 and later install a release only
when its tag is exactly vX.Y.Z. floe 1.11.7 and earlier install one under any tag name.
On macOS 12, stay on 1.11.1: later releases need macOS 13 Ventura, and floe update installs them
anyway. Keep 1.11.1 with the install script’s FLOE_VERSION, or
build from source.
You can also run the install script again at any time to upgrade. It writes the latest release to
its own folder (/usr/local/bin or ~/.local/bin, or %LOCALAPPDATA%\Programs\floe on Windows),
so it replaces your floe only when that is where it lives:
Terminal
Package manager installs
If you installedfloe with a package manager, use the standard upgrade
command for that tool.
floe update detects a package-managed install from the binary’s path and stops before it
contacts GitHub, rather than replacing the binary behind your package manager’s back. It names
the right command and exits with status 1, for example:
Output
floe update --check.
Detection is a match, in any capitalization, for
homebrew, cellar, caskroom, linuxbrew,
scoop or winget anywhere in the path of the command you ran. When that command is a link, the
path of the file it points to counts too. A script install that happens to live under a folder
containing one of those words is therefore treated as package-managed as well.
Homebrew in its default folder on an Intel Mac, /usr/local, is recognized through the file the
command points to: the command is /usr/local/bin/floe, and the cask behind it sits under
/usr/local/Caskroom. floe 1.11.0 and earlier did not recognize that install and carried on as
for a script install, so on those versions use brew upgrade floe there.
A binary built from source is checked before any of this and stops with
Error: Cannot update a dev build. and status 1, whatever its path, so this section applies only to
release builds. floe 1.11.0 and earlier printed that sentence without Error: and exited with
status 0.
Messages
Each of these endsfloe update with status 1, and nothing is installed:
The update hint
When a newer release exists,floe version prints an extra line, which FLOE_NO_UPDATE_CHECK=1
turns off:
Output
floe update or floe update --check checks, it asks GitHub itself and never uses the
answer floe version keeps. See
The update check for when floe version asks and where it keeps
the answer.
Version compatibility
You do not need to match versions with the person on the other end for an ordinary transfer. Floe peers on different releases interoperate, down to the floors the Changelog states, so a version difference by itself is rarely a problem. If a release ever changes the transfer protocol in a breaking way, Floe detects it before any data moves and tells whichever side is older to update. See Protocol versioning for the details. A few things do need a newerfloe:
- A link key is checked by
floe receive1.12 and later. An older one ignores it, and the transfer goes ahead with no check. floe send --link-onlyneedsfloe1.12 or later on the sending side and a receiver that can prove the link. It stops afloe receiveolder than 1.12, which tells its user to update from 1.10.8 on. See Send only to a receiver that proves it holds the link.floe send --toneedsfloe1.11.0 or later (an olderfloestops withError: unknown flag: --to), andfloe1.12 or later for a link from Floe Desktop 1.1 or later. The link itself comes from Floe Desktop 0.3.0 or later, on a server that offers request links.