2025-08-12 18:09:19 +02:00
|
|
|
|
---
|
|
|
|
|
|
title: Installation
|
|
|
|
|
|
description: Installation methods for Task
|
|
|
|
|
|
outline: deep
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Installation
|
|
|
|
|
|
|
|
|
|
|
|
Task offers many installation methods. Check out the available methods below.
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
## Official Package Managers
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
2025-09-11 18:48:23 +01:00
|
|
|
|
These installation methods are maintained by the Task team and are always
|
|
|
|
|
|
up-to-date.
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### [dnf](https://docs.fedoraproject.org/en-US/quick-docs/dnf)    {#dnf}
|
2025-09-11 18:48:23 +01:00
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
[[package](https://cloudsmith.io/~task/repos/task/packages/?sort=-format&q=format%3Arpm)]
|
|
|
|
|
|
|
|
|
|
|
|
If you Set up the repository by running :
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
curl -1sLf 'https://dl.cloudsmith.io/public/task/task/setup.rpm.sh' | sudo -E bash
|
|
|
|
|
|
```
|
2025-09-11 18:48:23 +01:00
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
Then you can install Task with:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
dnf install task
|
|
|
|
|
|
```
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### [apt](https://doc.ubuntu-fr.org/apt)    {#apt}
|
|
|
|
|
|
|
|
|
|
|
|
[[package](https://cloudsmith.io/~task/repos/task/packages/?sort=-format&q=format%3Adeb)]
|
|
|
|
|
|
|
2025-09-11 18:48:23 +01:00
|
|
|
|
If you Set up the repository by running:
|
2025-09-03 19:59:06 +02:00
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
curl -1sLf 'https://dl.cloudsmith.io/public/task/task/setup.deb.sh' | sudo -E bash
|
|
|
|
|
|
```
|
2025-09-11 18:48:23 +01:00
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
Then you can install Task with:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
apt install task
|
|
|
|
|
|
```
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
### [Homebrew](https://brew.sh)   {#homebrew}
|
|
|
|
|
|
|
|
|
|
|
|
Task is available via our official Homebrew tap
|
|
|
|
|
|
[[source](https://github.com/go-task/homebrew-tap/blob/main/Formula/go-task.rb)]:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
brew install go-task/tap/go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Alternatively it can be installed from the official Homebrew repository
|
|
|
|
|
|
[[package](https://formulae.brew.sh/formula/go-task)]
|
|
|
|
|
|
[[source](https://github.com/Homebrew/homebrew-core/blob/master/Formula/g/go-task.rb)]
|
|
|
|
|
|
by running:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
brew install go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### [Snap](https://snapcraft.io/task)   {#snap}
|
|
|
|
|
|
|
|
|
|
|
|
Task is available on [Snapcraft](https://snapcraft.io/task)
|
|
|
|
|
|
[[source](https://github.com/go-task/snap/blob/main/snap/snapcraft.yaml)], but
|
|
|
|
|
|
keep in mind that your Linux distribution should allow classic confinement for
|
|
|
|
|
|
Snaps to Task work correctly:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
sudo snap install task --classic
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### [npm](https://www.npmjs.com)    {#npm}
|
|
|
|
|
|
|
|
|
|
|
|
Npm can be used as cross-platform way to install Task globally or as a
|
|
|
|
|
|
dependency of your project
|
|
|
|
|
|
[[package](https://www.npmjs.com/package/@go-task/cli)]
|
|
|
|
|
|
[[source](https://github.com/go-task/task/blob/main/package.json)]:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
npm install -g @go-task/cli
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### [WinGet](https://github.com/microsoft/winget-cli)  {#winget}
|
|
|
|
|
|
|
|
|
|
|
|
Task is available via the
|
|
|
|
|
|
[community repository](https://github.com/microsoft/winget-pkgs)
|
|
|
|
|
|
[[source](https://github.com/microsoft/winget-pkgs/tree/master/manifests/t/Task/Task)]:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
winget install Task.Task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
## Community-Maintained Package Managers
|
|
|
|
|
|
|
|
|
|
|
|
::: warning Community Maintained
|
|
|
|
|
|
|
2025-09-11 18:48:23 +01:00
|
|
|
|
These installation methods are maintained by the community and may not always be
|
|
|
|
|
|
up-to-date with the latest Task version. The Task team does not directly control
|
|
|
|
|
|
these packages.
|
|
|
|
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
### [Mise](https://mise.jdx.dev/)    {#mise}
|
|
|
|
|
|
|
|
|
|
|
|
Mise is a cross-platform package manager that acts as a "frontend" to a variety
|
|
|
|
|
|
of other package managers "backends" such as `asdf`, `aqua` and `ubi`.
|
|
|
|
|
|
|
|
|
|
|
|
If using Mise, we recommend using the `aqua` or `ubi` backends to install Task
|
|
|
|
|
|
as these install directly from our GitHub releases.
|
|
|
|
|
|
|
|
|
|
|
|
::: code-group
|
|
|
|
|
|
|
|
|
|
|
|
```shell [aqua]
|
|
|
|
|
|
mise use -g aqua:go-task/task@latest
|
|
|
|
|
|
mise install
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```shell [ubi]
|
|
|
|
|
|
mise use -g ubi:go-task/task
|
|
|
|
|
|
mise install
|
|
|
|
|
|
```
|
2025-09-03 19:59:06 +02:00
|
|
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
### [Macports](https://macports.org)  {#macports}
|
|
|
|
|
|
|
|
|
|
|
|
Task repository is tracked by Macports
|
|
|
|
|
|
[[package](https://ports.macports.org/port/go-task/details/)]
|
|
|
|
|
|
[[source](https://github.com/macports/macports-ports/blob/master/devel/go-task/Portfile)]:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
port install go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### [pip](https://pip.pypa.io)    {#pip}
|
|
|
|
|
|
|
|
|
|
|
|
Like npm, pip can be used as a cross-platform way to install Task
|
|
|
|
|
|
[[package](https://pypi.org/project/go-task-bin)]
|
|
|
|
|
|
[[source](https://github.com/Bing-su/pip-binary-factory/tree/main/task)]:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
pip install go-task-bin
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### [Chocolatey](https://chocolatey.org)  {#chocolatey}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[package](https://community.chocolatey.org/packages/go-task)]
|
|
|
|
|
|
[[source](https://github.com/Starz0r/ChocolateyPackagingScripts/blob/master/src/go-task_gh_build.py)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
choco install go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### [Scoop](https://scoop.sh)  {#scoop}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[source](https://github.com/ScoopInstaller/Main/blob/master/bucket/task.json)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
scoop install task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### Arch ([pacman](https://wiki.archlinux.org/title/Pacman))  {#arch}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[package](https://archlinux.org/packages/extra/x86_64/go-task/)]
|
|
|
|
|
|
[[source](https://gitlab.archlinux.org/archlinux/packaging/packages/go-task)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
pacman -S go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### Fedora ([dnf](https://docs.fedoraproject.org/en-US/quick-docs/dnf))  {#fedora-community}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[package](https://packages.fedoraproject.org/pkgs/golang-github-task/go-task/)]
|
|
|
|
|
|
[[source](https://src.fedoraproject.org/rpms/golang-github-task)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
dnf install go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### FreeBSD ([Ports](https://ports.freebsd.org/cgi/ports.cgi))  {#freebsd}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[package](https://cgit.freebsd.org/ports/tree/devel/task)]
|
|
|
|
|
|
[[source](https://cgit.freebsd.org/ports/tree/devel/task/Makefile)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
pkg install task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-10 22:33:52 +02:00
|
|
|
|
### [Nix](https://nixos.org)     {#nix}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[source](https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/go/go-task/package.nix)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
nix-env -iA nixpkgs.go-task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### [pacstall](https://github.com/pacstall/pacstall)   {#pacstall}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[package](https://pacstall.dev/packages/go-task-deb)]
|
|
|
|
|
|
[[source](https://github.com/pacstall/pacstall-programs/blob/master/packages/go-task-deb/go-task-deb.pacscript)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
pacstall -I go-task-deb
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-03 19:59:06 +02:00
|
|
|
|
### [pkgx](https://pkgx.sh)   {#pkgx}
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
[[package](https://pkgx.dev/pkgs/taskfile.dev)]
|
|
|
|
|
|
[[source](https://github.com/pkgxdev/pantry/blob/main/projects/taskfile.dev/package.yml)]
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
pkgx task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
or, if you have pkgx integration enabled:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Get The Binary
|
|
|
|
|
|
|
|
|
|
|
|
### Binary
|
|
|
|
|
|
|
|
|
|
|
|
You can download the binary from the
|
|
|
|
|
|
[releases page on GitHub](https://github.com/go-task/task/releases) and add to
|
|
|
|
|
|
your `$PATH`.
|
|
|
|
|
|
|
|
|
|
|
|
DEB and RPM packages are also available.
|
|
|
|
|
|
|
|
|
|
|
|
The `task_checksums.txt` file contains the SHA-256 checksum for each file.
|
|
|
|
|
|
|
|
|
|
|
|
### Install Script
|
|
|
|
|
|
|
|
|
|
|
|
We also have an
|
|
|
|
|
|
[install script](https://github.com/go-task/task/blob/main/install-task.sh)
|
|
|
|
|
|
which is very useful in scenarios like CI. Many thanks to
|
|
|
|
|
|
[GoDownloader](https://github.com/goreleaser/godownloader) for enabling the easy
|
|
|
|
|
|
generation of this script.
|
|
|
|
|
|
|
|
|
|
|
|
By default, it installs on the `./bin` directory relative to the working
|
|
|
|
|
|
directory:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
It is possible to override the installation directory with the `-b` parameter.
|
|
|
|
|
|
On Linux, common choices are `~/.local/bin` and `~/bin` to install for the
|
|
|
|
|
|
current user or `/usr/local/bin` to install for all users:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
::: warning
|
|
|
|
|
|
|
|
|
|
|
|
On macOS and Windows, `~/.local/bin` and `~/bin` are not added to `$PATH` by
|
|
|
|
|
|
default.
|
|
|
|
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
By default, it installs the latest version available. You can also specify a tag
|
|
|
|
|
|
(available in [releases](https://github.com/go-task/task/releases)) to install a
|
|
|
|
|
|
specific version:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d v3.36.0
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Parameters are order specific, to set both installation directory and version:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin v3.42.1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### GitHub Actions
|
|
|
|
|
|
|
2025-09-11 18:48:23 +01:00
|
|
|
|
We have an [official GitHub Action](https://github.com/go-task/setup-task) to
|
|
|
|
|
|
install Task in your GitHub workflows. This repository is forked from the
|
|
|
|
|
|
fantastic project by the Arduino team. Check out the repository for more
|
|
|
|
|
|
examples and configuration.
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
- name: Install Task
|
2025-09-11 18:48:23 +01:00
|
|
|
|
uses: go-task/setup-task@v1
|
2025-08-12 18:09:19 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Build From Source
|
|
|
|
|
|
|
|
|
|
|
|
### Go Modules
|
|
|
|
|
|
|
|
|
|
|
|
Ensure that you have a supported version of [Go](https://golang.org) properly
|
|
|
|
|
|
installed and setup. You can find the minimum required version of Go in the
|
|
|
|
|
|
[go.mod](https://github.com/go-task/task/blob/main/go.mod#L3) file.
|
|
|
|
|
|
|
|
|
|
|
|
You can then install the latest release globally by running:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
go install github.com/go-task/task/v3/cmd/task@latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Or you can install into another directory:
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
env GOBIN=/bin go install github.com/go-task/task/v3/cmd/task@latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
::: tip
|
|
|
|
|
|
|
|
|
|
|
|
For CI environments we recommend using the [install script](#install-script)
|
|
|
|
|
|
instead, which is faster and more stable, since it'll just download the latest
|
|
|
|
|
|
released binary.
|
|
|
|
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
## Setup completions
|
|
|
|
|
|
|
|
|
|
|
|
Some installation methods will automatically install completions too, but if
|
|
|
|
|
|
this isn't working for you or your chosen method doesn't include them, you can
|
|
|
|
|
|
run `task --completion <shell>` to output a completion script for any supported
|
|
|
|
|
|
shell. There are a couple of ways these completions can be added to your shell
|
|
|
|
|
|
config:
|
|
|
|
|
|
|
|
|
|
|
|
### Option 1. Load the completions in your shell's startup config (Recommended)
|
|
|
|
|
|
|
|
|
|
|
|
This method loads the completion script from the currently installed version of
|
|
|
|
|
|
task every time you create a new shell. This ensures that your completions are
|
|
|
|
|
|
always up-to-date.
|
2025-12-07 12:20:45 +01:00
|
|
|
|
If your executable isn’t named task, set the `TASK_EXE` environment variable before running eval.
|
2025-08-12 18:09:19 +02:00
|
|
|
|
|
|
|
|
|
|
::: code-group
|
|
|
|
|
|
|
|
|
|
|
|
```shell [bash]
|
|
|
|
|
|
# ~/.bashrc
|
2025-12-07 12:20:45 +01:00
|
|
|
|
|
|
|
|
|
|
# export TASK_EXE='go-task' if needed
|
2025-08-12 18:09:19 +02:00
|
|
|
|
eval "$(task --completion bash)"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```shell [zsh]
|
|
|
|
|
|
# ~/.zshrc
|
2025-12-07 12:20:45 +01:00
|
|
|
|
|
|
|
|
|
|
# export TASK_EXE='go-task' if needed
|
2025-08-12 18:09:19 +02:00
|
|
|
|
eval "$(task --completion zsh)"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```shell [fish]
|
|
|
|
|
|
# ~/.config/fish/config.fish
|
2025-12-07 12:20:45 +01:00
|
|
|
|
|
|
|
|
|
|
# export TASK_EXE='go-task' if needed
|
2025-08-12 18:09:19 +02:00
|
|
|
|
task --completion fish | source
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```powershell [powershell]
|
|
|
|
|
|
# $PROFILE\Microsoft.PowerShell_profile.ps1
|
|
|
|
|
|
Invoke-Expression (&task --completion powershell | Out-String)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
|
|
### Option 2. Copy the script to your shell's completions directory
|
|
|
|
|
|
|
|
|
|
|
|
This method requires you to manually update the completions whenever Task is
|
|
|
|
|
|
updated. However, it is useful if you want to modify the completions yourself.
|
|
|
|
|
|
|
|
|
|
|
|
::: code-group
|
|
|
|
|
|
|
|
|
|
|
|
```shell [bash]
|
|
|
|
|
|
task --completion bash > /etc/bash_completion.d/task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```shell [zsh]
|
|
|
|
|
|
task --completion zsh > /usr/local/share/zsh/site-functions/_task
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```shell [fish]
|
|
|
|
|
|
task --completion fish > ~/.config/fish/completions/task.fish
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
:::
|