Cómo instalar y utilizar Composer en Debian 10
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 esta guía, veremos cómo instalar y usar Composer en un servidor Debian 10.
Prerrequisitos
Para completar este tutorial, necesitará un servidor Debian 10 configurado siguiendo la guía de configuración inicial del servidor Debian 10, incluido un usuario regular con sudo
privilegios.
Paso 1: Instalación de las dependencias
Antes de poder descargar e instalar Composer, nos aseguraremos de que su servidor tenga todas las dependencias instaladas.
Primero, actualice el caché del administrador de paquetes ejecutando:
- sudo apt update
Ahora, vamos a instalar las dependencias. Las necesitaremos curl
para descargar Composer y php-cli
para instalarlo y ejecutarlo. El php-mbstring
paquete es necesario para proporcionar funciones para una biblioteca que usaremos. git
Composer lo usa para descargar dependencias del proyecto y unzip
para extraer paquetes comprimidos. Todo se puede instalar con el siguiente comando:
- sudo apt install curl php-cli php-mbstring git unzip
Con los prerrequisitos instalados, podemos instalar el propio Composer.
Paso 2: Descargar e instalar Composer
Composer proporciona un instalador 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 composer-setup.php
A continuación, verifique que el instalador coincida con el hash SHA-384 del último instalador que se encuentra en la página [Composer Public Keys / Signatures][composer-sigs]. Copie el hash de esa página y guárdelo como una variable de shell:
- HASH=48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5
Asegúrese de sustituir el último hash por el valor resaltado.
Ahora ejecute el siguiente script PHP para verificar que el script de instalación sea seguro de ejecutar:
- php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Verá el siguiente resultado.
Producción
Installer verified
Si ves Installer corrupt
, tendrás que descargar el script de instalación nuevamente y verificar que estás usando el hash correcto. Luego, ejecuta el comando para verificar el instalador nuevamente. Una vez que tengas un instalador verificado, puedes 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 composer-setup.php --install-dir=/usr/local/bin --filename=composer
Verás el siguiente resultado:
OutputAll settings correct for using ComposerDownloading...Composer (version 1.8.6) successfully installed to: /usr/local/bin/composerUse it: php /usr/local/bin/composer
Para probar su instalación, ejecute:
- composer
Y verá un resultado que muestra la versión y los argumentos de Composer, similar a esto:
Output ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___// /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/Composer version 1.8.6 2019-06-11 15:03:05Usage: 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. -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. Los usuarios de NPM estarán familiarizados con este enfoque. 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 composer-setup.php
. Esto generará un composer.phar
archivo en su directorio actual, que puede ejecutarse con ../composer.phar command
Ahora veamos cómo usar Composer para administrar las dependencias de PHP.
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 dependencias y facilitar que otros las instalen.
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, ya que es fácil encontrar errores de sintaxis al hacerlo. Composer genera automáticamente el composer.json
archivo cuando agrega una dependencia a su proyecto mediante el require
comando. Puede agregar dependencias adicionales de la misma manera, sin necesidad de editar manualmente este archivo.
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
Ahora es el momento de buscar en Packagist.org un paquete que nos pueda ayudar 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 y el número de la parte inferior muestra la cantidad de veces que se marcó con una estrella en GitHub. Puedes reordenar los resultados de la búsqueda en función de estos números (busca los dos íconos en el lado derecho de la barra de búsqueda). 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 asegurarte de que sea lo que necesitas.
Necesitamos un convertidor de cadenas a slugs sencillo. Según los resultados de la búsqueda, el paquete cocur/slugify
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, en la forma . La biblioteca que queremos instalar usa el espacio de nombres . Necesitas el espacio de nombres para requerir el paquete en tu proyecto.vendor/package
cocur/slugif
Ahora que sabes exactamente qué paquete quieres instalar, ejecuta composer require
para incluirlo como dependencia y también generar el composer.json
archivo para el proyecto:
- composer require cocur/slugify
Verá el siguiente resultado mientras Composer descarga la dependencia:
OutputUsing version ^3.2 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 (v3.2): 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-r--r-- 1 sammy sammy 59 jul 15 13:53 composer.json-rw-r--r-- 1 sammy sammy 2952 jul 15 13:53 composer.lockdrwxr-xr-x 4 sammy sammy 4096 jul 15 13:53 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. vendor
No es necesario incluir la carpeta en el control de versiones: solo necesita 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": "^3.2" }}
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 3.2 como la versión mínima compatible y permite actualizaciones a cualquier versión futura anterior a 4.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 obtener la carga automática de forma gratuita. Esto hace que sea mucho más fácil trabajar con tus dependencias.
Lo único que tienes que hacer es incluir el vendor/autoload.php
archivo en tus scripts PHP antes de crear cualquier instancia de clase. Composer genera automáticamente este archivo cuando agregas tu primera dependencia.
Probémoslo en nuestra aplicación. Crea el archivo test.php
y ábrelo en tu 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 confirmar los cambios en sus archivos composer.json
y composer.lock
después de actualizar sus dependencias, de modo que quien trabaje en el proyecto tenga acceso a las mismas versiones del paquete.
Conclusión
Composer es una herramienta poderosa que todo desarrollador PHP debería tener en su arsenal. En este tutorial, instalaste Composer en Debian 10 y lo usaste en un proyecto simple. Ahora sabes cómo instalar y actualizar dependencias.
Además de proporcionar una forma fácil y confiable de administrar las dependencias del proyecto, también establece un nuevo estándar de facto para compartir y descubrir paquetes PHP creados por la comunidad.
Deja una respuesta