Nixは、64ビットシステムに32ビットパッケージをインストールしてビルドできる必要があるようです。そのキャッシュにはすでに i686 アーキテクチャ用に構築された完全な nixpkgs ツリーが格納されているため、ダウンロードしてインストールするのに問題はないはずですが、これを行う方法はありません。
答え1
まだnixを使用して個々のパッケージを構築する方法がわからない場合は、これは説明です。
ニックス包装特殊変数の定義pkgsi686Linuxi686パッケージツリーの場合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"