Saya menggunakan Nix untuk menginstal paket di bawah rumah saya (jadi tidak ada paket biner) pada host bersama dengan sumber daya terbatas. Saya mencoba menginstal git-annex. Ketika membangun salah satu dependensinya, lensa haskell, unit test mengkonsumsi begitu banyak memori sehingga terbunuh dan instalasi gagal.
Apakah ada cara untuk melewatkan tes unit untuk mendapatkan paket diinstal? Saya melihat pembuat Cabal dan haskell-packages.nix
dan menurut saya Anda bisa menonaktifkan tes dengan menetapkan enableCheckPhase
false. Saya mencoba yang berikut ~/.nixpkgs/config.nix
, tetapi tes masih berjalan:
{
packageOverrides = pkgs: with pkgs; {
# ...other customizations...
haskellPackages = haskellPackages.override {
extension = self : super : {
self.lens = self.disableTest self.lens;
};
};
};
}
sumber
nix-build --disable-check-phase
) tanpa mengubah hash derivasi / keluaran?Jawaban alternatif, mengatasi masalah Anda dari sudut yang berbeda, adalah membuat paket Anda dengan pengujian pada mesin yang lebih kuat. Kemudian ketika perlu menyalin penutupan ke host jarak jauh.
Ini bekerja dengan baik jika Anda berada pada arsitektur yang sama dan perangkat lunak yang dimaksud tidak digabungkan dengan perangkat keras yang berbeda pada kedua mesin.
Baca tentang cara berbagi paket antar mesin dalam manual nix.
Ini adalah fitur yang bagus yang memungkinkan pendekatan nix untuk manajemen paket. Saya sering menggunakan fitur ini secara terbalik, menggunakan mesin jarak jauh yang lebih kuat untuk membangun sejumlah besar perangkat lunak untuk mesin lokal saya.
sumber