2015-06-19 48 views
1

他們將它寫入nix文檔中:nix如何知道機器需要什麼樣的二進制文件?

但是,Nix可以自動從源代碼跳過構建,而是使用二進制緩存,即提供預構建二進制文件的Web服務器。例如,當要求從源代碼生成/nix/store/b6gvzjyb2pg0...-firefox-33.1時,Nix將首先檢查文件https://cache.nixos.org/b6gvzjyb2pg0 ... .narinfo是否存在,如果存在,則從那裏獲取預建的二進制文件;否則,它會回落到從源頭上建設。

我不知道nix怎麼知道我的機器需要什麼樣的二進制文件?說如果我用胳膊或英特爾或AMD來運行nix,或者你說出它的名字。這個緩存中的二進制文件如何選擇用於正確的體系結構?

回答

5

nix是一個純粹的功能包管理器。因此,它將包所需的所有內容都作爲函數的輸入,包括所謂的stdEnv,其中包含關於體系結構的信息。

使用這些輸入nix生成一個散列。這是您在包名稱前面看到的內容。

因此,所需的體系結構被編碼在該散列中,這就是爲什麼當從二進制緩存下載時只需要檢查散列。

+0

很酷,感謝您的解釋 – jhegedus

相關問題