「Ruby Gem パッケージガイドライン」の版間の差分
(ページの作成:「Category:パッケージ開発 en:Ruby Gem package guidelines it:Ruby Gem Package Guidelines {{Package Guidelines}} Ruby で書かれたソフトウェ...」) |
(同期) |
||
9行目: | 9行目: | ||
ライブラリの場合、{{Ic|ruby-$gemname}} を使って下さい。アプリケーションの場合、プログラムの名前を使って下さい。どちらの場合でも名前は小文字である必要があります。 |
ライブラリの場合、{{Ic|ruby-$gemname}} を使って下さい。アプリケーションの場合、プログラムの名前を使って下さい。どちらの場合でも名前は小文字である必要があります。 |
||
− | たとえ {{Ic|$gemname}} に {{Ic|ruby}} が含まれている場合でも {{Ic|ruby-}} を最初に付けるようにしてください。後で gem の名前が短くなったときに困らないようにするためです。また、ツールによって簡単に名前を解析できるようにするためでもあります (PKGBUILD ジェネレータやバージョン・依存関係チェッカーなど)。 |
+ | たとえ {{Ic|$gemname}} に {{Ic|ruby}} が含まれている場合でも {{Ic|ruby-}} を最初に付けるようにしてください。後で gem の名前が短くなったときに困らないようにするためです。また、ツールによって簡単に名前を解析できるようにするためでもあります (PKGBUILD ジェネレータやバージョン・依存関係チェッカーなど)。 |
====バージョン付きパッケージ==== |
====バージョン付きパッケージ==== |
||
19行目: | 19行目: | ||
== サンプル == |
== サンプル == |
||
− | {{AUR|ruby- |
+ | {{AUR|ruby-json_pure}} や {{Pkg|ruby-hpricot}} などを見てください。 |
== ノート == |
== ノート == |
||
Add {{Ic|--verbose}} to '''gem''' arguments to receive additional information in case of troubles. |
Add {{Ic|--verbose}} to '''gem''' arguments to receive additional information in case of troubles. |
||
− | {{Note| |
+ | {{Note|最新版の Ruby では '''gem''' の {{ic|--no-user-install}} 引数の使用が必須になっています (詳しくは {{Bug|28681}} を参照)。}} |
+ | |||
+ | === Quarry === |
||
+ | |||
+ | 手動で gemfile を管理するかわりに、ビルド済みの Arch バイナリパッケージの非公式リポジトリである quarry を使うことができます。詳しくは [[Quarry]] を参照。 |
||
== 配慮事項 == |
== 配慮事項 == |
||
30行目: | 34行目: | ||
たまにパッケージのビルド時に {{Ic|WARNING: Package contains reference to $pkgdir}} という警告が表示されることがあります。パッケージ化したファイルの中にパッケージをビルドしたディレクトリの絶対パスが含まれています。問題のファイルを探すために {{ic|cd pkg && grep -R "$(pwd)" .}} を実行してください。ほとんどの場合、{{Ic|.../ext/Makefile}} 内にハードコードされたパスが原因です。 |
たまにパッケージのビルド時に {{Ic|WARNING: Package contains reference to $pkgdir}} という警告が表示されることがあります。パッケージ化したファイルの中にパッケージをビルドしたディレクトリの絶対パスが含まれています。問題のファイルを探すために {{ic|cd pkg && grep -R "$(pwd)" .}} を実行してください。ほとんどの場合、{{Ic|.../ext/Makefile}} 内にハードコードされたパスが原因です。 |
||
{{note|folder {{ic|ext}} contains native extension code usually written in C. During the package installation rubygems generates a Makefile using {{ic|mkmf}} library. Then {{Ic|make}} is called, it compiles a shared library and copies one to {{ic|lib}} gem directory.}} |
{{note|folder {{ic|ext}} contains native extension code usually written in C. During the package installation rubygems generates a Makefile using {{ic|mkmf}} library. Then {{Ic|make}} is called, it compiles a shared library and copies one to {{ic|lib}} gem directory.}} |
||
− | + | {{ic|gem install}} が完了したら {{Ic|Makefile}} は不要です。{{ic|package()}} 関数に {{ic|rm -rf "$pkgdir/$_gemdir/gems/$_gemname-$pkgver/ext"}} を追加することで {{Ic|ext}} のファイルを完全に削除できます。 |
|
− | |||
− | == サンプル PKGBUILD == |
||
− | サンプル PKGBUILD は {{Pkg|abs}} パッケージの {{Ic|/usr/share/pacman/PKGBUILD-rubygem.proto}} にあります。 |
||
== 自動化 == |
== 自動化 == |
||
+ | {{AUR|pacgem}} ツールを使うことで gem のインストールは完全に自動化できます。一時的な PKGBUILD が作成され、[[makepkg]] と [[namcap]] が実行されます。作成されたパッケージは [[pacman]] でインストールされます。 |
||
− | The gem installation can be automated completely with the tool {{AUR|pacgem}} which creates a temporary PKGBUILD, calls [[makepkg]] and [[namcap]]. The resulting package is then installed with {{Ic|sudo pacman}}. |
||
+ | Ruby gem の PKGBUILD を自動的に作成するツールとして {{AUR|gem2arch}} も存在します。生成後は PKGBUILD を手動で確認してください。 |
||
− | There is also {{AUR|gem2arch}} tools which aid in automating the process of creating a ruby gem PKGBUILD. Make sure to manually check the PKGBUILD after generation. |
2017年3月14日 (火) 23:59時点における版
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
Ruby で書かれたソフトウェアの PKGBUILD の書き方。
目次
パッケージの命名規則
ライブラリの場合、ruby-$gemname
を使って下さい。アプリケーションの場合、プログラムの名前を使って下さい。どちらの場合でも名前は小文字である必要があります。
たとえ $gemname
に ruby
が含まれている場合でも ruby-
を最初に付けるようにしてください。後で gem の名前が短くなったときに困らないようにするためです。また、ツールによって簡単に名前を解析できるようにするためでもあります (PKGBUILD ジェネレータやバージョン・依存関係チェッカーなど)。
バージョン付きパッケージ
If you need to add a versioned package then use ruby-$gemname-$version
, e.g. ruby-builder-3.2.1
. So rubygem dependency builder=3.2.1
will turn into ruby-builder-3.2.1
Arch package.
In case if you need to resolve "approximately greater" dependency ~>
then package should use version without the last part, e.g. rubygem dependency builder~>3.2.1
will turn into ruby-builder-3.2
. An exception for this rule is when "approximately greater" dependency matches the latest version of the gem - in this case avoid introducing a new versioned package and use just ruby-$gemname
instead (the HEAD version).
Another problem with versioned packages is that it can conflict with other versions, e.g. because the packages install the same files in /usr/bin
. One solution for this problem is that versioned packages should not install such files - only HEAD version package can do this.
サンプル
ruby-json_pureAUR や ruby-hpricot などを見てください。
ノート
Add --verbose
to gem arguments to receive additional information in case of troubles.
Quarry
手動で gemfile を管理するかわりに、ビルド済みの Arch バイナリパッケージの非公式リポジトリである quarry を使うことができます。詳しくは Quarry を参照。
配慮事項
Package contains reference to $pkgdir
たまにパッケージのビルド時に WARNING: Package contains reference to $pkgdir
という警告が表示されることがあります。パッケージ化したファイルの中にパッケージをビルドしたディレクトリの絶対パスが含まれています。問題のファイルを探すために cd pkg && grep -R "$(pwd)" .
を実行してください。ほとんどの場合、.../ext/Makefile
内にハードコードされたパスが原因です。
gem install
が完了したら Makefile
は不要です。package()
関数に rm -rf "$pkgdir/$_gemdir/gems/$_gemname-$pkgver/ext"
を追加することで ext
のファイルを完全に削除できます。
自動化
pacgemAUR ツールを使うことで gem のインストールは完全に自動化できます。一時的な PKGBUILD が作成され、makepkg と namcap が実行されます。作成されたパッケージは pacman でインストールされます。
Ruby gem の PKGBUILD を自動的に作成するツールとして gem2archAUR も存在します。生成後は PKGBUILD を手動で確認してください。