Nix 包管理器

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

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

Nix

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

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

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

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

NixOS

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.

外部链接

  • 官方网站
  • 零安装和 Nix 这类系统的比较 (页面存档备份,存于互联网档案馆
  • Debian 开发者的批评 (页面存档备份,存于互联网档案馆) (2008)
  • 介绍:Purely Functional Configuration Management with Nix and NixOS (页面存档备份,存于互联网档案馆
 
编译包(二进制
Linux
格式
Dpkg
RPM
tarball
  • slapt-get英语slapt-get
  • slackpkg英语slackpkg
  • netpkg英语netpkg
  • swaret英语swaret
其他
MacOS
Windows
TrueOS
Solaris
  • IPS英语Image Packaging System
  • Pkgutil英语Pkgutil
嵌入式操作系统
行動作業系統
電子遊戲機
跨平台
  • Dpkg
  • IPS英语Image Packaging System
  • OpenPKG英语OpenPKG
  • pkgsrc英语pkgsrc
  • Zero Install英语Zero Install
  • IBM SmartCloud Enterprise英语IBM cloud computing#IBM SmartCloud
  • Nix
  • wpkg英语wpkg
  • Steam
插件
Google Chrome
Firefox
  • 附加组件
Z/OS
  • SMP/E英语SMP/E
 
非编译包(源代码
Linux
MacOS
混合系统
元包管理器英语Meta package managers
Python
  • PyPI
  • pip
  • easyinstall英语Setuptools#EasyInstall
  • PyPM英语Python Package Manager
  • Anaconda
  • Enthought Canopy英语Enthought
  • 列表级条目 列表英语List of software package management systems
  • 分类 分类
  • 共享资源页面 共享资源