Si te dedicas a desarrollo web con PHP, probablemente hayas oído hablar de PHP Composer, un paquete Open Source para gestionar los paquetes que necesitas en tu instalación durante el desarrollo de muchas apps PHP. Gracias a Composer, vas a poder gestionar de manera sencilla todas las dependencias y librerías que el proyecto necesita, y mantenerlas actualizadas. Te voy a contar lo sencillo que es instalar Composer en Rocky Linux 9.
¿Ejemplo de uso? Pues por ejemplo para gestionar el sistema de foros Flarum.
¿Qué necesita tu sistema?
Composer necesita PHP 7.2.5 o superior para funcionar, pero también otras cosas:
Para descomprimir archivos, Composer usa 7z, gzip, tar, unrar, unzip y xz. ¿Sistemas de control de versiones? Composer se integra con Fossil, Git, Mercurial, Perforce y Subversion.
Composer es multiplataforma y funciona igual de bien en Windows, Linux y macOS. Por cierto. No te preocupes porque PHP Composer no va a interferir con otros paquetes de tu sistema operativo instalados mediante DNF.
Cómo instalar PHP Composer en Rocky Linux 9
Solo tienes que ir a https://getcomposer.org/download/ y seguir las instrucciones para Linux. Vas a la carpeta de tu proyecto y pones los siguientes comandos:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Con estos tres comandos, descargas, instalas PHP Composer y borras el programa de instalación. Si quieres, puedes comprobar el archivo de instalación, pero para ello, mejor que visites la página de instalación y veas cuál es el nuevo checksum. O como estamos instalándolo en Rocky Linux, podemos utilizar este script:
#!/bin/sh
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
then
>&2 echo 'ERROR: Invalid installer checksum'
rm composer-setup.php
exit 1
fi
php composer-setup.php --quiet
RESULT=$?
rm composer-setup.php
exit $RESULT
Después de hacer esto, tienes que tomar la decisión de usar Composer de manera local en un directorio o permitir que se ejecute en todo tu sistema. Si quieres hacerlo de esta última manera, tienes que hacer lo siguiente:
mv composer.phar /usr/local/bin/composer
Comprobamos que PHP Composer funciona correctamente
Puedes usar composer -V, pero el comando siguiente da más información:
composer diagnose
Y la salida es algo como esto:
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: OK
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.7.7
PHP version: 8.2.21
PHP binary path: #######
OpenSSL version: #######
curl version: #######
zip: extension present, unzip present, 7-Zip not available
¿Cómo se actualiza Composer?
Realmente importante. Como PHP Composer no depende del sistema de actualización de paquetes de Rocky Linux (dnf), tenemos que preocuparnos nosotros de mantenerlo actualizado con el siguiente comando:
composer self-update
Si todo está actualizado, te saldrá algo como esto:
You are already using the latest available Composer version 2.7.7 (stable channel).
Y como no queremos estar preocupándonos de tener la última versión, lo mejor es preparar un trabajo cron automático:
crontab -e
0 2 * * 1 /usr/local/bin/composer self-update 2>&1 | mail -s 'composer php update' [email protected]
Cada lunes a las 2:00 AM, se ejecutará el comando de actualización y te mandará un email con el resultado.
En https://github.com/composer/composer/releases puedes seguir todos los cambios en cada versión. También https://blog.packagist.com/tag/composer/ para seguir las actualizaciones de seguridad y posibles CVE.
¿Cómo conseguimos que Composer use una versión determinada de PHP instalada en tu sistema?
Puede que hayas instalado varias versiones de PHP en Rocky Linux, por ejemplo, con el repositorio de Remi. En ese caso, vas a tener que hacer unas cuantas cosas más. Por un lado, tienes que conseguir que Composer use la nueva versión en línea de comandos. Eso lo consigues de la siguiente manera: debes editar el archivo .bashrc con el comando vi ~/.bashrc y poner lo siguiente:
alias composer='/bin/php82 /usr/local/bin/composer'
¡Ojo! Yo he puesto esta ruta /bin/php82 porque es donde tengo el ejecutable de la versión PHP 8.2 instalada en mi sistema. Tú debes buscar la ruta adecuada en tu sistema. Puedes usar el comando:
which php
Y si estás usando el panel de control Virtualmin, puedes poner el siguiente comando:
virtualmin list-php-versions
Normalmente, la ruta será algo como esto: /bin/php, /bin/php82, /bin/php81 o /bin/php83.
La segunda parte del Alias es /usr/local/bin/composer, porque es donde hemos movido composer en el primer paso de la instalación. Puedes ajustarlo a la ruta donde lo hayas movido tú.
Para que el cambio tenga efecto debes poner lo siguiente:
source ~/.bashrc
¡Dato! Este truco también lo he usado para WP-CLI.
¿Y qué pasa en el Cron de Linux? Pues también deberías de cambiarlo si quieres que se ejecute con la última versión:
crontab -e
0 2 * * 1 /bin/php82 /usr/local/bin/composer self-update 2>&1 | mail -s 'composer php update' [email protected]
Cómo puedes borrar Composer
Más sencillo imposible. Solo tenemos que borrar este archivo ejecutable:
sudo rm /usr/local/bin/composer
Pero también puede que quieras eliminar sus archivos de configuración y cache. Busca ~/.composer donde hayas instalado Composer y bórralo:
rm -rf ~/.composer
Más comandos interesantes
Como posiblemente sabrás, la gran fuente de paquetes que puedes usar con Composer se encuentran en https://packagist.org. No los instales a lo loco, que puedes tener problemas.
Con composer config obtenemos la configuración de Composer:
composer config
Creamos un proyecto a partir de un nuevo paquete (composer create-project vendor/package), por ejemplo el de Flarum:
composer create-project flarum/flarum .
composer audit: para comprobar problemas de seguridad en tus proyectos de composer. Va a comprobar los paquetes que hayas instalado en tu proyecto. Tienes que ejecutarlo en la carpeta de tu proyecto. Con composer validate, verificamos si el archivo composer.json es válido.
composer audit
composer validate
Con composer install instamos nuevos paquetes. Con composer update actualizamos todas las dependencias del proyecto especificadas en composer.json. Con composer remove quitamos dependencias. composer show nos muestra las dependencias. composer info muestra información del proyecto actual.
composer install
composer update
composer remove
composer show
composer info
Y esto es solo el comienzo. Mejor te pasas por https://getcomposer.org/doc/ y te revisas toda la documentación, incluidos los comandos más básicos.