| --- |
| page_title: APT Packages for Debian and Ubuntu |
| description: >- |
| The HashiCorp APT repositories contain distribution-specific Terraform |
| packages for both Debian and Ubuntu systems. |
| --- |
| |
| # APT Packages for Debian and Ubuntu |
| |
| The primary distribution packages for Terraform are `.zip` archives containing |
| single executable files that you can extract anywhere on your system. However, |
| for easier integration with configuration management tools and other systematic |
| system configuration strategies, we also offer package repositories for |
| Debian and Ubuntu systems, which allow you to install Terraform using the |
| `apt install` command or any other APT frontend. |
| |
| If you are instead using Red Hat Enterprise Linux, CentOS, or Fedora, you |
| might prefer to [install Terraform from our Yum repositories](/cli/install/yum). |
| |
| -> **Note:** The APT repositories discussed on this page are generic HashiCorp |
| repositories that contain packages for a variety of different HashiCorp |
| products, rather than just Terraform. Adding these repositories to your |
| system will, by default, therefore make several other non-Terraform |
| packages available for installation. That might then mask some packages that |
| are available for some HashiCorp products in the main Debian and Ubuntu |
| package repositories. |
| |
| ## Repository Configuration |
| |
| The Terraform packages are signed using a private key controlled by HashiCorp, |
| so in most situations the first step would be to configure your system to trust |
| that HashiCorp key for package authentication. For example: |
| |
| ```bash |
| wget -qO - terraform.gpg https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/terraform-archive-keyring.gpg |
| ``` |
| |
| After registering the key, you can add the official HashiCorp repository to |
| your system: |
| |
| ```bash |
| sudo echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/terraform-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" > /etc/apt/sources.list.d/terraform.list |
| ``` |
| |
| The above command line uses the following sub-shell commands: |
| |
| * `dpkg --print-architecture` to determine your system's primary APT |
| architecture/ABI, such as `amd64`. |
| * `lsb_release -cs` to find the distribution release codename for your current |
| system, such as `buster`, `groovy`, or `sid`. |
| |
| To install Terraform from the new repository: |
| |
| ```bash |
| sudo apt update |
| sudo apt install terraform |
| ``` |
| |
| ## Supported Architectures |
| |
| The HashiCorp APT server currently has packages only for the `amd64` |
| architecture, which is also sometimes known as `x86_64`. |
| |
| There are no official packages available for other architectures, such as |
| `arm64`. If you wish to use Terraform on a non-`amd64` system, |
| [download a normal release `.zip` file](/downloads) instead. |
| |
| ## Supported Debian and Ubuntu Releases |
| |
| The HashiCorp APT server currently contains release repositories for the |
| following distribution releases: |
| |
| * Debian 8 (`jessie`) |
| * Debian 9 (`stretch`) |
| * Debian 10 (`buster`) |
| * Debian 11 (`bullseye`) |
| * Ubuntu 16.04 (`xenial`) |
| * Ubuntu 18.04 (`bionic`) |
| * Ubuntu 19.10 (`eoam`) |
| * Ubuntu 20.04 (`focal`) |
| * Ubuntu 20.10 (`groovy`) |
| * Ubuntu 21.04 (`hirsute`) |
| * Ubuntu 21.10 (`impish`) |
| |
| No repositories are available for other Debian or Ubuntu versions or |
| any other APT-based Linux distributions. If you add the repository using |
| the above commands on other systems then `apt update` will report the |
| repository index as missing. |
| |
| Terraform executables are statically linked and so they depend only on the |
| Linux system call interface, not on any system libraries. Because of that, |
| you may be able to use one of the above release codenames when adding a |
| repository to your system, even if that codename doesn't match your current |
| distribution release. |
| |
| Over time we will change the set of supported distributions, including both |
| adding support for new releases and ceasing to publish new Terraform versions |
| under older releases. |
| |
| ## Choosing Terraform Versions |
| |
| The HashiCorp APT repositories contain multiple versions of Terraform, but |
| because the packages are all named `terraform` it is impossible to install |
| more than one version at a time, and `apt install` will default to selecting |
| the latest version. |
| |
| It's often necessary to match your Terraform version with what a particular |
| configuration is currently expecting. You can use the following command to |
| see which versions are currently available in the repository index: |
| |
| ```bash |
| apt policy terraform |
| ``` |
| |
| There may be multiple package releases for a particular Terraform version if |
| we need to publish an updated package for any reason. In that case, the |
| subsequent releases will have an additional suffix, like `0.13.4-2`. In these |
| cases, the Terraform executable inside the package should be unchanged, but its |
| metadata and other contents may be different. |
| |
| You can select a specific version to install by including it in the |
| `apt install` command line, as follows: |
| |
| ```bash |
| sudo apt install terraform=0.14.0 |
| ``` |
| |
| If your workflow requires using multiple versions of Terraform at the same |
| time, for example when working through a gradual upgrade where not all |
| of your configurations are upgraded yet, we recommend that you use the |
| official release `.zip` files instead of the APT packages, so you can install |
| multiple versions at once and then select which to use for each command you |
| run. |