stringtranslate.com

CPAN

Logotipo de CPAN

La Red Integral de Archivos Perl ( CPAN ) es un repositorio de más de 250.000 módulos de software y la documentación correspondiente para 39.000 distribuciones, escritos en el lenguaje de programación Perl por más de 12.000 colaboradores. [1] CPAN puede denotar tanto la red de archivos como el programa Perl que actúa como interfaz con la red y como un instalador de software automatizado (algo así como un administrador de paquetes ). La mayor parte del software en CPAN es software libre 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

Al igual que muchos lenguajes de programación , Perl tiene mecanismos para utilizar bibliotecas externas de código, lo que hace que un archivo contenga rutinas comunes utilizadas por varios programas. Perl llama a estos módulos . Los módulos de Perl se instalan normalmente 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 básicos . Algunos de ellos realizan tareas de arranque, como ExtUtils::MakeMaker, [5] que se utiliza para crear Makefiles para compilar 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 está descentralizada. Los autores mantienen y mejoran sus propios módulos. La bifurcación y la creación de módulos que compiten para la misma tarea o propósito es común. 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 una ubicación popular para almacenar el código fuente de las distribuciones, puede almacenarse en cualquier lugar que prefiera el autor o puede no ser accesible al 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 para aquellos que deseen hacerse cargo de módulos abandonados. Las versiones anteriores de las distribuciones actualizadas se conservan en CPAN hasta que las elimine el cargador, y una red de 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 de 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 el servidor de carga de autores de Perl o PAUSE (consulte la sección Carga de distribuciones con PAUSE).

En 2003, las distribuciones comenzaron a incluir archivos de metadatos, llamados META. yml , que indicaban 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 de formato YAML a menudo también incluido para compatibilidad con versiones anteriores .

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

Las distribuciones de módulos CPAN suelen tener nombres en el formato CGI-Application-3.1 (donde el :: utilizado en el nombre del módulo se ha reemplazado por un guión y el número de versión se ha añadido al nombre), pero esto es solo una convención; muchas distribuciones importantes rompen la convención, especialmente aquellas que contienen múltiples módulos. Las restricciones de seguridad impiden que una distribución se reemplace con 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 espejos en más de 60 países. [10] Cada espejo completo aloja alrededor de 36 gigabytes de datos. [11]

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

Se han escrito varios motores de búsqueda para ayudar a los programadores de Perl a buscar en el CPAN. El sitio oficial search.cpan.org incluye búsqueda textual, un índice de módulos navegable y copias extraídas de todas las distribuciones que se encuentran actualmente en el 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 antiguo y a la carga de mantenimiento. Los usuarios serán transferidos y redirigidos a la alternativa de terceros MetaCPAN. [13] [14]

Los evaluadores de CPAN son un grupo de voluntarios que descargan y prueban 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 otra manera no tendrían acceso, lo que ayuda a promover la portabilidad, así como un cierto grado de calidad. Los evaluadores envían informes, que luego se recopilan y se utilizan para una variedad de sitios web de presentación, incluido el sitio principal de informes, estadísticas y dependencias.

Los autores pueden subir nuevas distribuciones al CPAN a través del servidor de subida 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 borrarlos. Los módulos en la carga solo se indexarán como canónicos si el nombre del módulo no se ha usado antes (lo que otorga permiso por orden de llegada al que sube), o si el que sube 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 existe un módulo central de Perl llamado CPAN; normalmente se lo diferencia del propio repositorio mediante el 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 un servidor, utiliza las 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ó de él en la versión 5.20.0.

Se desarrolló una alternativa moderna, más pequeña y ágil a estos instaladores de CPAN, denominada cpanminus. cpanminus se diseñó para ocupar menos espacio en la memoria, como suele ser necesario en entornos con memoria limitada, y para que se pueda usar como un script independiente, de modo que incluso pueda instalarse por sí mismo, requiriendo únicamente que esté disponible el conjunto esperado de módulos básicos de Perl. 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 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 de forma automática o con la aprobación de cada usuario. Todos admiten FTP y HTTP y pueden funcionar a través de firewalls y servidores proxy.

Influencia

Los programadores de Perl experimentados suelen comentar que la mitad del poder de Perl está en CPAN. Se le ha llamado la aplicación asesina de Perl . [16] 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 de espacios de nombres arbitrados, un régimen de pruebas y un estilo de documentación bien definido por parte de CPAN lo hacen único.

Dada su importancia para la comunidad de desarrolladores de Perl, el CPAN da forma a la cultura de Perl y es moldeado por ella. Su "bibliotecario maestro autoproclamado", Jarkko Hietaniemi, a menudo participa en las bromas del Día de los Inocentes ; el 1 de abril de 2002, el sitio fue nombrado temporalmente CJAN , donde la "J" significaba "Java". En 2003, el www.cpan.orgnombre de dominio fue redirigido a Matt's Script Archive , un sitio tristemente célebre en la comunidad Perl por tener código mal escrito. [17] [18] [19]

Algunas de las distribuciones de 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 incorporada, que sí lo hace). Incluso fuera de la Acme::jerarquía, algunos módulos todavía se escriben principalmente para 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 que también estaban interesados ​​en JavaScript se unieron 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 contó con una "comunidad" cohesionada.

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. CCAN es un puerto directo de la arquitectura CPAN para su uso con el lenguaje C.

CRAN, la Red Integral de Archivos R, es un conjunto de espejos que albergan las distribuciones del lenguaje de programación R , la documentación y las extensiones aportadas. [20]

Referencias

  1. ^ "Portada del CPAN" . Consultado el 27 de enero de 2016 .
  2. ^ "¿Cómo se licencian Perl y los módulos CPAN?". La mayoría de los módulos de CPAN, aunque no todos, tienen licencia GNU General Public License (GPL) o Artistic License...
  3. ^ "La línea de tiempo de Perl y su cultura".
  4. ^ "Grokking the CPAN" (PDF) . Propongo que cooperemos para crear una estructura unificada, similar 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 listas de utilidad general - Navegador Perldoc". perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
  7. ^ "BackPAN" . 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::History" . Consultado el 20 de diciembre de 2019 .
  10. ^ "Red espejo de CPAN" . Consultado el 16 de noviembre de 2016 .
  11. ^ "Cómo reflejar CPAN". CPAN.org . Consultado el 22 de agosto de 2024 .
  12. ^ "Estado y estadísticas de CPAN" . Consultado el 9 de mayo de 2010 .
  13. ^ "El fin de una era: Decirle adiós a search.cpan.org". log.perl.org . Consultado el 22 de mayo de 2018 .
  14. ^ "Decirle adiós a search.cpan.org". perl.com . Consultado el 26 de junio de 2018 .
  15. ^ "Modelo operativo PAUSE". 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. ^ "Aproveche este formmail.pl para divertirse y, bueno, divertirse". 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