Na documentação do plugin
https://github.com/asdf-community/asdf-php
Você encontra um arquivo .yml
para a criação de uma imagem, e lá tem especificado os pacotes necessários bem como o S.O em que esses pacotes são necessários, nesse caso o Ubuntu.
Posso te adiantar aqui: sudo apt update && sudo apt install -y autoconf bison build-essential curl gettext git 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
Note o seguinte, os pacotes necessários podem variar de sistema operacional para sistema operacional, pois alguns deles podem vir com alguns pacotes já pré-instalado outros não, pode haver variação na versão desses pacotes etc. Na duvída, estude e faça uso de containers para garantir que sempre terá um ambiente padrão para o PHP.
Entenda melhor a proposta do ASDF
O asdf é composto por plugins criados por diversos desenvolvedores, geralmente utilizando shell-script (mas pode haver outras linguagens), porém cada plugin é um projeto a parte específico mas que atende a especificação do ASDF, ou seja, o plugin tem que ser capaz de gerenciar o ciclo de vida do Runtime/Ferramenta.
Exemplo:
- Listagem de todas as versões da ferramenta para download
- Instalação de uma versão
- Remoção de uma versão
Entre outras funções. O problema é que tem ferramentas que tem uma complexidade extra na instalação, pois são instaladas no seu sistema via compilação, como é o caso do PHP e do PostgreSQL. O motivo disso pode ser que, para gerenciar o ciclo de vida dessas ferramentas, é necessariao utilizar a abordagem de instalação via compilação (visto que uma instalação via pacote poderia sujar o sistema e fugir do controle do ASDF).
Dicas
- Sempre tente entender como o plugin que você está utilizando funciona, leia o README e nunca confie 100%, lembre-se, os plugins são criados por desenvolvedores, e por vezes, um ou outro desenvolvedor (bem pouco).
- Começe a pensar em conteinerização, Docker é um bom começo.