Cómo instalar y utilizar Composer en Ubuntu 22.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de PHP y dependencias adicionales
  • Paso 2: Descargar e instalar Composer
  • Paso 3: Uso de Composer en un proyecto PHP
  • Paso 4: Incluir el script de carga automática
  • Paso 5: Actualización de las dependencias del proyecto
  • Conclusió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 22.04.

    Prerrequisitos

    Para seguir esta guía, necesitarás acceso a un servidor Ubuntu 22.04 como sudousuario no root y un firewall habilitado en tu servidor. Para configurarlo, puedes seguir nuestra guía de configuración inicial del servidor para Ubuntu 22.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 22.04, como gity curl, Composer las requiere php-clipara ejecutar scripts PHP en la línea de comandos y unzipextraer archivos comprimidos. Instalaremos estas dependencias ahora.

    Primero, actualice el caché del administrador de paquetes ejecutando:

    1. sudo apt update

    A continuación, ejecute el siguiente comando para instalar los paquetes necesarios:

    1. sudo apt install php-cli unzip

    Se le pedirá que confirme la instalación escribiendo Yy 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:

    1. cd ~
    2. 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:

    1. HASH=`curl -sS https://composer.github.io/installer.sig`

    Si desea verificar el valor obtenido, puede ejecutar:

    1. echo $HASH
    Output906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8

    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:

    1. 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 composerglobalmente, utilice el siguiente comando que descargará e instalará Composer como un comando para todo el sistema llamado composer, en /usr/local/bin:

    1. 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.3.5) successfully installed to: /usr/local/bin/composerUse it: php /usr/local/bin/composer

    Para probar su instalación, ejecute:

    1. composer
    Output   ______  / ____/___  ____ ___  ____  ____  ________  _____ / /   / __ / __ `__ / __ / __ / ___/ _ / ___// /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /____/____/_/ /_/ /_/ .___/____/____/___/_/                    /_/Composer version 2.3.5 2022-04-13 16:43:00Usage:  command [options] [arguments]Options:  -h, --help                     Display help for the given command. When no command is given display help for the list command  -q, --quiet                    Do not output any message  -V, --version                  Display this application version      --ansi|--no-ansi           Force (or disable --no-ansi) ANSI output  -n, --no-interaction           Do not ask any interactive question      --profile                  Display timing and memory usage information      --no-plugins               Whether to disable plugins.      --no-scripts               Skips the execution of all scripts defined in composer.json file.  -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.phararchivo 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.jsonarchivo. El composer.jsonarchivo 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.jsonarchivo 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.jsonarchivo básico cuando ejecuta un composer requirecomando 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 requirepara incluir la dependencia en el composer.jsonarchivo 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 :

    1. cd ~
    2. mkdir slugify
    3. cd slugify

    Aunque no es obligatorio, ahora puedes ejecutar un composer initcomando para crear un composer.jsonarchivo detallado para tu proyecto. Como el único objetivo de nuestro proyecto es demostrar cómo instalar dependencias con Composer, usaremos un composer.jsonarchivo 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/packagecocur/slugify

    Ahora que sabe exactamente qué paquete desea instalar, puede ejecutarlo composer requirepara incluirlo como una dependencia y también generar el composer.jsonarchivo 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/slugifypaquete, 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:

    1. composer require cocur/slugify:4.1
    Output./composer.json has been createdRunning composer update cocur/slugifyLoading composer repositories with package informationUpdating dependenciesYour requirements could not be resolved to an installable set of packages.  Problem 1    - Root composer.json requires cocur/slugify 4.1 - satisfiable by cocur/slugify[v4.1.0].    - cocur/slugify v4.1.0 requires ext-mbstring * - it is missing from your system. Install or enable PHP's mbstring extension....

    Para resolver el problema de dependencia del sistema, podemos buscar el paquete faltante usando apt search:

    1. apt search mbstring
    OutputSorting... DoneFull Text Search... Donephp-mbstring/jammy 2:8.1+92ubuntu1 all  MBSTRING module for PHP [default]php-symfony-polyfill-mbstring/jammy 1.24.0-1ubuntu2 all  Symfony polyfill for the Mbstring extensionphp8.1-mbstring/jammy 8.1.2-1ubuntu2 amd64  MBSTRING module for PHP

    Después de localizar el nombre del paquete correcto, puede utilizar aptnuevamente para instalar la dependencia del sistema:

    1. sudo apt install php-mbstring

    Una vez finalizada la instalación, puedes ejecutar composer requirenuevamente el comando:

    1. composer require cocur/slugify
    OutputUsing version ^4.1 for cocur/slugify./composer.json has been createdRunning composer update cocur/slugifyLoading composer repositories with package informationUpdating dependenciesLock file operations: 1 install, 0 updates, 0 removals  - Locking cocur/slugify (v4.1.0)Writing lock fileInstalling dependencies from lock file (including require-dev)Package operations: 1 install, 0 updates, 0 removals  - Installing cocur/slugify (v4.1.0): Extracting archiveGenerating 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.jsony composer.lock, y un vendordirectorio:

    1. ls -l
    Outputtotal 12-rw-r--r-- 1 sammy sammy   59 Apr 18 14:17 composer.json-rw-r--r-- 1 sammy sammy 3462 Apr 18 14:17 composer.lockdrwxr-xr-x 4 sammy sammy 4096 Apr 18 14:17 vendor

    El composer.lockarchivo 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 vendordirectorio es donde se encuentran las dependencias del proyecto. La vendorcarpeta 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.jsonarchivo, ejecute composer installpara descargar las dependencias del proyecto.

    Echemos un vistazo rápido a las restricciones de versión. Si revisa el contenido de su composer.jsonarchivo, verá algo como esto:

    1. cat composer.json
    Output{    "require": {        "cocur/slugify": "^4.1"    }}

    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.jsones 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.jsonarchivo. 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.phparchivo 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.phpen su editor de texto:

    1. nano test.php

    Agregue el siguiente código que trae el vendor/autoload.phparchivo, carga la cocur/slugifydependencia 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:

    1. 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 updatecomando:

    1. 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.jsonarchivo, Composer reemplazará la versión anterior instalada. El composer.lockarchivo se actualizará para reflejar estos cambios.

    También puedes actualizar una o más bibliotecas específicas especificándolas de esta manera:

    1. composer update vendor/package vendor2/package2

    Asegúrese de verificar sus archivos composer.jsony composer.lockdentro 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.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion