Ruby Gem package guidelines (Português)
32-bit – CLR – Cross – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – Kernel – Lisp – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – Web – Wine
Escrever PKGBUILDs para softwares escritos no Ruby.
Contents
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.
--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.
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.