Instalar o Composer no Debian 13 verificando a assinatura
verificado a 2 Setembro 2026 · 3 min
Descarrega o instalador, compara o seu hash SHA-384 com o publicado em composer.github.io/installer.sig, e só o executa se os dois coincidirem. Instala-o em /usr/local/bin/composer para o tornar disponível a todos os utilizadores. Depois nunca uses sudo composer install: lança o Composer com a conta proprietária do projeto.
O Composer instala o Laravel e todas as suas dependências. No Debian, a questão não é apenas instalá-lo, mas fazê-lo sem executar um script descarregado sem controlo: o procedimento oficial verifica o hash do instalador antes de o lançar.
Passos executados em Debian 13 «trixie» a 2 de setembro de 2026, com PHP 8.4.24. Este capítulo faz parte da instalação do Laravel num servidor Debian, no percurso Desenvolvimento web.
Pré-requisitos
O Composer é um programa PHP: precisas do PHP em linha de comandos antes dele.
php -v
sudo apt install -y php-cli unzip curl ca-certificatesO unzip não é decorativo: sem ele, o Composer descomprime os ficheiros em PHP, muito mais devagar.
Instalar o Composer com verificação da assinatura
Quatro comandos, por esta ordem. O terceiro é o que conta: compara o hash do ficheiro descarregado com o publicado pelo projeto.
# 1. o hash de referência, publicado pelo projeto Composer
EXPECTED="$(curl -sS https://composer.github.io/installer.sig)"
# 2. o instalador
curl -sS https://getcomposer.org/installer -o composer-setup.php
# 3. o hash do ficheiro recebido
ACTUAL="$(php -r 'echo hash_file("sha384", "composer-setup.php");')"
# 4. não se executa nada se os dois diferirem
if [ "$EXPECTED" = "$ACTUAL" ]; then
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
else
>&2 echo "Signature invalide : téléchargement corrompu ou altéré."
rm composer-setup.php
exit 1
fiNa instalação de teste, os dois hashes coincidem:
attendue : c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
obtenue : c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
→ signature valideSem ele, executas com direitos sudo um script PHP descarregado da rede, sem qualquer garantia sobre o seu conteúdo. É por isso que a documentação oficial publica um hash de referência. Os tutoriais que encadeiam curl e depois php composer-setup.php sem comparação saltam a única proteção disponível.
Confirma o resultado:
composer --versionComposer version 2.10.3 2026-08-27 13:34:23
PHP version 8.4.24 (/usr/bin/php8.4)Colocá-lo em /usr/local/bin com o nome composer torna o comando disponível para todos os utilizadores do servidor, sem mexer no PATH.
E o pacote Debian?
O Debian propõe um pacote composer. Funciona, mas segue o ritmo da distribuição: a versão dos repositórios está quase sempre atrasada face à versão corrente. Como o Composer se atualiza a si próprio com um comando, a instalação manual continua preferível num servidor aplicacional.
sudo composer self-update # última versão estável
sudo composer self-update --rollback # voltar à anteriorNão lançar o Composer como root
Instalar o binário com sudo é normal. Usá-lo com sudo não é.
# a evitar
sudo composer install
# correto: o utilizador proprietário do projeto
su - deploy
cd /var/www/mon-projet
composer install --no-dev --optimize-autoloaderNuma máquina macOS, o problema coloca-se de outra forma e traduz-se muitas vezes por um comando laravel que não é encontrado.
Duas razões. Os scripts post-install das dependências correm com os direitos que lhes deres, o que faz de sudo composer install uma execução de código de terceiros como root. E os ficheiros criados passam a pertencer ao root, o que provoca erros de escrita assim que o servidor web tenta escrever em storage/.
Aliás, o próprio Composer avisa quando é lançado como root sem COMPOSER_ALLOW_SUPERUSER.
Opções úteis em produção
composer install --no-dev --optimize-autoloader --no-interaction| Opção | Efeito |
|---|---|
--no-dev | ignora as dependências de desenvolvimento (testes, ferramentas de depuração) |
--optimize-autoloader | gera uma tabela de classes estática, mais rápida a carregar |
--no-interaction | nenhuma pergunta, indispensável em implantação automatizada |
Envia sempre o ficheiro composer.lock com o projeto, e corre composer install e não composer update: o primeiro comando instala exatamente as versões do lock, o segundo recalcula-as e pode introduzir alterações por testar em plena colocação em produção.
Erros frequentes
composer install a partir do composer.lock.