Ruby Gem package guidelines (Português)
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 . 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 . 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 ou .
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 . Alguns arquivos empacotados contêm o caminho absoluto do diretório no qual você compilou o pacote. Para encontrar esses arquivos, execute . O mais provável é que o motivo seja o caminho codificado em .
Depois que acabar, o não será mais necessário. Na verdade, nenhum dos arquivos em é necessário e podem ser completamente removidos adicionando ao package()
function.