Nix 패키지 관리자를 사용하여 64비트 시스템에서 32비트 애플리케이션을 구축하는 방법은 무엇입니까?

Nix 패키지 관리자를 사용하여 64비트 시스템에서 32비트 애플리케이션을 구축하는 방법은 무엇입니까?

Nix는 64비트 시스템에 32비트 패키지를 설치하고 빌드할 수 있어야 하는 것 같습니다. 해당 캐시에는 이미 i686 아키텍처용으로 구축된 전체 nixpkgs 트리가 저장되어 있으므로 다운로드하고 설치하는 데 문제가 없어야 하지만 이를 수행할 방법이 없습니다.

답변1

아직 nix를 사용하여 개별 패키지를 빌드하는 방법을 모른다면,이것은 설명입니다.

닉스 포장특수 변수 정의pkgsi686리눅스i686 패키지 트리의 경우package_i686 호출임의의 nix 표현식을 호출하고 이를 재정의하는 데 사용됩니다 system="i686-linux". 사용법은 매우 간단합니다.

방법 1:

jsoncpp06_32 = nixpkgs.callPackage_i686 ./jsoncpp06.nix { };

방법 2:

myPackage32 = pkgs.pkgsi686Linux.stdenv.mkDerivation {
    name = "myPackage-i686-0.0.1";

    boost155 = nixpkgs.pkgsi686Linux.boost155;
    buildInputs = [
        pkgs.gcc_multi
        pkgs.python2
        pkgs.pkgconfig

        pkgs.pkgsi686Linux.ffmpeg_2_2
        pkgs.pkgsi686Linux.boost155
        pkgs.pkgsi686Linux.openssl
        pkgs.pkgsi686Linux.curl
        pkgs.pkgsi686Linux.opencv

        jsoncpp06_32
    ];

};

답변2

어쩌면 이것도 실행 가능한 솔루션일 수도 있습니다.

default.nix

{ system ? builtins.currentSystem }:
let pkgs = import <nixpkgs> { inherit system; }
in pkgs.stdout.mkDerivation {
   # ... as usual
}

그럼 넌 달려가

% nix-build default.nix --argstr "x86_64-linux"

그리고

% nix-build default.nix --argstr "i686-linux"

관련 정보