Cómo instalar y utilizar Composer en Ubuntu 20.04

Introducción
Composer es una herramienta de gestión de dependencias popular para PHP, creada principalmente para facilitar la instalación y actualización de dependencias de proyectos. Verificará de qué otros paquetes depende un proyecto específico y los instalará por usted, utilizando las versiones adecuadas según los requisitos del proyecto. Composer también se usa comúnmente para iniciar nuevos proyectos basados en frameworks PHP populares, como Symfony y Laravel .
En este tutorial, instalará y comenzará a utilizar Composer en un sistema Ubuntu 20.04.
También puede implementar un proyecto basado en Composer directamente en DigitalOcean en 5 minutos. Para obtener más información sobre cómo implementar un proyecto PHP, consulte nuestra Plataforma de aplicaciones de DigitalOcean .
Prerrequisitos
Para seguir esta guía, necesitarás acceso a un servidor Ubuntu 20.04 como sudo
usuario no root y un firewall habilitado en tu servidor. Para configurarlo, puedes seguir nuestra guía de configuración inicial del servidor para Ubuntu 20.04 .
Paso 1: Instalación de PHP y dependencias adicionales
Además de las dependencias que ya deberían estar incluidas en su sistema Ubuntu 20.04, como git
y curl
, Composer las requiere php-cli
para ejecutar scripts PHP en la línea de comandos y unzip
extraer archivos comprimidos. Instalaremos estas dependencias ahora.
Primero, actualice el caché del administrador de paquetes ejecutando:
- sudo apt update
A continuación, ejecute el siguiente comando para instalar los paquetes necesarios:
- sudo apt install php-cli unzip
Se le pedirá que confirme la instalación escribiendo Y
y luego ENTER
.
Una vez instalados los requisitos previos, puede proceder a instalar Composer.
Paso 2: Descargar e instalar Composer
Composer proporciona un script de instalación escrito en PHP. Lo descargaremos, verificaremos que no esté dañado y luego lo usaremos para instalar Composer.
Asegúrate de estar en tu directorio de inicio, luego recupera el instalador usando curl
:
- cd ~
- curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
A continuación, verificaremos que el instalador descargado coincida con el hash SHA-384 del instalador más reciente que se encuentra en la página Firmas/claves públicas de Composer . Para facilitar el paso de verificación, puede utilizar el siguiente comando para obtener mediante programación el hash más reciente de la página de Composer y almacenarlo en una variable de shell:
- HASH=`curl -sS https://composer.github.io/installer.sig`
Si desea verificar el valor obtenido, puede ejecutar:
- echo $HASH
Outpute0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a
Ahora ejecute el siguiente código PHP, como se proporciona en la página de descarga de Composer , para verificar que el script de instalación sea seguro de ejecutar:
- php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Verás el siguiente resultado:
Producción
Installer verified
Si el resultado indica Installer corrupt
, deberá descargar nuevamente el script de instalación y verificar que esté usando el hash correcto. Luego, repita el proceso de verificación. Cuando tenga un instalador verificado, podrá continuar.
Para instalarlo composer
globalmente, utilice el siguiente comando que descargará e instalará Composer como un comando para todo el sistema llamado composer
, en /usr/local/bin
:
- sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Verás un resultado similar a este:
OutputAll settings correct for using ComposerDownloading...Composer (version 2.2.9) successfully installed to: /usr/local/bin/composerUse it: php /usr/local/bin/composer
Para probar su instalación, ejecute:
- composer
Output ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___// /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/Composer version Composer version 2.2.9 2022-03-15 22:13:37Usage: command [options] [arguments]Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug...
Esto verifica que Composer se instaló correctamente en su sistema y está disponible en todo el sistema.
Nota: Si prefiere tener ejecutables de Composer separados para cada proyecto que aloje en este servidor, puede instalarlo localmente, por proyecto. Este método también es útil cuando el usuario de su sistema no tiene permiso para instalar software en todo el sistema.
Para ello, utilice el comando php /tmp/composer-setup.php
. Esto generará un composer.phar
archivo en su directorio actual, que puede ejecutarse con php composer.phar
.
Ahora veamos cómo usar Composer para administrar dependencias.
Paso 3: Uso de Composer en un proyecto PHP
Los proyectos PHP suelen depender de bibliotecas externas, y administrar esas dependencias y sus versiones puede ser complicado. Composer resuelve ese problema al realizar un seguimiento de las versiones y dependencias del proyecto, y al mismo tiempo facilita el proceso de búsqueda, instalación y actualización de los paquetes que requiere un proyecto.
Para poder usar Composer en tu proyecto, necesitarás un composer.json
archivo. El composer.json
archivo le indica a Composer qué dependencias necesita descargar para tu proyecto y qué versiones de cada paquete pueden instalarse. Esto es extremadamente importante para mantener la coherencia de tu proyecto y evitar instalar versiones inestables que podrían causar problemas de compatibilidad con versiones anteriores.
No es necesario crear este archivo manualmente: es común encontrarse con errores de sintaxis cuando lo hace. Composer ofrece una forma interactiva de crear un nuevo composer.json
archivo en función de la entrada del usuario, lo que es una buena opción si planea compartir su proyecto más adelante como un paquete público en Packagist . Composer también genera automáticamente un composer.json
archivo básico cuando ejecuta un composer require
comando para incluir una dependencia en un proyecto recién creado.
El proceso de uso de Composer para instalar un paquete como dependencia en un proyecto implica los siguientes pasos:
- Identifique qué tipo de biblioteca necesita la aplicación.
- Busque una biblioteca de código abierto adecuada en Packagist.org , el repositorio de paquetes oficial de Composer.
- Elige el paquete del cual deseas depender.
- Ejecutar
composer require
para incluir la dependencia en elcomposer.json
archivo e instalar el paquete.
Probemos esto con una aplicación de demostración.
El objetivo de esta aplicación es transformar una oración dada en una cadena compatible con URL: un slug . Esto se usa comúnmente para convertir títulos de páginas en rutas URL (como la parte final de la URL de este tutorial).
Comencemos creando un directorio para nuestro proyecto. Lo llamaremos slugify :
- cd ~
- mkdir slugify
- cd slugify
Aunque no es obligatorio, ahora puedes ejecutar un composer init
comando para crear un composer.json
archivo detallado para tu proyecto. Como el único objetivo de nuestro proyecto es demostrar cómo instalar dependencias con Composer, usaremos un composer.json
archivo más simple que se generará automáticamente cuando necesitemos nuestro primer paquete.
Ahora es el momento de buscar en Packagist.org un paquete que nos ayude a generar slugs . Si buscas el término “slug” en Packagist, obtendrás un resultado similar a este:
Verás dos números en el lado derecho de cada paquete de la lista. El número de la parte superior representa la cantidad de veces que se instaló el paquete a través de Composer y el número de la parte inferior muestra la cantidad de veces que se marcó un paquete con una estrella en GitHub. En términos generales, los paquetes con más instalaciones y más estrellas tienden a ser más estables, ya que mucha gente los usa. También es importante verificar la descripción del paquete para comprobar su relevancia y asegurarse de que sea lo que necesitas.
Necesitamos un convertidor de cadenas a slugs . Según los resultados de la búsqueda, el paquete cocur/slugify
, que aparece como primer resultado en esa página, parece ser una buena opción, con una cantidad razonable de instalaciones y estrellas.
Los paquetes en Packagist tienen un nombre de proveedor y un nombre de paquete . Cada paquete tiene un identificador único (un espacio de nombres) en el mismo formato que GitHub usa para sus repositorios: . La biblioteca que queremos instalar usa el espacio de nombres . Necesita el espacio de nombres de un paquete para poder requerirlo en su proyecto.vendor/package
cocur/slugify
Ahora que sabe exactamente qué paquete desea instalar, puede ejecutarlo composer require
para incluirlo como una dependencia y también generar el composer.json
archivo para su proyecto. Una cosa que es importante tener en cuenta al solicitar paquetes es que Composer realiza un seguimiento tanto de las dependencias a nivel de aplicación como de las dependencias a nivel de sistema. Las dependencias a nivel de sistema son importantes para indicar en qué módulos PHP se basa un paquete. En el caso del cocur/slugify
paquete, se requiere un módulo PHP que aún no hemos instalado.
Cuando un paquete requerido depende de una biblioteca del sistema que actualmente no está instalada en su servidor, recibirá un error que le indicará qué requisito falta:
- composer require cocur/slugify
OutputUsing version ^4.0 for cocur/slugify./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev)Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for cocur/slugify ^4.0 - satisfiable by cocur/slugify[v4.0.0]. - cocur/slugify v4.0.0 requires ext-mbstring * - the requested PHP extension mbstring is missing from your system....
Para resolver el problema de dependencia del sistema, podemos buscar el paquete faltante usando apt search
:
- apt search mbstring
OutputSorting... DoneFull Text Search... Donephp-mbstring/focal 2:7.4+75 all MBSTRING module for PHP [default]php-patchwork-utf8/focal 1.3.1-1 all UTF-8 strings handling for PHPphp7.4-mbstring/focal 7.4.3-4ubuntu1 amd64 MBSTRING module for PHP
Después de localizar el nombre del paquete correcto, puede utilizar apt
nuevamente para instalar la dependencia del sistema:
- sudo apt install php-mbstring
Una vez finalizada la instalación, puedes ejecutar composer require
nuevamente el comando:
- composer require cocur/slugify
OutputUsing version ^4.0 for cocur/slugify./composer.json has been createdLoading composer repositories with package informationUpdating dependencies (including require-dev)Package operations: 1 install, 0 updates, 0 removals - Installing cocur/slugify (v4.0.0): Downloading (100%) Writing lock fileGenerating autoload files
Como puede ver en el resultado, Composer decidió automáticamente qué versión del paquete usar. Si revisa el directorio de su proyecto ahora, contendrá dos archivos nuevos: composer.json
y composer.lock
, y un vendor
directorio:
- ls -l
Outputtotal 12-rw-rw-r-- 1 sammy sammy 59 May 4 13:56 composer.json-rw-rw-r-- 1 sammy sammy 3229 May 4 13:56 composer.lockdrwxrwxr-x 4 sammy sammy 4096 May 4 13:56 vendor
El composer.lock
archivo se utiliza para almacenar información sobre qué versiones de cada paquete están instaladas y garantizar que se utilicen las mismas versiones si alguien más clona su proyecto e instala sus dependencias. El vendor
directorio es donde se encuentran las dependencias del proyecto. La vendor
carpeta no debe incluirse en el control de versiones: solo debe incluir los archivos composer.json y composer.lock .
Al instalar un proyecto que ya contiene un composer.json
archivo, ejecute composer install
para descargar las dependencias del proyecto.
Echemos un vistazo rápido a las restricciones de versión. Si revisa el contenido de su composer.json
archivo, verá algo como esto:
- cat composer.json
Output{ "require": { "cocur/slugify": "^4.0" }}
Es posible que notes el carácter especial ^
antes del número de versión en composer.json
. Composer admite varias restricciones y formatos diferentes para definir la versión del paquete requerida, con el fin de proporcionar flexibilidad y, al mismo tiempo, mantener estable el proyecto. El ^
operador de intercalación ( ) utilizado por el archivo generado automáticamente composer.json
es el operador recomendado para lograr la máxima interoperabilidad, siguiendo el control de versiones semántico . En este caso, define 4.0 como la versión mínima compatible y permite actualizaciones a cualquier versión futura anterior a 5.0 .
En términos generales, no necesitarás modificar las restricciones de versión en tu composer.json
archivo. Sin embargo, algunas situaciones pueden requerir que edites manualmente las restricciones; por ejemplo, cuando se lanza una nueva versión importante de la biblioteca que necesitas y deseas actualizarla, o cuando la biblioteca que deseas usar no sigue el control de versiones semántico.
A continuación se muestran algunos ejemplos para que comprenda mejor cómo funcionan las restricciones de versión de Composer:
Restricción | Significado | Ejemplos de versiones permitidas |
---|---|---|
^1.0 | = 1,0 2,0 | 1.0, 1.2.3, 1.9.9 |
^1.1.0 | = 1.1.0 2.0 | 1.1.0, 1.5.6, 1.9.9 |
~1.0 | = 1.0 2.0.0 | 1.0, 1.4.1, 1.9.9 |
~1.0.0 | = 1.0.0 1.1 | 1.0.0, 1.0.4, 1.0.9 |
1.2.1 | 1.2.1 | 1.2.1 |
1.* | = 1,0 2,0 | 1.0.0, 1.4.5, 1.9.9 |
1.2.* | = 1,2 1,3 | 1.2.0, 1.2.3, 1.2.9 |
Para obtener una visión más detallada de las restricciones de la versión de Composer, consulte la documentación oficial .
A continuación, veamos cómo cargar dependencias automáticamente con Composer.
Paso 4: Incluir el script de carga automática
Dado que PHP no carga clases automáticamente, Composer proporciona un script de carga automática que puedes incluir en tu proyecto para que la carga automática funcione en tu proyecto. Composer genera automáticamente este archivo cuando agregas tu primera dependencia.
Lo único que necesitas hacer es incluir el vendor/autoload.php
archivo en tus scripts PHP antes de cualquier instancia de clase.
Probémoslo en nuestra aplicación de demostración. Abra un nuevo archivo llamado test.php
en su editor de texto:
- nano test.php
Agregue el siguiente código que trae el vendor/autoload.php
archivo, carga la cocur/slugify
dependencia y lo usa para crear un slug:
prueba.php
?phprequire __DIR__ . '/vendor/autoload.php';use CocurSlugifySlugify;$slugify = new Slugify();echo $slugify-slugify('Hello World, this is a long sentence and I need to make a slug from it!');
Guarde el archivo y salga del editor.
Ahora ejecute el script:
- php test.php
Esto produce la salida hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
.
Las dependencias necesitan actualizaciones cuando salen nuevas versiones, así que veamos cómo manejar eso.
Paso 5: Actualización de las dependencias del proyecto
Siempre que desee actualizar las dependencias de su proyecto a versiones más recientes, ejecute el update
comando:
- composer update
Esto comprobará si hay versiones más nuevas de las bibliotecas que necesita en su proyecto. Si se encuentra una versión más nueva y es compatible con la restricción de versión definida en el composer.json
archivo, Composer reemplazará la versión anterior instalada. El composer.lock
archivo se actualizará para reflejar estos cambios.
También puedes actualizar una o más bibliotecas específicas especificándolas de esta manera:
- composer update vendor/package vendor2/package2
Asegúrese de verificar sus archivos composer.json
y composer.lock
dentro de su sistema de control de versiones después de actualizar sus dependencias para que otros también puedan instalar estas versiones más nuevas.
Conclusión
Composer es una herramienta potente que puede facilitar enormemente el trabajo de gestión de dependencias en proyectos PHP. Proporciona una forma fiable de descubrir, instalar y actualizar los paquetes PHP de los que depende un proyecto. En esta guía, vimos cómo instalar Composer, cómo incluir nuevas dependencias en un proyecto y cómo actualizar estas dependencias una vez que estén disponibles nuevas versiones.
Deja una respuesta