背景
在Linux环境中我们安装软件,大多数场景会遇到依赖关系不正确导致无法安装;而无(bu)能(gang)为(luan)力(dong)升级某些组件,比如glibc等系统核心组件。
Docker的出现解决了上面尴尬的场景,只要我们将docker安装好,那么软件依赖问题便不是问题啦,找到需要的image即可。
今天介绍的是一个比Docker更加轻量级的,从函数式思维(不可变性)出发解决软件包依赖问题的工具——Nix。
简介
Nix是Linux和其他Unix系统的强大包管理器,使包管理可靠且可重复。 它提供原子升级和回滚,并行安装多个版本的软件包,多用户软件包管理以及轻松设置构建环境。
核心思想
将软件依赖的软件、库等物件打包,一起下载使用。
优点
- 从操作系统层面切入,解决软件包依赖问题
- 方便管理,升级、降级、卸载、安装相互不影响
- 预编译,一处运行,处处运行
- 可以构建任何语言依赖的环境
- 多平台支持
缺点
- 自带依赖库会导致软件包安装需要的空间会增大
安装及使用
官网文档很详细
https://nixos.org/nix/manual/
小技巧
目前(2018.11)国内无镜像站点,所以下载速度很慢,体验极差。
经过一番尝试,对于较多机器的使用者,可以将某一台机器作为代理,来缓存已经下载的包。
方法如下:
- 建立代理服务
1.1 安装nix,方法参考官方文档
1.2 安装nix-server并启动
nix-env -i nix-server
nix-serve -p 8080
- 在其他机器上添加
~/.config/nix/nix.conf
文件,内容如下
binary-caches = http://10.10.10.10:8080/ https://cache.nixos.org/
require-sigs = false
这里binary-caches是指定cache服务器
require-sigs是关闭签名检验,自建代理设置签名过程较麻烦
- 接下来想在每个机器上安装的软件,先在代理服务器上安装下,其他机器走本地网络就很快了。
网友评论