Ruby Gem package guidelines (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Status de tradução: Esse artigo é uma tradução de Ruby Gem package guidelines. Data da última tradução: 2018-11-01. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.
Diretrizes de pacotes do Arch

32-bitCLRCMakeCrossDKMSEclipseElectronFonteFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustVCSWebWine

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.