学习如何使用Nix包管理器时遇到的第一类Nix表达式之一是default.nix
; 上精彩NixOS IRC频道我学到的存在shell.nix
,并release.nix
为好.
我得到的印象是-大概- default.nix
是用来用nix-build
的只是建立包,shell.nix
与用于nix-shell
制造与封装的交互环境和release.nix
使用与nixops
部署包.
由于这可能是不完整和部分不正确的,并且由于这似乎没有明确记录,我想要清楚准确地解释这些"标准文件"; 特别是,对于每种文件类型(以及我缺少的任何其他标准文件),我想知道:
作为一个额外的奖励问题,我想知道在将软件包安装到NixOS模块时应该使用哪些标准文件(如果有的话)?怎么办?
虽然Nix/OS维基和手册提供了很多优秀的信息,但我仍然无法获得架构概述.对问题的数量和存在性表示歉意; 随意回答一个子集:
1.什么构成Nix包?
从我阅读手册的Nix包中可以看到:
一世.一个Nix表达式,用于获取构建所需的源和依赖项.
II.一个builder
脚本.
III.列表上all-packages.nix
.
源和二进制以及生成的派生都放在nix/store
,并且通道自动更新,通过使用共享二进制缓存使它们保持最新.
一个.这是正确和完整的吗?
湾 .nix表达式存储在哪里?
C.nix/store
如果它们具有相同的架构,我可以简单地在不同机器的s 之间复制一个包文件夹吗?
2.什么构成Nix环境?
一个.环境在何处以及如何定义?
湾 用户档案怎么样?
C.nix-shell
命令如何工作?它与nix-env
命令有关吗?
3. NixOS configuration.nix
和Nix环境之间有什么关系?
从手册和wiki我收集NixOS是一个Nix包,并且Nix创建了一个基于的基本系统环境configuration.nix
.
一个.这是真的,如果是什么nixos-rebuild
和nixos-install
除此之外呢?
湾 是否可以反转该过程,即从环境生成简洁的包或配置文件?
C.我不能用Nix做什么,我不能用Nix做什么?
4.使用Nix创建可移植且可重现的环境以与同事共享时的最佳实践是什么?
一个.共享桌面,服务器和开发环境的各种方法有哪些?
湾 这些方法的用例是什么?
C.它们在便携性和可访问性方面的优势和劣势是什么?
5.公开奖金问题:关于Nix/OS架构还有什么重要的注意事项?
我正在编写一些R仿真代码,但想利用Fortran的快速线性代数库替换核心迭代循环。到目前为止,我主要关注的是使用.Fortran调用链接的F95子例程的明显选择。我认为我应该优化内存使用(我要传递非常大的数组)并进行设置,DUP=FALSE
但是随后我阅读了手册中有关此方法及其在R 3.1.0中贬值和在R 3.2.0中禁用的危险。现在,手册建议您切换到.Call
,但是此功能本来就不提供Fortran支持。
我的谷歌搜索产生了一个stackoverflow问题,该问题探讨了一种通过C代码链接Fortran子例程并使用调用它的方法.Call
。在我看来,这可以像咒语或诅咒一样起作用。因此,我的问题是:
.Fortran
和调用Fortran的风险和收益是.Call
什么?.Call
来调用Fortran子例程?我想标题说明了一切:我产生了一对POSIX时间对象Sys.time()
,我希望以一致的方式显示差异。我希望时间范围从毫秒到天不等,但是找不到找到以difftime
格式显示输出的方法DD:HH:MM:SS:mm
。
有什么简洁的R方法可以做到这一点(理想情况下没有包)?