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

관련 정보