返回 登录
0

日渐火热的OS X包管理器Nix

阅读5751

OS X高级用户对HomebrewMacPorts都非常熟悉,通过它们可以轻松地安装和管理软件包。然而,除此之外还有其它选择。最近,Nix的热度逐渐升高,在OS X上的表现尤其抢眼。

使用Nix进行包管理简单直观,完全可以取代Homebrew和MacPorts。可以参照下面的介绍开始上手。首先,安装Nix:

curl https://nixos.org/nix/install | sh

Nix只需要对/nix目录的访问权限,不会影响其它根目录(Nux不会对/usr/usr/local目录造成影响)。因此,删除Nix只会移除/nix目录。

安装成功后,接下来会通过nix-env命令行进行交互。下面是一个安装示例:

$ nix-env -i hello
installing ‘hello-2.10’
these paths will be fetched (0.02 MiB download, 0.07 MiB unpacked):
  /nix/store/b6bxihaz9s5c79dsgbbxvjg8w44a036i-hello-2.10
fetching path ‘/nix/store/b6bxihaz9s5c79dsgbbxvjg8w44a036i-hello-2.10...
$ hello --version
hello (GNU Hello) 2.10

从上面可以看到,软件包的安装位置是/nix/store下的子目录。目录名是加密哈希值,计算哈希的基础包含了构建软件需求的所有内容及依赖项。这种设计提供了很多强大的功能,处理不同版本变得更加容易,支持原子安装(automatic installation)等等。

Nix还为每个用户创建了一个profile文件,在搜索可执行程序时需要用到(在对Nix熟悉程度加深后,Nix profile的重要性会体现得更加明显)。

$ which hello
/Users/ariya/.nix-profile/bin/hello

移除软件与安装一样简单:

$ nix-env -e hello
uninstalling ‘hello-2.10

很多情况下,Nix会以二进制格式安装软件(由基于Hydra的构建工厂完成构建与缓存)。

想知道Nix可以安装哪些软件?恩,Nix提供的软件(在OS X上大概有7000个)没有Homebrew和MacPorts那么丰富。但是,你可以找到许多像Git、Vim(及插件)这样的常用软件。通过命令查看所有可用软件:

$ nix-env -qa

与其它包管理器一样,Nix也提供了好用的升级功能。举例说明,OS X El Capitan默认安装了Git 2.6,但是你可能希望使用最新的Git 2.8。做到这一点并不困难,像下面这样执行:

$ git --version
git version 2.6.4 (Apple Git-63)
$ nix-env -i git
warning: there are multiple derivations named ‘git-2.8.0’; using the first one
installing ‘git-2.8.0’
$ which git
/Users/ariya/.nix-profile/bin/git
$ git --version
git version 2.8.0

过些时候,你突然不喜欢最新版本了,想要切换到之前系统自带的默认版本。回滚操作不会留下任何垃圾文件,能够完全回到安装Git 2.8前的系统状态:

$ nix-env -e git
uninstalling ‘git-2.8.0$ which git
/usr/bin/git
$ git --version
git version 2.6.4 (Apple Git-63)

Nix提供的包管理功能不止于此。接下来的文章中,我们会介绍Nix如何应对多种环境(例如,Python 2.7 vs Python 3.5),敬请期待。

原文:Nix as OS X Package Manager
作者: ariya.ofilabs.com
译者:赖信涛
责编:钱曙光

评论