stringtranslate.com

CPAN

logotipo de CPAN

La Comprehensive Perl Archive Network ( CPAN ) es un depósito de más de 250.000 módulos de software y la documentación adjunta para 39.000 distribuciones, escritas en el lenguaje de programación Perl por más de 12.000 colaboradores. [1] CPAN puede indicar la red de archivos o el programa Perl que actúa como interfaz para la red y como instalador de software automatizado (algo así como un administrador de paquetes ). La mayor parte del software de CPAN es gratuito y de código abierto . [2]

Historia

CPAN fue concebido en 1993 y ha estado activo en línea desde octubre de 1995. [3] Se basa en el modelo CTAN y comenzó como un lugar para unificar la estructura de archivos Perl dispersos. [4]

Role

Como muchos lenguajes de programación , Perl tiene mecanismos para utilizar bibliotecas de código externas, haciendo que un archivo contenga rutinas comunes utilizadas por varios programas. Perl llama a estos módulos . Los módulos Perl normalmente se instalan en uno de varios directorios cuyas rutas se colocan en el intérprete de Perl cuando se compila por primera vez ; 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 centrales . Algunos de estos realizan tareas de arranque, como ExtUtils::MakeMaker, [5] que se utiliza para crear Makefiles para construir e instalar otros módulos de extensión; otros, como List::Util, [6] 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 bifurcar y crear módulos competitivos 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 cargada, pero los autores pueden optar por utilizar un sistema de seguimiento de errores diferente, como GitHub . De manera similar, aunque GitHub es un lugar popular para almacenar el código fuente para distribuciones, puede almacenarse en cualquier lugar que prefiera el autor o puede que no sea de acceso público en absoluto. Los mantenedores pueden otorgar permisos a otros para mantener o hacerse cargo de sus módulos, y los administradores pueden otorgar permisos a aquellos que deseen hacerse cargo de módulos abandonados. Las versiones anteriores de las distribuciones actualizadas se conservan en CPAN hasta que quien las carga las elimina, y una red espejo secundaria llamada BackPAN conserva las distribuciones incluso si se eliminan de CPAN. [7] Además, el historial completo de CPAN y todos sus módulos está disponible como proyecto GitPAN, [8] 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 del 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 cargan en Perl Authors Upload Server, o PAUSE (consulte la sección Carga de distribuciones con PAUSE).

En 2003, las distribuciones comenzaron a incluir archivos de metadatos, llamados META. yml , indicando el nombre de la distribución, la versión, las dependencias y otra información útil; sin embargo, no todas las distribuciones contienen metadatos. Cuando los metadatos no están presentes 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 confiable. En 2010, se creó la versión 2 de esta especificación [9] para ser utilizada a través de un nuevo archivo llamado META. json , con el archivo en formato YAML a menudo también incluido para compatibilidad con versiones anteriores .

Con miles de distribuciones, CPAN necesita estar estructurado para que sea útil. Los autores suelen colocar sus módulos en la jerarquía natural de los nombres de los módulos de Perl (como Apache::DBIo Lingua::EN::Inflect) según el propósito o el dominio, aunque esto no se aplica.

Las distribuciones de módulos CPAN generalmente tienen nombres en forma de CGI-Application-3.1 (donde el :: usado en el nombre del módulo se reemplazó con un guión y el número de versión se agregó al nombre), pero esto es solo una convención. ; Muchas distribuciones destacadas rompen la convención, especialmente aquellas que contienen varios módulos. Las restricciones de seguridad impiden que una distribución sea reemplazada 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 consiste en su red mundial de más de 250 mirrors en más de 60 países. [10] Cada espejo completo alberga alrededor de 31 gigabytes de datos. [11]

La mayoría de los espejos se actualizan cada hora, diariamente o cada dos días desde el sitio maestro de CPAN. [12] Algunos sitios son importantes servidores FTP que reflejan muchos otros programas, pero otros son simplemente servidores propiedad de empresas que utilizan mucho Perl. Hay al menos dos espejos en todos los continentes excepto en la Antártida.

Se han escrito varios motores de búsqueda para ayudar a los programadores de Perl a clasificar el CPAN. El search.cpan.org oficial incluye búsqueda textual, un índice navegable de módulos y copias extraídas de todas las distribuciones actualmente en CPAN. El 16 de mayo de 2018, la Fundación Perl anunció que search.cpan.org se cerraría el 29 de junio de 2018 (después de 19 años de funcionamiento), debido a su código base obsoleto y su carga de mantenimiento. Los usuarios serán transferidos y redirigidos a MetaCPAN alternativo de terceros. [13] [14]

Los probadores de CPAN son un grupo de voluntarios que descargarán y probarán las distribuciones a medida que se cargan en CPAN. Esto permite a los autores probar sus módulos en muchas plataformas y entornos a los que de otro modo no tendrían acceso, lo que ayuda a promover la portabilidad, así como un cierto grado de calidad. Los probadores de humo envían informes, que luego se recopilan y utilizan para una variedad de sitios web de presentación, incluido el sitio principal de informes, estadísticas y dependencias.

Los autores pueden cargar nuevas distribuciones al CPAN a través del servidor de carga de autores de Perl (PAUSE). Para ello deberán solicitar una cuenta PAUSE.

Una vez registrados, pueden utilizar una interfaz web en pausa.perl.org o una interfaz FTP para cargar archivos en su directorio y eliminarlos. Los módulos en la carga solo se indexarán como canónicos si el nombre del módulo no se ha utilizado antes (otorgando permiso por orden de llegada al cargador), o si el cargador tiene permiso para ese nombre, y si el módulo es una versión superior a cualquier entrada existente. [15] Esto se puede especificar a través de la interfaz web de PAUSE.

CPAN.pm, CPANPLUS y cpanminus

También hay un módulo central de Perl llamado CPAN; normalmente se diferencia del propio repositorio mediante el uso del nombre CPAN.pm. CPAN.pm es principalmente un shell interactivo que se puede utilizar para buscar, descargar e instalar distribuciones. También se proporciona un shell interactivo llamado cpan en el núcleo de Perl, y es la forma habitual de ejecutar CPAN.pm. Después de un breve proceso de configuración y selección de espejo, utiliza herramientas disponibles en la computadora del usuario para descargar, descomprimir, compilar, probar e instalar módulos automáticamente. También es capaz de actualizarse a sí mismo.

Un esfuerzo por reemplazar CPAN.pm con algo más limpio y moderno dio como resultado el conjunto de módulos CPANPLUS (o CPAN++). CPANPLUS separa el trabajo de back-end de descargar, compilar e instalar módulos del shell interactivo utilizado para emitir comandos. También admite varias funciones avanzadas, como la verificación de firmas criptográficas y la generación de informes de resultados de pruebas. Finalmente, CPANPLUS puede desinstalar una distribución. CPANPLUS se agregó 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 sencilla a estos instaladores de CPAN llamada cpanminus. cpanminus fue diseñado para ocupar un espacio de memoria mucho menor, como suele ser necesario en entornos de memoria limitada, y para poder usarse como un script independiente, de modo que incluso pueda instalarse solo, requiriendo que solo esté disponible el conjunto esperado de módulos centrales de Perl. También está disponible en CPAN como 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 requisitos previos, lo que resulta útil en proyectos Perl ad-hoc que pueden no estar diseñados para la instalación de 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 cualquier requisito previo, ya sea automáticamente o con la aprobación individual del usuario. Cada uno admite FTP y HTTP y puede funcionar a través de firewalls y servidores proxy.

Influencia

Los programadores experimentados de Perl suelen comentar que la mitad del poder de Perl está en el CPAN. Se la ha llamado la aplicación asesina de Perl . [16] Es más o menos 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 y es moldeado por la cultura de Perl . Su "maestro bibliotecario autoproclamado", Jarkko Hietaniemi, participa a menudo en las bromas del Día de los Inocentes ; el 1 de abril de 2002, el sitio pasó a denominarse temporalmente CJAN , donde la "J" significaba "Java". En 2003, el www.cpan.orgnombre de dominio fue redirigido a Matt's Script Archive , un sitio infame en la comunidad Perl por tener código mal escrito. [17] [18] [19]

Algunas de las distribuciones del CPAN se distribuyen como bromas. La Acme::jerarquía está reservada para módulos de chistes; por ejemplo, Acme::Don'tagrega una don'tfunción que no ejecuta el código que se le proporciona (para complementar el dointegrado, que sí lo hace). Incluso fuera de la Acme::jerarquía, algunos módulos todavía se escriben principalmente para entretener; un ejemplo es Lingua::Romana::Perligata, que puede usarse para escribir programas Perl en un subconjunto del latín.

En 2005, un grupo de desarrolladores de Perl que también estaban interesados ​​en JavaScript se reunieron para crear JSAN, JavaScript Archive Network. JSAN es un puerto casi directo de la infraestructura CPAN para su uso con el lenguaje JavaScript, que durante la mayor parte de su vida útil no tuvo una "comunidad" cohesiva.

En 2008, después de un encuentro casual con el administrador de CPAN, Adam Kennedy, 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. El CCAN es un puerto directo de la arquitectura CPAN para su uso con el lenguaje C.

CRAN, la red integral de archivos de R, es un conjunto de réplicas que albergan las distribuciones, la documentación y las extensiones aportadas del lenguaje de programación R. [20]

Referencias

  1. ^ "Portada de CPAN" . Consultado el 27 de enero de 2016 .
  2. ^ "¿Cómo se obtienen las licencias de Perl y los módulos CPAN?". La mayoría, aunque no todos, los módulos de CPAN tienen la licencia GNU General Public License (GPL) o la licencia Artística...
  3. ^ "La cronología de Perl y su cultura".
  4. ^ "Asimilar 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.
  5. ^ "ExtUtils::MakeMaker - Crear un módulo Makefile - Navegador Perldoc". perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
  6. ^ "List::Util - Una selección de subrutinas de lista de utilidades generales - Navegador Perldoc". perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
  7. ^ "VolverPAN" . Consultado el 20 de diciembre de 2019 .
  8. ^ "¿Qué es Gitpan?". GitHub . 2 de diciembre de 2015 . Consultado el 16 de noviembre de 2016 .
  9. ^ "CPAN::Meta::Historial" . Consultado el 20 de diciembre de 2019 .
  10. ^ "Red espejo CPAN" . Consultado el 16 de noviembre de 2016 .
  11. ^ "Cómo reflejar CPAN". CPAN.org . Consultado el 15 de noviembre de 2016 .
  12. ^ "Estadísticas y estado de CPAN" . Consultado el 9 de mayo de 2010 .
  13. ^ "El fin de una era: decir adiós a search.cpan.org". log.perl.org . Consultado el 22 de mayo de 2018 .
  14. ^ "Decir adiós a search.cpan.org". perl.com . Consultado el 26 de junio de 2018 .
  15. ^ "PAUSAR modelo operativo". GitHub . Consultado el 20 de diciembre de 2019 .
  16. ^ "Re: Aplicaciones asesinas en PERL" . Consultado el 24 de febrero de 2013 .
  17. ^ "Elementos de programación con Perl". 12 de octubre de 2000 . Consultado el 25 de abril de 2013 .
  18. ^ "Explota este formmail.pl para divertirte y, bueno, divertirte". 7 de agosto de 2001 . Consultado el 25 de abril de 2013 .
  19. ^ "¡El archivo de guiones de Matt ataca de nuevo!". 4 de julio de 2001 . Consultado el 25 de abril de 2013 .
  20. ^ "¿Qué es CRAN?" . Consultado el 20 de diciembre de 2019 .

enlaces externos