--- slug: /installation/ sidebar_position: 2 --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Installation Task offers many installation methods. Check out the available methods below. ## Package Managers ### Homebrew If you're on macOS or Linux and have [Homebrew][homebrew] installed, getting Task is as simple as running: ```shell brew install go-task/tap/go-task ``` The above Formula is [maintained by ourselves](https://github.com/go-task/homebrew-tap/blob/main/Formula/go-task.rb). Recently, Task was also made available [on the official Homebrew repository](https://formulae.brew.sh/formula/go-task), so you also have that option if you prefer: ```shell brew install go-task ``` ### pkgx If you're on macOS or Linux and have [pkgx][pkgx] installed, getting Task is as simple as running: ```shell pkgx task ``` or, if you have pkgx integration enabled: ```shell task ``` This installation method is community owned. After a new release of Task, they are automatically released by pkgx in a minimum of time. ### Snap Task is available in [Snapcraft][snapcraft], but keep in mind that your Linux distribution should allow classic confinement for Snaps to Task work right: ```shell sudo snap install task --classic ``` ### Chocolatey If you're on Windows and have [Chocolatey][choco] installed, getting Task is as simple as running: ```shell choco install go-task ``` This installation method is community owned. ### Scoop If you're on Windows and have [Scoop][scoop] installed, getting Task is as simple as running: ```shell scoop install task ``` This installation method is community owned. After a new release of Task, it may take some time until it's available on Scoop. ### AUR If you're on Arch Linux you can install Task from [AUR](https://aur.archlinux.org/packages/go-task-bin) using your favorite package manager such as `yay`, `pacaur` or `yaourt`: ```shell yay -S go-task-bin ``` Alternatively, there's [this package](https://aur.archlinux.org/packages/go-task) which installs from the source code instead of downloading the binary from the [releases page](https://github.com/go-task/task/releases): ```shell yay -S go-task ``` This installation method is community owned. ### Fedora If you're on Fedora Linux you can install Task from the official [Fedora](https://packages.fedoraproject.org/pkgs/golang-github-task/go-task/) repository using `dnf`: ```shell sudo dnf install go-task ``` This installation method is community owned. After a new release of Task, it may take some time until it's available in [Fedora](https://packages.fedoraproject.org/pkgs/golang-github-task/go-task/). ### Nix If you're on NixOS or have Nix installed you can install Task from [nixpkgs](https://github.com/NixOS/nixpkgs): ```shell nix-env -iA nixpkgs.go-task ``` This installation method is community owned. After a new release of Task, it may take some time until it's available in [nixpkgs](https://github.com/NixOS/nixpkgs). ### npm You can also use Node and npm to install Task by installing [this package](https://www.npmjs.com/package/@go-task/cli). ```shell npm install -g @go-task/cli ``` ### Winget If you are using Windows and installed the [winget](https://github.com/microsoft/winget-cli) package management tool, you can install Task from [winget-pkgs](https://github.com/microsoft/winget-pkgs). ```shell winget install Task.Task ``` ### Pacstall If you are using Debian or Ubuntu, and have [Pacstall](https://pacstall.dev/) installed, you can install Task by running: ```shell pacstall -I go-task-deb ``` This installation method is community owned. After a new release of Task, it may take some time until it's available in [Pacstall](https://pacstall.dev/packages/go-task-deb). ## Get The Binary ### Binary You can download the binary from the [releases page on GitHub][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][installscript] which is very useful in scenarios like CI. Many thanks to [GoDownloader][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 ``` :::caution 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 ``` ### GitHub Actions If you want to install Task in GitHub Actions you can try using [this action](https://github.com/arduino/setup-task) by the Arduino team: ```yaml - name: Install Task uses: arduino/setup-task@v2 with: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} ``` This installation method is community owned. ## Build From Source ### Go Modules Ensure that you have a supported version of [Go][go] 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 ` 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. ```shell title="~/.bashrc" eval "$(task --completion bash)" ``` ```shell title="~/.zshrc" eval "$(task --completion zsh)" ``` ```shell title="~/.config/fish/config.fish" task --completion fish | source ``` ```powershell title="$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. ```shell task --completion bash > /etc/bash_completion.d/task ``` ```shell task --completion zsh > /usr/local/share/zsh/site-functions/_task ``` ```shell task --completion fish > ~/.config/fish/completions/task.fish ``` {/* prettier-ignore-start */} [go]: https://golang.org/ [snapcraft]: https://snapcraft.io/task [homebrew]: https://brew.sh/ [installscript]: https://github.com/go-task/task/blob/main/install-task.sh [releases]: https://github.com/go-task/task/releases [godownloader]: https://github.com/goreleaser/godownloader [choco]: https://chocolatey.org/ [scoop]: https://scoop.sh/ [pkgx]: https://pkgx.sh/ {/* prettier-ignore-end */}