Ruby Gem package guidelines (Italiano)

From ArchWiki
Jump to navigation Jump to search

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: traduzione è obsoleta (Discuss in Talk:Ruby Gem package guidelines (Italiano)#)

Nomenclatura del pacchetto

Per le librerie, utilizzare ruby-$gemname. Per le applicazioni, utilizzare il nome del programma. In entrambi i casi il nome dovrebbe essere tutto in minuscolo. Usare sempre il prefisso ruby- anche se $gemname inizia già con ruby. È necessario per evitare ambiguità sui nomi nel caso ci sia un gem con un nome più corto. Rende anche i nomi più facilmente analizzabili dai tool.

Versionamento dei pacchetti

Se si vuole aggiungere un pacchetto con versionamento va usato ruby-$gemname-$version, ad esempio ruby-builder-3.2.1. Così la dipendenza rubygem builder=3.2.1 diventerà ruby-builder-3.2.1 che è un pacchetto Arch.

Se va risolta una dipendenza "approssimativamente più grande" ~> allora il pacchetto deve usare la versione senza l'ultima parte, ad esempio la dipendenza rubygem builder~>3.2.1 diventerà ruby-builder-3.2. Un'eccezione a questa regola va applicata quando la dipendenza "approssimativamente più grande" è uguale all'ultima versione del gem - in questo caso evitare di introdurre un nuovo pacchetto versionato e usare solo ruby-$gemname .

Un altro problema con il versionamento dei pacchetti si ha quando ci sono conflitti con altre versioni, ad esempio perché i pacchetti installano gli stessi file in /usr/bin. Una soluzione per questo problema è quella di non fare installare questi file dai pacchetti versionati - solo la versione HEAD dei pacchetti può fare questo.

Esempi

Ad esempio, si vedano github-gem ruby-json_pureAUR ruby-hpricot

Esempio PKGBUILD

 # Contributor: YourName <YourEmail AT example DOT com>
 pkgname=ruby-GEMNAME # All lowercase
 pkgver=GEMVERSION
 pkgrel=1
 pkgdesc="Ruby gem FooBar which implements BazQuux"
 arch=(any)
 url=""
 license=()
 depends=(ruby) # Gem may depend on other gems as well (you can get dependency information from the yaml specification)
 makedepends=(rubygems)
 source=(http://rubygems.org/downloads/GEMNAME-$pkgver.gem)
 noextract=(GEMNAME-$pkgver.gem)
 md5sums=()
 
 build() {
   cd $srcdir
   # _gemdir is defined inside build() because if ruby[gems] is not installed on the system
   #  makepkg will barf when sourcing the PKGBUILD
   local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
 
   gem install --ignore-dependencies -i "$pkgdir$_gemdir" GEMNAME-$pkgver.gem
 }
 
 # vim:set ts=2 sw=2 et:

Note

Aggiungi --verbose agli argomenti di gem per ricevere informazioni addizionali in caso di errori.

Nota: L'uso dell'argomento --no-user-install per gem è obbligatorio per le ultime versioni di Ruby (VediFS#28681 per i dettagli).

Quarry

Un'alternativa per gestire manualmente i gemfiles è considerare quarry, un repository non ufficiale di pacchetti arch pre-compilati. Vedi Quarry per i dettagli.

Automazione

Abhishek Dasgupta ha scritto gem2arch per aiutare ad automatizzare il processo di creazione di un PKGBUILD di un pacchetto gem ruby. Assicurarsi di controllare manualmente il PKGBUILD dopo la relativa creazione.