Nix 包管理器

Nix 是一个操作系统包管理器。同 RPMAPT 和许多其它的软件包管理系统一样,它可以用来控制软件包的安装,或已命名的,带版本号的文件组,例如软件应用及其相关的配置数据等。[2][3][4]

Nix 包管理器
首次发布2003年6月15日2003-06-15
当前版本
  • 2.12.0 (2022年12月6日)[1]
源代码库
编程语言C, C++, Perl
平台Linux, Unix-like
类型软件包管理系统
许可协议LGPL
网站nixos.org/nix

Nix

Nix 包采用一种专门设计的,惰性求值纯函数式语言进行配置;Shell 脚本或其它外部程序(如 Make)可用于从源码构建包。此系统的纯函数式性质能够保证非常精准的依赖跟踪。例如,一个二进制包依赖于对应的源码包、编译器和其它用于构建的包。密码散列函数确定了每个包的精确构建和运行时依赖,而每個源碼或二進位包都以一個這樣的散列值表示。其结果就是,二进制包仓库成为了包管理器基本操作透明性的优化(类似幹于通过密码散列函数来“缓存”)。

依赖问题通过功能上等价于硬链接的一套系统来解决,若软件的某个版本被某个包所依赖,那么仅当没有包依赖于它之前,它都不会被移除。这会导致需要更多的存储空间,但可以保证所有升级的安全性(保证不会破坏现有的应用)和原子性。它也允许任何包的多个版本,包括参数化地包含某一特性的包同时存在而没有冲突。

Nix 在安装包时依赖于自身的目录结构。所有的包均会被安装到 nix 目录的子目录中。在命名文件夹时,一个包的不同版本会根据包的 hash 加以区分。

此外,Nix 可作为现有系统(例如 GNU/Linux 发行版)的包管理器使用。除了严格意义上的软件包外,Nix 也可被用于维护任何类型的文件配置,如服务器的配置等。

NixOS

NixOS[5] 是一个 Linux发行版,它采用 Nix 来管理操作系统中包括 Linux 内核的所有部分。[6]

参见

参考文献

  1. https://github.com/NixOS/nix/releases/tag/2.12.0.
  2. Prins, P., Suresh, J. and Dolstra, E., "Nix fixes dependency hell on all Linux distributions," 页面存档备份,存于 linux.com, December 22, 2008
  3. Dolstra, E., de Jonge, M. and Visser, E. "Nix: A Safe and Policy-Free System for Software Deployment." 页面存档备份,存于 In Damon, L. (Ed.), 18th Large Installation System Administration Conference (LISA '04) 页面存档备份,存于, pages 79–92, Atlanta, Georgia, USA. USENIX, November 2004.
  4. Dolstra, E. The Purely Functional Software Deployment Model. 页面存档备份,存于 PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
  5. . [2018-01-01]. (原始内容存档于2018-01-09).
  6. Dolstra, E. and Löh, A. "NixOS: A Purely Functional Linux Distribution 页面存档备份,存于." In ICFP 2008: 13th ACM SIGPLAN International Conference on Functional Programming 页面存档备份,存于, pages 367–378, Victoria, British Columbia, Canada. September 2008.

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.