
La Red Integral de Archivos Perl ( CPAN [ 1 ] : xvii ) es un repositorio de software con más de 220 000 módulos de software y su documentación correspondiente para 45 500 distribuciones, escritos en el lenguaje de programación Perl por más de 14 500 colaboradores. [ 2 ] CPAN puede referirse tanto a la red de archivos como al programa Perl que actúa como interfaz de la red y como instalador automático de software (similar a un gestor de paquetes ). La mayoría del software en CPAN es software libre y de código abierto . [ 3 ]
Historia
CPAN fue concebido en 1993 y ha estado activo en línea desde octubre de 1995. [ 4 ] Se basa en el modelo CTAN y comenzó como un lugar para unificar la estructura de los archivos Perl dispersos. [ 5 ]
Role
Al igual que muchos lenguajes de programación , Perl cuenta con mecanismos para usar bibliotecas de código externas, lo que permite que un solo archivo contenga rutinas comunes utilizadas por varios programas. Perl denomina a estos módulos módulos . Los módulos de Perl suelen instalarse en uno de varios directorios cuyas rutas se especifican en el intérprete de Perl durante la primera compilación ; en sistemas operativos tipo Unix , las rutas comunes incluyen /usr/lib/perl5 , /usr/local/lib/perl5 y varios de sus subdirectorios.
Perl viene con un pequeño conjunto de módulos básicos . Algunos de ellos realizan tareas de arranque, como ExtUtils::MakeMaker, [ 6 ] que se utiliza para crear Makefiles para construir e instalar otros módulos de extensión; otros, como List::Util, [ 7 ] son simplemente de uso común.
El objetivo principal de CPAN es ayudar a los programadores a localizar módulos y programas no incluidos en la distribución estándar de Perl. Su estructura es descentralizada. Los autores mantienen y mejoran sus propios módulos. Es común crear bifurcaciones y módulos alternativos para la misma tarea o propósito. Existe un sistema de seguimiento de errores de terceros que se configura automáticamente para cualquier distribución subida, pero los autores pueden optar por utilizar un sistema de seguimiento de errores diferente, como GitHub . Del mismo modo, aunque GitHub es un lugar popular para almacenar el código fuente de las distribuciones, este puede almacenarse donde el autor prefiera, o puede no ser accesible públicamente. Los mantenedores pueden otorgar permisos a otros para mantener o hacerse cargo de sus módulos, y los administradores pueden otorgar permisos a quienes deseen hacerse cargo de módulos abandonados. Las versiones anteriores de las distribuciones actualizadas se conservan en CPAN hasta que el usuario que las subió las elimina, y una red espejo secundaria llamada BackPAN conserva las distribuciones incluso si se eliminan de CPAN. [ 8 ] Además, el historial completo de CPAN y todos sus módulos está disponible como el proyecto GitPAN, [ 9 ] lo que permite ver fácilmente el historial completo de todos los módulos y facilitar el mantenimiento de las bifurcaciones. CPAN también se utiliza para distribuir nuevas versiones de Perl, así como proyectos relacionados, como Parrot y Raku .
Estructura
Los archivos en CPAN se denominan distribuciones . Una distribución puede constar de uno o más módulos, archivos de documentación o programas empaquetados en un formato de archivo común, como un archivo tar comprimido con gzip o un archivo ZIP . Las distribuciones suelen contener scripts de instalación (normalmente llamados Makefile.PL o Build.PL ) y scripts de prueba que se pueden ejecutar para verificar que el contenido de la distribución funciona correctamente. Las nuevas distribuciones se suben al servidor de carga de autores de Perl, o PAUSE (véase la sección « Subir distribuciones con PAUSE »).
En 2003, las distribuciones comenzaron a incluir archivos de metadatos, llamados META.yml , que indicaban el nombre, la versión, las dependencias y otra información útil de la distribución; sin embargo, no todas las distribuciones contienen metadatos. Cuando no hay metadatos en una distribución, el software de PAUSE intentará analizar el código de la distribución para buscar la misma información; esto no es necesariamente muy fiable. En 2010, se creó la versión 2 de esta especificación [ 10 ] para ser utilizada a través de un nuevo archivo llamado META.json , con el archivo en formato YAML incluido a menudo también para compatibilidad con versiones anteriores .
Con miles de distribuciones, CPAN necesita estar estructurado para ser útil. Los autores suelen colocar sus módulos en la jerarquía natural de nombres de módulos Perl (como Apache::DBIo Lingua::EN::Inflect) según su propósito o dominio, aunque esto no es obligatorio.
Las distribuciones de módulos de CPAN suelen tener nombres del tipo CGI-Application-3.1 (donde el símbolo :: del nombre del módulo se ha sustituido por un guion y se ha añadido el número de versión), pero esto es solo una convención; muchas distribuciones importantes la incumplen, especialmente aquellas que contienen varios módulos. Las restricciones de seguridad impiden que una distribución se sustituya por un nombre de archivo idéntico, por lo que prácticamente todos los nombres de distribución incluyen un número de versión .
Componentes
La infraestructura de distribución de CPAN consta de su red mundial de más de 250 réplicas en más de 60 países. [ 11 ] Cada réplica completa aloja alrededor de 36 gigabytes de datos. [ 12 ]
La mayoría de los servidores espejo se actualizan cada hora, diariamente o cada dos días desde el sitio maestro de CPAN. [ 13 ] Algunos sitios son servidores FTP importantes que replican mucho otro software, pero otros son simplemente servidores propiedad de empresas que utilizan Perl intensivamente. Hay al menos dos servidores espejo en cada continente, excepto en la Antártida.
Se han desarrollado varios motores de búsqueda para ayudar a los programadores de Perl a navegar por el CPAN. El motor de búsqueda oficial search.cpan.org incluye
Los probadores de CPAN son un grupo de voluntarios que descargan y prueban las distribuciones a medida que se suben a CPAN. Esto permite a los autores probar sus módulos en diversas plataformas y entornos a los que, de otro modo, no tendrían acceso, mejorando así la portabilidad y la calidad. Los probadores envían informes que se recopilan y utilizan en varios sitios web de presentación, incluyendo el sitio principal de informes, estadísticas y dependencias.
Los autores pueden subir nuevas distribuciones al CPAN a través del servidor de carga de autores de Perl (PAUSE). Para ello, deben solicitar una cuenta PAUSE.
Una vez registrados, pueden usar una interfaz web en pause.perl.org o una interfaz FTP para subir archivos a su directorio y eliminarlos. Los módulos subidos solo se indexarán como canónicos si el nombre del módulo no se ha usado antes (otorgando permiso de prioridad al usuario que lo sube), o si el usuario tiene permiso para ese nombre y si el módulo es una versión superior a cualquier entrada existente. [ 16 ] Esto se puede especificar a través de la interfaz web de PAUSE.
CPAN.pm, CPANPLUS y cpanminus
También existe un módulo principal de Perl llamado CPAN, que suele distinguirse del repositorio mediante el nombre CPAN.pm. CPAN.pm es principalmente una consola interactiva que permite buscar, descargar e instalar distribuciones. El núcleo de Perl también incluye una consola interactiva llamada cpan , que es la forma habitual de ejecutar CPAN.pm. Tras un breve proceso de configuración y la selección de un repositorio, utiliza las herramientas disponibles en el ordenador del usuario para descargar, descomprimir, compilar, probar e instalar módulos automáticamente. Además, puede actualizarse automáticamente.
El intento de reemplazar CPAN.pm con una alternativa más limpia y moderna dio como resultado el conjunto de módulos CPANPLUS (o CPAN++). CPANPLUS separa el trabajo de back-end (descarga, compilación e instalación de módulos) de la consola interactiva utilizada para ejecutar comandos. Admite varias funciones avanzadas, como la verificación de firmas criptográficas, la generación de informes de resultados de pruebas y la desinstalación de una distribución. CPANPLUS se incorporó al núcleo de Perl en la versión 5.10.0 y se eliminó en la versión 5.20.0.
Se desarrolló una alternativa moderna, más pequeña y ligera a estos instaladores de CPAN llamada cpanminus. cpanminus se diseñó para tener un consumo de memoria mucho menor, como suele ser necesario en entornos con memoria limitada, y para poder usarse como un script independiente, de modo que incluso puede instalarse a sí mismo, requiriendo únicamente el conjunto esperado de módulos Perl básicos. También está disponible en CPAN como el módulo App::cpanminus, que instala el script cpanm . No mantiene ni depende de una configuración persistente, sino que se configura únicamente mediante el entorno y las opciones de la línea de comandos. cpanminus no tiene un componente de shell interactivo. Reconoce el formato cpanfile para especificar los prerrequisitos, útil en proyectos Perl ad hoc que pueden no estar diseñados para la instalación en CPAN. cpanminus también tiene la capacidad de desinstalar distribuciones.
Cada uno de estos módulos puede verificar las dependencias de una distribución e instalar recursivamente los requisitos previos, ya sea automáticamente o con la aprobación del usuario. Todos son compatibles con FTP y HTTP y pueden funcionar a través de cortafuegos y servidores proxy.
Influencia
Los programadores experimentados de Perl suelen comentar que la mitad del poder de Perl reside en CPAN. Se le ha llamado la aplicación estrella de Perl . [ 17 ] Es aproximadamente equivalente a Composer para PHP ; el repositorio PyPI (Python Package Index) para Python ; RubyGems para Ruby ; CRAN para R ; npm para Node.js ; LuaRocks para Lua ; Maven para Java ; y Hackage para Haskell . El uso que hace CPAN de espacios de nombres arbitrados, un régimen de pruebas y un estilo de documentación bien definido lo hacen único.
Dada su importancia para la comunidad de desarrolladores de Perl, el CPAN moldea la cultura de Perl y, a su vez, es moldeado por ella . Su "autoproclamado bibliotecario maestro", Jarkko Hietaniemi , participa a menudo en las bromas del Día de los Inocentes ; el 1 de abril de 2002, el sitio se denominó temporalmente CJAN , donde la "J" significaba "Java". En 2003, el www.cpan.orgnombre de dominio se redirigió a Matt's Script Archive , un sitio tristemente célebre en la comunidad de Perl por tener código mal escrito. [ 18 ] [ 19 ] [ 20 ]
Algunas distribuciones en CPAN se distribuyen como bromas. La Acme::jerarquía está reservada para módulos de broma; por ejemplo, Acme::Don'tagrega una don'tfunción que no ejecuta el código que se le proporciona (para complementar la dofunción integrada, que sí lo hace). Incluso fuera de la Acme::jerarquía, algunos módulos se escriben principalmente por diversión; un ejemplo es Lingua::Romana::Perligata, que se puede usar para escribir programas Perl en un subconjunto del latín.
En 2005, un grupo de desarrolladores de Perl interesados también en JavaScript se reunieron para crear JSAN , la Red de Archivos de JavaScript. JSAN es una adaptación casi directa de la infraestructura CPAN para su uso con el lenguaje JavaScript, que durante la mayor parte de su existencia no tuvo una "comunidad" cohesionada.
En 2008, tras un encuentro casual con Adam Kennedy, administrador de CPAN , en la Conferencia de Desarrolladores de Código Abierto, el desarrollador del kernel de Linux, Rusty Russell, creó CCAN, la Red Integral de Archivos C. CCAN es una adaptación directa de la arquitectura CPAN para su uso con el lenguaje C.
CRAN, la Red Integral de Archivos de R, es un conjunto de servidores espejo que alojan la (s) distribución(es) del lenguaje R , la documentación y las extensiones aportadas. [ 21 ]
Véase también
- CTAN : sitio que aloja materiales TeX
- Lista de software y herramientas Perl
Referencias
- ↑ Wall, Larry; Schwartz, Randal; Christiansen, Tom (1996). Programación en Perl . O'Reilly. ISBN 978-1-5659-2149-8Consultado el 21 de diciembre de 2025 .
- ↑ "Página principal de CPAN" . Consultado el 2 de febrero de 2025 .
- ↑ "¿Cómo se licencian Perl y los módulos de CPAN?" La
mayoría de los módulos de CPAN, aunque no todos, se licencian bajo la Licencia Pública General de GNU (GPL) o la Licencia Artística...
- ↑ "Cronología de Perl y su cultura" .
- ↑ "Entendiendo el CPAN" (PDF) .
Propongo que cooperemos para crear una estructura unificada, muy parecida al proyecto CTAN, que ha logrado crear una colección de sitios canónicos para TeX.
- ↑ "ExtUtils::MakeMaker - Crear un Makefile de módulo - Navegador Perldoc" . perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
- ↑ "List::Util - Una selección de subrutinas de lista de utilidad general - Navegador Perldoc" . perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
- ↑ "BackPAN" . Consultado el 20 de diciembre de 2019 .
- ↑ "¿Qué es Gitpan?" . GitHub . 2 de diciembre de 2015 . Consultado el 16 de noviembre de 2016 .
- ↑ "CPAN::Meta::History" . MetaCPAN . Consultado el 20 de diciembre de 2019 .
- ↑ "Red espejo de CPAN" . Consultado el 16 de noviembre de 2016 .
- ↑ "Cómo replicar CPAN" . CPAN.org . Consultado el 22 de agosto de 2024 .
- ↑ "Estado y estadísticas de CPAN" . Consultado el 9 de mayo de 2010 .
- ↑ "El fin de una era: Decir adiós a search.cpan.org" . log.perl.org . Consultado el 22 de mayo de 2018 .
- ↑ "Despidiendo search.cpan.org" . perl.com . Consultado el 26 de junio de 2018 .
- ↑ "Modelo operativo PAUSE" . GitHub . Consultado el 20 de diciembre de 2019 .
- ↑ "Re: Aplicaciones revolucionarias en PERL" . Consultado el 24 de febrero de 2013 .
- ↑ "Elementos de programación con Perl" . 12 de octubre de 2000. Consultado el 25 de abril de 2013 .
- ↑ "Aprovecha este formulario formmail.pl para divertirte y, bueno, divertirte" . 7 de agosto de 2001. Consultado el 25 de abril de 2013 .
- ↑ "¡El archivo de guiones de Matt ataca de nuevo!" . 4 de julio de 2001 . Consultado el 25 de abril de 2013 .
- ↑ "¿Qué es CRAN?" . Consultado el 20 de diciembre de 2019 .
Enlaces externos
- Sitio web oficial

- MetaCPAN
- Lista de réplicas oficiales de CPAN , estado de las réplicas
- ZCAN - "El Zen de las Redes de Archivo Integral" - un documento que pretende explicar cómo y por qué CPAN tuvo éxito y cómo replicarlo en esfuerzos similares. (9 de enero de 2003 por Jarkko Hietaniemi ).
- Perl
- Redes de archivo
- Sistemas de gestión de paquetes gratuitos
- Sistemas de gestión de paquetes