Executando verificação de segurança...
1

Ajuda com instalação do PHP usando o asdf

Recentemente encontrei no youtube uma ferramenta muito boa que gerencia versões de linguagens de programação em ambiente Linux, ele é o asdf. Instalei o asdf no ubuntu e fui usa-lo para instalar o PHP. Porém estou enfrentando um problema com várias libs que o php usa, libs como o gdlib, openssl e etc. A instalação fica lenta porque quando falta uma dessas libs tenho que ir no google, pesquisar como instalar aquela lib e depois voltar para instalação do php e depois dá outro erro porque falta outra lib e tenho q ficar re-pesquisando sempre. Alguém sabe onde tem alguma lista com todas essas libs necessárias para que eu possa instalar tudo de uma vez?

Carregando publicação patrocinada...
1

Bom dia!
Como o php usa muita extensões em C é preciso ter essas dependências.
Recomendo tbm aprender a usar o pecl para instalação de outras extensões que tu for adicionar.

Fiz um teste aqui usando o PHP em duas versões (7.4.33 e 8.1.25) usando a instalação com o Pecl: PHP_WITHOUT_PEAR=yes asdf install php <version>

VersãoDependências
8.1.25base-devel*, re2c, gd, oniguruma, postgresql-libs, libzip

A versão 7.4.33 não consegui instalar pois não tem compatibilidade com OpenSSL 3+ (e eu nao posso fazer downgrade desse pacote no momento)

Achei uma solução que é compilar o OpenSSL 1 em uma pasta e usar ela para rodar o php 7.4: https://github.com/asdf-community/asdf-php/issues/131

*O base-devel é tipo o build-essential pro Arch

1

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.