NixOSのRuby - 基本拡張をビルドすると、FFI Gemのインストールが失敗します。

NixOSのRuby - 基本拡張をビルドすると、FFI Gemのインストールが失敗します。

私は長い間Rubyマニアでした。 FFIのインストールを防ぐために何が欠けているのかわかりません。

以下はファイルのエラーですmake.out(名前が好きです):

make[3]: *** [Makefile:1048: libffi_convenience.la] Error 1
make[3]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make[2]: *** [Makefile:1309: all-recursive] Error 1
make[2]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make[1]: *** [Makefile:617: all] Error 2
make[1]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make: *** [libffi.mk:9: "/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux"/.libs/libffi_convenience.a] Error 2

make failed, exit code 2

nixpkgsを確認して動作することを確認libffi-3.2.1しましたpure-ffi-0.14。どちらもインストールしました。それでもエラーが発生します。

答え1

最初のオプションは、次を使用することです。ブンディックス。グローバルオーバーライドファイルを使用してシステムの依存関係を注入します。https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/ruby-modules/gem-config/default.nix

以下を含む最も重要な宝石がそこにあります。フェイペイインストールしたいgemです。

bundixが望ましくないか使用できない場合、代替は正しいビルド環境を提供するnix-shellです。

ffi gem の場合、 nixpkgs の gem-config からコードを借りることもできます。

with import <nixpkgs> {};
stdenv.mkDerivation {
  name = "env";
  buildInputs = [
    ffi pkgconfig
  ];
}

nix-shellその後、プロジェクトで実行します。この手順はdirenvのnixサポートを使用して自動化することもできます。コンパイル中に正しいヘッダー/ライブラリを見つけるために必要なffi gemと変数を設定しなかったため、ffiviaインストールは機能しません。nix-envNIX_CFLAGS_COMPILENIX_LDFLAGS

関連情報