Ruby Gem package guidelines (Português)

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-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
–
Shell
–
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_pure
ou
ruby-hpricot
AUR
.
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.