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