CPAN
A Comprehensive Perl Archive Network (CPAN) é um repositório de mais de 250.000 módulos de software e documentação de acompanhamento para 39.000 distribuições, escritos na linguagem de programação Perl por mais de 12.000 colaboradores. CPAN pode denotar a rede de arquivamento ou o programa Perl que atua como uma interface para a rede e como um instalador de software automatizado (algo como um gerenciador de pacotes). A maioria dos softwares no CPAN é software livre e de código aberto.
História
O CPAN foi concebido em 1993 e está ativo online desde outubro de 1995. Ele é baseado no modelo CTAN e começou como um local para unificar a estrutura de arquivos Perl dispersos.
Função
Como muitas linguagens de programação, o Perl possui mecanismos para utilizar bibliotecas externas de código, fazendo com que um arquivo contenha rotinas comuns utilizadas por vários programas. Perl chama esses módulos. Os módulos Perl são normalmente instalados em um dos vários diretórios cujos caminhos são colocados no interpretador Perl quando ele é compilado pela primeira vez; em sistemas operacionais do tipo Unix, os caminhos comuns incluem /usr/lib/perl5, /usr/local/lib/perl5 e vários de seus subdiretórios.
Perl vem com um pequeno conjunto de módulos centrais. Alguns deles executam tarefas de inicialização, como ExtUtils::MakeMaker, que é usado para criar Makefiles para construir e instalar outros módulos de extensão; outros, como List::Util, são apenas comumente usados.
O objetivo principal do CPAN é ajudar os programadores a localizar módulos e programas não incluídos na distribuição padrão do Perl. Sua estrutura é descentralizada. Os autores mantêm e melhoram seus próprios módulos. Bifurcar e criar módulos concorrentes para a mesma tarefa ou propósito é comum. Existe um sistema de rastreamento de bugs de terceiros que é configurado automaticamente para qualquer distribuição carregada, mas os autores podem optar por usar um sistema de rastreamento de bugs diferente, como o GitHub. Da mesma forma, embora o GitHub seja um local popular para armazenar o código-fonte para distribuições, ele pode ser armazenado em qualquer lugar que o autor prefira ou pode não estar acessível ao público. Os mantenedores podem conceder permissões a outros para manter ou assumir seus módulos, e as permissões podem ser concedidas por administradores para aqueles que desejam assumir os módulos abandonados. Versões anteriores de distribuições atualizadas são retidas no CPAN até serem excluídas pelo uploader, e uma rede espelhada secundária chamada BackPAN retém as distribuições mesmo que sejam excluídas do CPAN. Além disso, o histórico completo do CPAN e de todos os seus módulos está disponível como projeto GitPAN, permitindo visualizar facilmente o histórico completo de todos os módulos e facilitar a manutenção dos forks. O CPAN também é usado para distribuir novas versões do Perl, bem como projetos relacionados, como Parrot e Raku.
Estrutura
Os arquivos no CPAN são referidos como distribuições. Uma distribuição pode consistir em um ou mais módulos, arquivos de documentação ou programas compactados em um formato de arquivamento comum, como um arquivo tar gzipado ou um arquivo ZIP. As distribuições geralmente contêm scripts de instalação (geralmente chamados de Makefile.PL ou Build.PL) e scripts de teste que podem ser executados para verificar se o conteúdo da distribuição está funcionando corretamente. Novas distribuições são carregadas no Perl Authors Upload Server, ou PAUSE (consulte a seção Fazendo upload de distribuições com PAUSE).
Em 2003, as distribuições começaram a incluir arquivos de metadados, chamados META.yml, indicando o nome da distribuição, versão, dependências e outras informações úteis; no entanto, nem todas as distribuições contêm metadados. Quando os metadados não estão presentes em uma distribuição, o software do PAUSE tentará analisar o código na distribuição para procurar a mesma informação; isso não é necessariamente muito confiável. Em 2010, a versão 2 desta especificação foi criada para ser usada por meio de um novo arquivo chamado META.json, com o arquivo de formato YAML geralmente também incluído para compatibilidade com versões anteriores.
Com milhares de distribuições, o CPAN precisa ser estruturado para ser útil. Os autores geralmente colocam seus módulos na hierarquia natural dos nomes dos módulos Perl (como Apache::DBI
ou Lingua::EN::Inflect
) de acordo com o propósito ou domínio, embora isso não é aplicado.
As distribuições do módulo CPAN geralmente têm nomes na forma de CGI-Application-3.1 (onde o :: usado no nome do módulo foi substituído por um traço e o número da versão foi anexado ao nome), mas isso é apenas uma convenção; muitas distribuições proeminentes quebram a convenção, especialmente aquelas que contêm vários módulos. As restrições de segurança impedem que uma distribuição seja substituída por um nome de arquivo idêntico, portanto, praticamente todos os nomes de distribuição incluem um número de versão.
Componentes
A infraestrutura de distribuição da CPAN consiste em sua rede mundial de mais de 250 mirrors em mais de 60 países. Cada espelho completo hospeda cerca de 31 gigabytes de dados.
A maioria dos espelhos se atualiza a cada hora, diariamente ou duas vezes a partir do site principal do CPAN. Alguns sites são grandes servidores FTP que espelham muitos outros softwares, mas outros são simplesmente servidores pertencentes a empresas que usam Perl pesadamente. Existem pelo menos dois espelhos em todos os continentes, exceto na Antártida.
Vários mecanismos de busca foram escritos para ajudar os programadores Perl a classificar através do CPAN. O search.cpan.org oficial inclui pesquisa textual, um índice navegável de módulos e cópias extraídas de todas as distribuições atualmente no CPAN. Em 16 de maio de 2018, a Perl Foundation anunciou que search.cpan.org seria encerrado em 29 de junho de 2018 (após 19 anos de operação), devido ao envelhecimento da base de código e carga de manutenção. Os usuários serão transferidos e redirecionados para o MetaCPAN alternativo de terceiros.
CPAN Testers são um grupo de voluntários, que irão baixar e testar as distribuições à medida que são carregadas no CPAN. Isso permite que os autores tenham seus módulos testados em várias plataformas e ambientes aos quais não teriam acesso, ajudando assim a promover a portabilidade, bem como um grau de qualidade. Os testadores de fumaça enviam relatórios, que são agrupados e usados para uma variedade de sites de apresentação, incluindo o site principal de relatórios, estatísticas e dependências.
Os autores podem enviar novas distribuições para o CPAN através do Perl Authors Upload Server (PAUSE). Para isso, devem solicitar uma conta PAUSE.
Depois de registrados, eles podem usar uma interface web em pause.perl.org ou uma interface FTP para enviar arquivos para seu diretório e excluí-los. Os módulos no upload só serão indexados como canônicos se o nome do módulo não tiver sido usado antes (concedendo permissão primeiro a chegar ao uploader) ou se o uploader tiver permissão para esse nome e se o module é uma versão superior a qualquer entrada existente. Isso pode ser especificado por meio da interface da web de PAUSE.
CPAN.pm, CPANPLUS e cpanminus
Também existe um módulo principal do Perl chamado CPAN; geralmente é diferenciado do próprio repositório usando o nome CPAN.pm. CPAN.pm é principalmente um shell interativo que pode ser usado para pesquisar, baixar e instalar distribuições. Um shell interativo chamado cpan também é fornecido no núcleo do Perl e é a maneira usual de executar o CPAN.pm. Após um curto processo de configuração e seleção de espelho, ele usa as ferramentas disponíveis no computador do usuário para baixar, descompactar, compilar, testar e instalar módulos automaticamente. Também é capaz de se atualizar.
Um esforço para substituir o CPAN.pm por algo mais limpo e moderno resultou no conjunto de módulos CPANPLUS (ou CPAN++). O CPANPLUS separa o trabalho de back-end de download, compilação e instalação de módulos do shell interativo usado para emitir comandos. Ele também oferece suporte a vários recursos avançados, como verificação de assinatura criptográfica e relatório de resultados de teste. Finalmente, CPANPLUS pode desinstalar uma distribuição. O CPANPLUS foi adicionado ao núcleo do Perl na versão 5.10.0 e removido dele na versão 5.20.0.
Uma alternativa moderna menor e mais enxuta para esses instaladores CPAN foi desenvolvida chamada cpanminus. O cpanminus foi projetado para ocupar um espaço de memória muito menor, como geralmente é necessário em ambientes de memória limitada, e para ser usado como um script independente, de modo que possa ser instalado sozinho, exigindo apenas a disponibilidade do conjunto esperado de módulos principais do Perl. Também está disponível no CPAN como o módulo App::cpanminus, que instala o script cpanm. Ele não mantém ou depende de uma configuração persistente, mas é configurado apenas pelo ambiente e pelas opções de linha de comando. cpanminus não possui um componente shell interativo. Ele reconhece o formato cpanfile para especificar pré-requisitos, útil em projetos Perl ad-hoc que podem não ser projetados para instalação CPAN. cpanminus também tem a capacidade de desinstalar distribuições.
Cada um desses módulos pode verificar as dependências de uma distribuição e instalar recursivamente quaisquer pré-requisitos, automaticamente ou com aprovação individual do usuário. Cada um oferece suporte a FTP e HTTP e pode funcionar por meio de firewalls e proxies.
Influência
Programadores Perl experientes costumam comentar que metade do poder do Perl está no CPAN. Foi chamado de aplicativo matador de Perl. É aproximadamente equivalente ao Composer para PHP; o repositório PyPI (Python Package Index) para Python; RubyGems para Ruby; CRAN para R; npm para Node.js; LuaRocks para Lua; Maven para Java; e Hackage para Haskell. O uso do CPAN de espaços de nomes arbitrados, um regime de teste e um estilo de documentação bem definido o torna único.
Dada a sua importância para a comunidade de desenvolvedores Perl, o CPAN molda e é moldado pela cultura Perl. Seu "mestre bibliotecário autonomeado", Jarkko Hietaniemi, frequentemente participa do Dia da Mentira' Brincadeiras do dia; em 1º de abril de 2002, o site foi temporariamente nomeado CJAN, onde o "J" significava "Java". Em 2003, o nome de domínio www.cpan.org
foi redirecionado para Matt's Script Archive, um site famoso na comunidade Perl por ter código mal escrito.
Algumas das distribuições no CPAN são distribuídas como piadas. A hierarquia Acme::
é reservada para os módulos joke; por exemplo, Acme::Don't
adiciona uma função don't
que não executa o código fornecido a ela (para complementar o do
embutido, o que faz). Mesmo fora da hierarquia Acme::
, alguns módulos ainda são escritos principalmente para diversão; um exemplo é Lingua::Romana::Perligata
, que pode ser usado para escrever programas Perl em um subconjunto de latim.
Em 2005, um grupo de desenvolvedores Perl que também tinham interesse em JavaScript se uniram para criar JSAN, a JavaScript Archive Network. O JSAN é uma porta quase direta da infraestrutura CPAN para uso com a linguagem JavaScript, que durante a maior parte de sua vida útil não teve uma "comunidade" coesa.
Em 2008, depois de um encontro casual com o administrador do CPAN, Adam Kennedy, na Open Source Developers Conference, o desenvolvedor do kernel Linux Rusty Russell criou o CCAN, o Comprehensive C Archive Network. O CCAN é uma porta direta da arquitetura CPAN para uso com a linguagem C.
CRAN, a Comprehensive R Archive Network, é um conjunto de espelhos que hospedam a(s) distribuição(ões) da linguagem de programação R, documentação e extensões contribuídas.
Contenido relacionado
Carabina
Beechcraft
Kawasaki Ki-56