DEV Community

Cover image for Criando seu ambiente com ASDF
Danilo Correa
Danilo Correa

Posted on

Criando seu ambiente com ASDF

Fala, galera, beleza? Neste artigo, vamos criar um ambiente utilizando uma ferramenta super poderosa chamada ASDF. Esta é uma ferramenta extremamente útil que utilizo no meu dia a dia. Basicamente, você consegue gerenciar múltiplas versões de aplicativos ou runtimes na sua máquina. Imagine que você está trabalhando no desenvolvimento de uma aplicação usando a nova versão do PHP 8.3, e também precisa fazer a manutenção daquele legadinho gostoso (quem nunca, né?). Com o ASDF, você consegue ter várias versões do PHP instaladas na sua máquina, e não apenas o PHP. Você pode ter Node.js, Docker Composer, .NET Core, Python, Terraform, AWS CLI, e muito mais.

O que é o ASDF?

ASDF é um gerenciador de versão de ferramentas. Todas as definições de versão estão contidas em um arquivo .tool-versions que você pode adicionar ao seu projeto Git para compartilhar com sua equipe, garantindo que todos estejam na mesma versão.

A maneira antiga de trabalhar exigia vários gerenciadores (nvm, n, rben, e phpbrew) de versão CLI, cada um com sua API, arquivos de configuração e implementação (por exemplo, manipulação de $PATH, variáveis de ambiente, etc.). ASDF fornece uma interface única e um arquivo de configuração para simplificar os fluxos de desenvolvimento e pode ser estendido a todas as ferramentas e runtimes por meio de uma interface simples.

Vantagens

ASDF garante que as equipes usem exatamente as mesmas versões de ferramentas, com suporte para muitas ferramentas por meio de um sistema de plugin e a simplicidade e familiaridade de ser um único script shell.

  • Utilizar apenas uma ferramenta para gerenciar as versões
  • Plugins escritos pela comunidade
  • Arquivo de configuração para gerenciar versões a partir de um diretório

Mão na massa!

Neste artigo, vou preparar um ambiente de desenvolvimento do zero utilizando o ASDF. Bora lá então! Para nosso ambiente, vamos instalar as seguintes ferramentas:

  • PHP 8.3
  • PHP 8.2
  • PHP 8.1

Instalando dependências do ASDF

Para este ambiente, vamos seguir a instalação via Linux. Para instalar o ASDF, acesse a página oficial da documentação: https://asdf-vm.com/

Antes de começar, precisamos instalar as dependências para o ASDF. https://asdf-vm.com/guide/getting-started.html#_1-install-dependencies

sudo apt-get install curl git
Enter fullscreen mode Exit fullscreen mode

Instalando ASDF

A instalação do ASDF é bastante simples, utilizando o comando git clone.

Nota: O comando abaixo está usando a versão v0.13.1. Talvez esta versão esteja desatualizada; acesse o seguinte link e veja qual é a versão mais recente: https://asdf-vm.com/guide/getting-started.html#official-download

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1
Enter fullscreen mode Exit fullscreen mode

Se você utiliza algum shell como zsh, fish e PowerShell, siga as configurações corretas para cada shell https://asdf-vm.com/guide/getting-started.html#_3-install-asdf

Após a instalação do ASDF, você pode executar o seguinte comando para verificar se tudo ocorreu bem na instalação.

asdf --version #v0.13.1
Enter fullscreen mode Exit fullscreen mode

Agora que temos o ASDF instalado em nosso ambiente, precisamos entender como ele funciona.

Basicamente, você precisa adicionar os plugins das ferramentas que você deseja instalar. Neste cenário, queremos instalar o PHP, então precisamos procurar um plugin do ASDF para o PHP, e assim por diante para outras ferramentas ou linguagens de programação.

Instalando PHP 8.1, 8.2, 8.3

Para instalar o PHP, vamos utilizar o asdf-php, que é um plugin do ASDF para o PHP. https://github.com/asdf-community/asdf-php

Antes de tudo, precisamos registrar esse plugin em nosso ASDF com o seguinte comando:

asdf plugin-add php https://github.com/asdf-community/asdf-php.git
Enter fullscreen mode Exit fullscreen mode

Após adicionar como plugin, precisamos instalar algumas dependências em nosso sistema operacional. No próprio repositório do plugin asdf-php, o autor fala sobre as dependências que precisam ser instaladas antes.

Nota: Essas dependências são do PHP e não do ASDF, pois o ASDF compila o PHP na sua máquina. Para facilitar, vou listá-las aqui.

sudo apt-get install -y \
    autoconf \
    bison \
    build-essential \
    gettext \
    libgd-dev \
    libcurl4-openssl-dev \
    libedit-dev \
    libicu-dev \
    libjpeg-dev \
    libmysqlclient-dev \
    libonig-dev \
    libpng-dev \
    libpq-dev \
    libreadline-dev \
    libsqlite3-dev \
    libssl-dev \
    libxml2-dev \
    libzip-dev \
    openssl \
    pkg-config \
    re2c \
    zlib1g-dev
Enter fullscreen mode Exit fullscreen mode

Depois que terminar a instalação de todas as dependências, podemos instalar o PHP em nossa máquina. Para verificar quais versões existem, execute o seguinte comando.

asdf list all php
Enter fullscreen mode Exit fullscreen mode

O comando acima retornará uma lista de todas as versões disponíveis no PHP. O interessante é que ele também retorna as versões que estão em desenvolvimento, permitindo testar recursos em desenvolvimento. Para começar, vamos instalar a versão 8.1.26, então execute o seguinte comando.

asdf install php 8.1.26
Enter fullscreen mode Exit fullscreen mode

A instalação pode demorar um pouco, pois o PHP será compilado na sua máquina. Além disso, é importante observar que o gerenciador de pacotes Composer e o PECL também serão instalados em cada versão.

Agora, precisamos repetir o processo para as outras versões do PHP. Vamos lá:

asdf install php 8.2.13
Enter fullscreen mode Exit fullscreen mode
asdf install php 8.3.0
Enter fullscreen mode Exit fullscreen mode

Quando a instalação da última versão terminar, precisamos configurar qual será a versão padrão instalada em nosso ambiente. Para isso, execute o seguinte comando.

asdf global php 8.3.0
Enter fullscreen mode Exit fullscreen mode

Com esse comando, definimos a versão padrão do PHP em nosso ambiente. Após executar o comando acima, você pode executar o php -v em qualquer lugar do seu sistema operacional, obtendo a seguinte saída.

PHP 8.3.0 (cli) (built: Dec 17 2023 11:09:15) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies
Enter fullscreen mode Exit fullscreen mode

Agora, a cereja do bolo: vamos criar em nosso sistema de arquivo três pastas, imaginando que cada pasta é um projeto que você está trabalhando, e cada projeto precisa executar em uma versão diferente do PHP.

Vamos acessar a raiz do nosso usuário e criar uma pasta Code. Dentro dessa pasta, vamos criar as pastas para cada projeto.

# Acessar o diretório raiz do nosso usuário
cd ~

# Criar a pasta Code
mkdir Code

# Acessar a pasta Code
cd Code

# Criar as pastas de cada projeto
mkdir projeto-1
mkdir projeto-2
mkdir projeto-3
Enter fullscreen mode Exit fullscreen mode

Depois de criar todas as pastas de todos os projetos, vamos acessar cada pasta e configurar nossa versão do PHP desejada.

# Acessar o projeto-1
cd ~/Code/projeto-1

# Configurar a versão 8.1.26 para o projeto-1
asdf local php 8.1.26

# Verificar a versão do PHP
php -v 

# Saída
PHP 8.1.26 (cli) (built: Dec 17 2023 11:09:15) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies

# Acessar o projeto-2
cd ~/Code/projeto-2

# Configurar a versão 8.2.13 para o projeto-2
asdf local php 8.2.13

# Verificar a versão do PHP
php -v 

# Saída
PHP 8.2.13 (cli) (built: Dec 17 2023 11:09:15) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies
Enter fullscreen mode Exit fullscreen mode

Como você pode ver, ao executar o comando php -v, ele retorna uma versão específica para a pasta e, ao executar de outra pasta qualquer, retorna a versão padrão do PHP (8.3.0). Dessa forma, podemos configurar uma versão para cada pasta específica.

Conclusão

ASDF é uma ferramenta fantástica. Sempre que preciso instalar algum componente no meu SO, eu verifico se existe algum plugin ASDF. Lembrando que existem muitos plugins escritos para o ASDF, com certeza há algum para sua linguagem favorita. Adicionei um repositório Git que centraliza uma lista de plugins para o ASDF: https://github.com/asdf-vm/asdf-plugins.

Obrigado, galera!!! Qualquer dúvida ou crítica é muito bem-vinda; fiquem à vontade para adicionar comentários.

Top comments (0)