CPAN
La Comprehensive Perl Archive Network (CPAN) es un repositorio de más de 250 000 módulos de software y la documentación correspondiente para 39 000 distribuciones, escrita en el lenguaje de programación Perl por más de 12 000 colaboradores.. CPAN puede denotar la red de archivo o el programa Perl que actúa como una interfaz para la red y como un instalador de software automatizado (algo así como un administrador de paquetes). La mayoría del software en CPAN es software gratuito y de código abierto.
Historia
CPAN se concibió en 1993 y está activo en línea desde octubre de 1995. Se basa en el modelo CTAN y comenzó como un lugar para unificar la estructura de archivos Perl dispersos.
Rol
Como muchos lenguajes de programación, Perl tiene mecanismos para usar bibliotecas de código externas, haciendo que un archivo contenga rutinas comunes usadas por varios programas. Perl llama a estos módulos. Los módulos de 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 similares a 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 principales. Algunos de estos realizan tareas de arranque, como ExtUtils::MakeMaker, que se utiliza para crear Makefiles para construir e instalar otros módulos de extensión; otros, como List::Util, 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. Del mismo modo, aunque GitHub es una ubicación popular para almacenar el código fuente para las distribuciones, puede almacenarse en cualquier lugar que prefiera el autor o puede no ser 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 para aquellos que deseen hacerse cargo de los módulos abandonados. Las versiones anteriores de las distribuciones actualizadas se retienen en CPAN hasta que el cargador las elimine, y una red espejo secundaria llamada BackPAN retiene las distribuciones incluso si se eliminan de CPAN. Además, el historial completo de CPAN y todos sus módulos está disponible como proyecto GitPAN, 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 a menudo contienen scripts de instalación (generalmente llamados Makefile.PL o Build.PL) y scripts de prueba que se pueden ejecutar para verificar que el contenido de la distribución funcione correctamente. Las nuevas distribuciones se cargan en el servidor de carga de autores de Perl, o se PAUSAN (consulte la sección Cargar distribuciones con PAUSA).
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 los metadatos no están presentes en una distribución, el software de PAUSE intentará analizar el código en 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 para usarse 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 debe estructurarse para ser útil. Los autores a menudo colocan sus módulos en la jerarquía natural de los nombres de los módulos de Perl (como Apache::DBI
o Lingua::EN::Inflect
) según el propósito o el dominio, aunque esto no se aplica.
Las distribuciones de módulos CPAN suelen tener nombres en forma de 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 agregado al nombre), pero esto es solo una convención; muchas distribuciones destacadas rompen la convención, especialmente aquellas que contienen múltiples 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 espejos en más de 60 países. Cada espejo completo alberga alrededor de 31 gigabytes de datos.
La mayoría de los espejos se actualizan cada hora, cada día o cada dos días desde el sitio principal de CPAN. Algunos sitios son servidores FTP importantes que reflejan muchos otros programas, pero otros son simplemente servidores propiedad de empresas que usan mucho Perl. Hay al menos dos espejos en cada continente excepto en la Antártida.
Se han creado 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 base de código obsoleta y su carga de mantenimiento. Los usuarios serán transferidos y redirigidos al MetaCPAN alternativo de terceros.
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 otro modo no tendrían acceso, lo que ayuda a promover la portabilidad, así como un 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 (PAUSA). Para hacerlo, deben solicitar una cuenta de PAUSA.
Una vez registrados, pueden utilizar una interfaz web en pause.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 primero en llegar al cargador), o si el cargador tiene permiso para ese nombre, y si el El módulo es una versión superior a cualquier entrada existente. 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; por lo general se diferencia del propio repositorio mediante el uso del nombre CPAN.pm. CPAN.pm es principalmente un shell interactivo que se puede usar para buscar, descargar e instalar distribuciones. Un shell interactivo llamado cpan también se proporciona 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 una selección de espejo, utiliza las herramientas disponibles en la computadora del usuario para descargar, desempaquetar, compilar, probar e instalar automáticamente los módulos. 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 es compatible con varias funciones avanzadas, como la verificación de firmas criptográficas y el informe 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 eficiente a estos instaladores de CPAN llamada cpanminus. cpanminus fue diseñado para tener una huella de memoria mucho más pequeña, como se requiere a menudo 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 Perl principales. También está disponible en CPAN como el módulo App::cpanminus, que instala el script cpanm. No mantiene ni se basa en una configuración persistente, sino que se configura solo mediante el entorno y las opciones de la línea de comandos. cpanminus no tiene un componente de shell interactivo. Reconoce el formato de archivo cpan para especificar requisitos previos, ú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 comprobar las dependencias de una distribución e instalar de forma recursiva cualquier requisito previo, ya sea de forma automática o con la aprobación individual del usuario. Cada uno admite FTP y HTTP y puede funcionar a través de firewalls y proxies.
Influencia
Los programadores experimentados de Perl a menudo comentan que la mitad del poder de Perl está en el CPAN. Se le ha llamado la aplicación asesina de Perl. Es más o menos equivalente a Composer para PHP; el repositorio PyPI (Python Package Index) para Python; RubyGems para Rubí; CRAN por R; npm para Node.js; LuaRocks para Lua; Maven para Java; y Hackage para Haskell. El uso de CPAN de espacios de nombres arbitrados, un régimen de prueba 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 "autoproclamado maestro bibliotecario", Jarkko Hietaniemi, a menudo participa en el April Fools' chistes de día; el 1 de abril de 2002, el sitio recibió temporalmente el nombre de CJAN, donde el "J" significaba "Java". En 2003, el nombre de dominio www.cpan.org
fue redirigido a Matt's Script Archive, un sitio infame en la comunidad de Perl por tener un código mal escrito.
Algunas de las distribuciones en CPAN se distribuyen como bromas. La jerarquía Acme::
está reservada para módulos de broma; por ejemplo, Acme::Don't
agrega una función don't
que no ejecuta el código que se le ha dado (para complementar el < code>do integrado, que lo hace). Incluso fuera de la jerarquía de Acme::
, algunos módulos todavía se escriben en gran medida 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 que también tenían interés en JavaScript se unieron para crear JSAN, la red de archivo de JavaScript. El JSAN es un puerto casi directo de la infraestructura CPAN para usar con el lenguaje JavaScript, que durante la mayor parte de su vida útil no tuvo una 'comunidad' cohesiva.
En 2008, después de una reunión 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 usar 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.
Contenido relacionado
OS-9
Red de trabajo personal
Psión (empresa)