2015-07-18 11 views
6

yazılıdır:nix-instantiate nedir? Bir mağaza türevi nedir? <a href="http://nixos.org/nix/manual/#sec-nix-instantiate" rel="noreferrer">manual</a> olarak

komut nix örneğini (yüksek seviye) Nix ifadeleri deposu türevlerini oluşturur.

Ancak mağaza türevleri nelerdir? bir yapı eylem

açıklaması:

manuel aşağıdaki yaklaşık store derivations söylüyor. Bir türetmenin sonucu bir mağaza nesnesidir. Türevler tipik olarak türetme ilkelini kullanarak kullanarak Nix ifadelerinde belirtilir. Bunlar

Bu Nix-newbee ve ben için anlamak için biraz zordur (örtük nix env ve nix yapı veya açıkça nix örneğini tarafından tarafından) düşük seviyeli mağaza sözcükler çevrilir Nix-instantiate hakkında daha aydınlatıcı bir şey bulamadı ve türevlerini googling ile sakladı. Ayrıca #nixos'ta da sordum, cevabım yok, henüz.

Birisi basit bir örnek üzerinde bir mağaza türetmesinin ne olduğunu açıklayabilir mi, ne için kullanılıyor?

Neden nix-örnekleme kullanılarak mağaza türevleri üretilir? Bir süper basit, anlaşılması kolay bir örnek verebilir misiniz?

cevap

19

nix-instantiate nedir?

Tek amacı, nix-instantiate tek amacı Nix ifadelerini değerlendirmektir. Nix dillerinin temel amacı türev oluşturmaktır.

Mağaza türevi nedir?

Bir türev (see example), paketleri oluşturmak (gerçekleştirmek) için kullanılan yapı tariflerinin bilgisayar dostu bir temsilidir. Bunlar, genellikle /nix/store numaralı mağaza dizininde listelenen .drv uzantısına sahip dosyalardır.

Bu yapı tarifleri Nix daemon tarafından anlaşılır ve tüm bağımlılıkların önceden oluşturulduğundan ve önceden hesaplanmış yollarda saklandığından emin olmak için kullanılır. Tüm bağımlılıklar başarılı bir şekilde derlendikten sonra, Nix daemon yerine ikame arayabilir veya yöresel olarak türevi gerçekleştirebilir. Tüm detaylı açıklamalar Eelco Dolstra PhD Thesis'da mevcuttur.

Bu dosyalar, nix-instantiate komutunun, --eval komut satırı seçeneği sağlanmadıkça, Nix dilinin derivation işlevini her değerlendirdiğinde oluşturulur.

Neden nix-örnekleme kullanılarak mağaza türevleri üretilir?

Eğer inşa çıktı ilgilenen varsa, eşdeğerdir nix-build, tercih olmalıdır: Eğer yapı sonuçlarında ilgilenmiyor Bazı durumlarda

$ nix-store -r $(nix-instantiate '<nixpkgs>' -A hello)

ama bakarak içinde derleme zamanı bağımlılıkları. Örneğin, merhaba inşa süresi bağımlılıklarını araştırmak isterseniz. Sonra izleyin olarak nix mağaza komutunu kullanarak, oluşturma tarifi tüm bağımlılıklarını isteyebilirsiniz:

$ nix-store --tree -q $(nix-instantiate '<nixpkgs>' -A hello)

+0

çok teşekkür ederiz ayrıntılı cevap NBP için! – jhegedus