Ao desenvolver software, seja um projeto simples ou complexo, é quase inevitável que o software necessite de bibliotecas, módulos ou componentes externos para funcionar corretamente. Esses recursos externos, essenciais para o bom funcionamento do software, são denominados dependências.
A gestão eficaz das dependências é um processo crítico em qualquer projeto. Felizmente, existem diversas ferramentas projetadas para automatizar essa gestão, tornando-a mais fácil para os desenvolvedores. A escolha da ferramenta de gerenciamento de dependências dependerá da linguagem e do ecossistema em que você está trabalhando.
Se você está construindo seus projetos usando PHP, o Composer é a ferramenta ideal para gerenciar as dependências de seus projetos.
O que é o Composer?
Composer é uma ferramenta amplamente utilizada, criada especificamente para gerenciar dependências em PHP. Inspirado em ferramentas como o npm do Node e o Bundler do Ruby, o Composer permite que você declare as bibliotecas externas das quais seu projeto PHP depende e as gerencie automaticamente.
Isso significa que o Composer irá instalar todas as dependências necessárias ao seu projeto e também as manterá atualizadas.
É importante notar que o Composer não é um gerenciador de pacotes como o Apt ou o Yum. Embora também lide com bibliotecas, essas não são instaladas globalmente no sistema por padrão. Em vez disso, o Composer gerencia as dependências por projeto, instalando-as localmente em um diretório específico dentro do projeto PHP que você está desenvolvendo.
O Composer também permite que você descubra quais versões de quais pacotes podem e precisam ser instaladas em seu projeto, e as instala para você. Além disso, ele fornece um único comando para atualizar todas as dependências do seu projeto.
O Composer é uma ferramenta essencial para construir projetos em PHP. Ele viabiliza uma gestão eficiente de dependências e também oferece um repositório chamado Packagist, que contém uma vasta seleção de pacotes e bibliotecas PHP que podem ser adicionados aos seus projetos como dependências.
O gerenciamento adequado das dependências usando uma ferramenta como o Composer promove o desenvolvimento modular de software, o controle de versão contínuo e a colaboração aprimorada entre equipes. Além disso, ajuda a prevenir problemas de compatibilidade de software e facilita a manutenção dos projetos.
Agora, vamos ver como instalar o Composer no Ubuntu. Mas primeiro, vamos analisar os pré-requisitos necessários para a instalação.
Pré-requisitos para instalar o Composer no Ubuntu
Para instalar o Composer no Ubuntu:
1. Certifique-se de ter acesso ao terminal em sua máquina e de poder executar comandos como usuário root.
2. Tenha o PHP versão 7.2.5 ou superior instalado em sua máquina. Para verificar se você tem o PHP instalado e qual a sua versão, abra o terminal e execute:
php -version
Se o PHP estiver instalado, você deverá ver uma saída semelhante a esta:
Caso o PHP não esteja instalado, execute o seguinte comando para instalá-lo:
sudo apt install php
3. Tenha um sistema de controle de versão. O Git é uma excelente opção. Confirme se você tem o Git instalado executando:
git --version
Se o Git estiver instalado, você receberá um número de versão semelhante a este:
Caso o Git não esteja instalado, execute o seguinte comando para instalá-lo:
sudo apt install git
4. Tenha um gerenciador de arquivos instalado em sua máquina para descompactar arquivos. O tar é suficiente para isso. Verifique se o tar está instalado executando:
tar --version
Se você não tiver o tar instalado, pode instalá-lo executando:
sudo apt-get install tar
Após satisfazer os pré-requisitos acima, você estará pronto para instalar o Composer.
Como instalar o Composer no Ubuntu
Ao instalar o Composer, você pode instalá-lo globalmente em seu sistema ou localmente no contexto de uma instalação do PHP. Uma instalação global permite acessar e chamar o Composer de qualquer diretório em sua máquina, ao contrário de uma instalação local.
A instalação global do Composer é a forma recomendada e é a que seguiremos neste guia.
A instalação do Composer no Ubuntu via terminal envolve a execução de scripts encontrados na página de download do Composer.
Siga os passos abaixo para instalar o Composer globalmente no Ubuntu:
1. Abra o terminal e execute o seguinte comando para baixar o instalador do Composer para o diretório atual.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2. Execute o seguinte comando para verificar o instalador SHA-384.
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
O SHA-384 do instalador é um valor hash criptográfico usado para verificar a integridade do instalador do Composer. Em outras palavras, é uma medida de segurança para garantir que o instalador que você baixou não foi adulterado ou corrompido.
A execução do comando acima deve gerar uma saída que diz “Installer verified”, conforme mostrado abaixo. Prossiga somente se você obtiver essa saída, confirmando a integridade do seu instalador.
3. Execute o seguinte comando para executar o instalador:
php composer-setup.php
Você deverá obter uma saída confirmando que o Composer foi instalado com sucesso.
Note o arquivo “composer.phar”, que é o executável do Composer, adicionado ao diretório onde você o instalou.
4. Como o Composer foi instalado com sucesso, execute o seguinte comando para remover o instalador que você baixou anteriormente, pois ele não é mais necessário.
php -r "unlink('composer-setup.php');"
5. Para garantir que o Composer esteja instalado globalmente e você possa chamá-lo de qualquer diretório, mova o arquivo “composer.phar” para um diretório em seu PATH. Para fazer isso, execute o seguinte comando e forneça sua senha quando solicitado.
sudo mv composer.phar /usr/local/bin/composer
6. Verifique se o Composer foi instalado com sucesso executando o seguinte comando:
composer
Se o Composer foi instalado com sucesso, você deverá obter uma saída semelhante a esta.
Como usar o Composer
Com o Composer instalado, o próximo passo é utilizá-lo para gerenciar dependências. Como mencionado anteriormente, o Composer possui um repositório chamado Packagist que oferece pacotes que podem ser instalados como dependências usando o Composer.
Para ver como usar o Composer, vamos instalar um pacote chamado http-message, que é uma interface que descreve mensagens HTTP.
Para usar o Composer para instalar o http-message:
1. Crie uma nova pasta chamada “composerDemo” e acesse-a executando os seguintes comandos no terminal, respectivamente:
mkdir composerDemo
cd composerDemo
2. Crie um arquivo “.gitignore” no diretório executando:
touch .gitignore
Este arquivo permite especificar quais arquivos não devem ser rastreados pelo Git.
3. Gere um arquivo “composer.json” para o seu projeto executando:
composer init
O arquivo “composer.json” é um arquivo de configuração central usado pelo Composer. Nele, você especifica metadados que descrevem seu projeto e as dependências das quais ele depende para que o Composer possa gerenciá-las automaticamente.
O comando acima leva à seguinte saída:
O guia o orientará na criação do arquivo “composer.json”. No primeiro prompt, pressione Enter para aceitar o nome do projeto sugerido.
4. No próximo prompt, forneça uma breve descrição do projeto e pressione Enter. Você pode colar a breve descrição fornecida abaixo e pressionar Enter.
A demonstration of how to use PHP Composer
5. O próximo prompt solicita um autor; pressione Enter para usar o padrão.
6. Em seguida, você será solicitado a especificar a estabilidade mínima. Para isso, você pode deixar em branco pressionando Enter para passar para o próximo prompt.
7. O próximo prompt exige que você especifique um tipo de pacote. Para isso, entre “project” e pressione Enter, conforme mostrado abaixo:
8. No prompt solicitando uma licença, pressione Enter para deixar em branco e passar para o próximo.
9. Você será perguntado se deseja especificar suas dependências; para isso, pressione Enter para selecionar “Sim”. Isso solicitará que você procure um pacote.
10. No prompt de busca por um pacote, digite “http-message” e pressione Enter. Isso procurará o pacote especificado e retornará os resultados da pesquisa conforme mostrado abaixo:
O pacote que nos interessa é o primeiro, chamado “psr/http-message”. Para selecioná-lo, digite o número associado a ele e pressione Enter. Portanto, digite “0” (zero) e pressione Enter.
11. O próximo prompt é inserir a restrição de versão a ser exigida (ou deixar em branco para usar a versão mais recente). Para isso, precisamos especificar a versão que queremos utilizar ou deixar em branco para usar a versão mais recente.
Para verificar a versão mais recente do pacote, acesse sua página no Packagist. A versão mais recente é a versão 2.0, conforme mostrado abaixo:
O Composer atualiza automaticamente os pacotes assim que as atualizações estão disponíveis. No entanto, você não deseja que ele seja atualizado para uma versão que não seja compatível com versões anteriores da versão que você está usando atualmente em seu projeto, pois isso quebraria seu código PHP. Para evitar isso, digite o seguinte para especificar a versão do pacote e pressione Enter:
^2.0
Isso indica ao Composer para instalar a versão 2.0 ou superior, desde que a versão superior seja compatível com versões anteriores.
12. Você será solicitado a procurar outro pacote; simplesmente pressione Enter para passar para o próximo prompt e não procurar outro pacote.
13. Quando solicitado a definir suas dependências de desenvolvimento, pressione Enter. Na busca por um prompt de pacote, pressione Enter para ignorá-lo, pois nossas dependências de desenvolvimento serão iguais às nossas dependências Live.
14. O próximo prompt solicitará que você adicione o mapeamento de carregamento automático PSR-4. Pressione Enter para ignorá-lo.
15. Isso lhe dará uma prévia do arquivo “composer.json” que você acabou de gerar, conforme mostrado abaixo:
Pressione Enter para confirmar a geração.
16. O próximo prompt pergunta se você deseja instalar as dependências especificadas. Para isso, pressione Enter para instalá-los, conforme mostrado abaixo:
17. No terminal, digite o seguinte comando para abrir o projeto que você acabou de criar em um editor de código:
code .
O resultado está apresentado abaixo:
Note que um arquivo “composer.json” foi gerado e nossas dependências são especificadas na chave “require”. As dependências instaladas são instaladas em um diretório chamado “vendor”.
18. Para evitar o rastreamento do diretório “vendor”, que contém todas as dependências, abra o arquivo “.gitignore” e cole a seguinte linha:
/vendor/
É recomendado que você não rastreie esse arquivo, pois ele pode se tornar muito grande, e as dependências podem ser facilmente instaladas automaticamente a partir do arquivo “composer.json”.
19. Após criar um arquivo “composer.json”, você pode adicionar facilmente novas dependências editando a seção “require” no arquivo. Por exemplo, para adicionar um pacote chamado “log”, adicione-o à seção “require”, conforme mostrado abaixo:
"require": { "psr/http-message": "^2.0", "psr/log": "^3.0.0" },
20. Para instalar essa nova dependência em seu projeto, volte ao terminal e execute:
composer update
O resultado está apresentado abaixo:
Isso instala o pacote que você acabou de adicionar ao arquivo “composer.json”.
Com isso, agora você está pronto para começar a trabalhar em seus projetos PHP e usar o Composer para gerenciar as dependências em seu projeto.
Como otimizar o Composer para um melhor gerenciamento de pacotes
Para permitir que o Composer trabalhe com mais eficiência, certifique-se de especificar as restrições de versão para as dependências com precisão. Um exemplo disso foi quando usamos “^2.0”.
Evite restrições de versão muito amplas, como “*”, que significa que o Composer pode instalar qualquer versão. Isso pode levar a problemas de compatibilidade e estabilidade em seu projeto, pois você não pode prever qual versão o Composer irá instalar.
Além disso, evite adicionar scripts personalizados excessivos ao seu arquivo “composer.json”. Adicione apenas os scripts necessários. Scripts em excesso podem levar a uma sobrecarga durante o gerenciamento das dependências.
Para otimizar a velocidade de operação do Composer, habilite a extensão curl do PHP. Você também pode usar plug-ins do Composer, como “hirak/prestissimo”, que paralelizam as operações do Composer, o que acelera a instalação de pacotes.
Você também pode limpar o cache do Composer para remover pacotes antigos e não utilizados, otimizando seu desempenho. Além disso, lembre-se de não rastrear e confirmar o diretório “vendor” onde os pacotes são instalados pelo Composer. Isso ajudará a acelerar a clonagem e a atualização dos repositórios de seus projetos.
Como desinstalar o Composer
Se você não quiser mais usar o Composer no Ubuntu, pode desinstalá-lo executando o seguinte comando:
sudo rm -rf /usr/local/bin/composer
Você pode confirmar que o Composer foi desinstalado com sucesso executando o seguinte comando:
composer
Se ele foi completamente desinstalado, você deverá obter a seguinte saída:
Conclusão
O gerenciamento de dependências é um processo crucial na construção de projetos. O gerenciamento eficiente de dependências garante que você evite problemas de compatibilidade em seus projetos e tenha projetos mais fáceis de manter.
Além disso, permite o desenvolvimento modular de software e uma colaboração aprimorada entre as equipes de desenvolvedores. Se você está construindo projetos em PHP, considere usar o Composer de forma eficaz para gerenciar as dependências de seus projetos facilmente.
Você também pode ler sobre o que é o Ubuntu PPA e como instalá-lo.