저는 오랫동안 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 및 변수를 설정하지 않았기 때문에 ffi
via 설치가 작동하지 않습니다.nix-env
NIX_CFLAGS_COMPILE
NIX_LDFLAGS