软件包管理神器—Nix

背景

在Linux环境中我们安装软件,大多数场景会遇到依赖关系不正确导致无法安装;而无(bu)能(gang)为(luan)力(dong)升级某些组件,比如glibc等系统核心组件。
Docker的出现解决了上面尴尬的场景,只要我们将docker安装好,那么软件依赖问题便不是问题啦,找到需要的image即可。
今天介绍的是一个比Docker更加轻量级的,从函数式思维(不可变性)出发解决软件包依赖问题的工具——Nix。

简介

Nix是Linux和其他Unix系统的强大包管理器,使包管理可靠且可重复。 它提供原子升级和回滚,并行安装多个版本的软件包,多用户软件包管理以及轻松设置构建环境。

官网:https://nixos.org/nix/

核心思想

将软件依赖的软件、库等物件打包,一起下载使用。

优点

  • 从操作系统层面切入,解决软件包依赖问题
  • 方便管理,升级、降级、卸载、安装相互不影响
  • 预编译,一处运行,处处运行
  • 可以构建任何语言依赖的环境
  • 多平台支持

缺点

  • 自带依赖库会导致软件包安装需要的空间会增大

安装及使用

官网文档很详细
https://nixos.org/nix/manual/

小技巧

目前(2018.11)国内无镜像站点,所以下载速度很慢,体验极差。
经过一番尝试,对于较多机器的使用者,可以将某一台机器作为代理,来缓存已经下载的包。

方法如下:

  1. 建立代理服务
    1.1 安装nix,方法参考官方文档
    1.2 安装nix-server并启动
nix-env -i nix-server
nix-serve -p 8080
  1. 在其他机器上添加~/.config/nix/nix.conf文件,内容如下
binary-caches = http://10.10.10.10:8080/ https://cache.nixos.org/
require-sigs = false

这里binary-caches是指定cache服务器
require-sigs是关闭签名检验,自建代理设置签名过程较麻烦

  1. 接下来想在每个机器上安装的软件,先在代理服务器上安装下,其他机器走本地网络就很快了。

你可能感兴趣的:(软件包管理神器—Nix)