Ruby Gem package guidelines (Português)

From ArchWiki
Jump to: navigation, search
Package creation guidelines

CLRCrossEclipseFree PascalGNOMEGoHaskellJavaKDEKernelLispMinGWNode.jsNonfreeOCamlPerlPHPPythonRubyVCSWebWine

Escrever PKGBUILDs para softwares escritos no Ruby.

Nomenclatura de pacote

Para bibliotecas, use ruby-$gemname. Para aplicativos, use o nome do programa. Em ambos casos, o nome deve estar totalmente em letras minúsculas.

Sempre use o prefixo ruby-, mesmo se $gemname já iniciar com a palavra ruby. É necessário evitar futuros confrontos de nomes no caso de aparecer uma gem com nome mais curto. Também torna os nomes mais fáceis de serem interpretados por ferramentas (pense nos geradores/versão ou nos verificadores de dependência do PKGBUILD, etc ...).

Pacotes versionados

Se você precisar adicionar um pacote versionado, então use ruby-$gemname-$versão, p. ex., ruby-builder-3.2.1. Então, a dependência rubygem builder=3.2.1 se tornará o pacote Arch ruby-builder-3.2.1.

No caso, se você precisar resolver uma dependência "aproximadamente maior" ~>, o pacote deverá usar a versão sem a última parte, por exemplo, dependência rubygem builder ~> 3.2.1 se transformará em ruby-builder-3.2. Uma exceção para esta regra é quando a dependência "aproximadamente maior" corresponde à versão mais recente da gem - neste caso, evite introduzir um novo pacote versionado e use apenas ruby-$gemname (a versão HEAD).

Outro problema com pacotes com versão é que pode entrar em conflito com outras versões, p. ex. porque os pacotes instalam os mesmos arquivos em /usr/bin. Uma solução para este problema é que pacotes com versões não devem instalar tais arquivos - somente o pacote de versão HEAD pode fazer isso.

Exemplos

Por exemplos, por favor, veja ruby-json_pureAUR ou ruby-hpricot.

Notas

Adicione --verbose aos argumentos do gem para receber informações adicionais no caso de haver problemas.

Nota: O uso do argumento --no-user-install do gem é obrigatório já que as versões mais recentes do Ruby (Veja FS#28681 para detalhes).

Quarry

Como uma alternativa ao gerenciamento manual de gemfiles, você também pode querer considerar quarry, um repositório não oficial de pacotes de pacotes binários pré-compilados. Veja Quarry para detalhes.

Pegadinhas

Pacote contém referência a $pkgdir

Às vezes, quando você compila o pacote, você pode ver o seguinte aviso AVISO: O pacote contém referência para $pkgdir. Alguns arquivos empacotados contêm o caminho absoluto do diretório no qual você compilou o pacote. Para encontrar esses arquivos, execute cd pkg && grep -R "$(pwd)". O mais provável é que o motivo seja o caminho codificado em .../ext/Makefile.

Nota: A pasta ext contém código de extensão nativo geralmente escrito em C. Durante a instalação do pacote, rubygems gera um Makefile usando a biblioteca mkmf. Então, make é chamado, ele compila uma biblioteca compartilhada e copia uma para o diretório gem lib.

Depois que gem install acabar, o Makefile não será mais necessário. Na verdade, nenhum dos arquivos em ext é necessário e podem ser completamente removidos adicionando rm -rf "$pkgdir/$_gemdir/gems/$_gemname-$pkgver/ext" ao package() function.