NixOS 23.11下用Cabal安装mysql-simple提示缺失C库求助
解决NixOS 23.11下Cabal安装mysql-simple的依赖问题
临时快速解决:用nix-shell搭建环境
直接执行这条命令进入包含所有必需C库的shell环境:
nix-shell -p zstd openssl pcre ghc cabal-install
进入环境后再运行:
cabal run
持久化解决:为项目配置shell.nix
如果想每次进入项目目录自动加载依赖,在项目根目录新建shell.nix文件,写入以下内容:
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell { buildInputs = [ pkgs.zstd pkgs.openssl pkgs.pcre pkgs.ghc pkgs.cabal-install ]; }
之后每次进入项目目录,执行nix-shell就能进入配置好的环境,再运行cabal run即可。
另一种方式:启用Cabal的Nix集成
如果你的Cabal版本支持,在项目根目录的cabal.project文件中添加一行:
nix: True
这样Cabal会自动通过Nix拉取所需系统依赖,之后直接运行cabal run就行。
注意点
- NixOS的系统库是隔离的,不能用普通发行版的包管理工具装依赖,必须通过Nix的方式引入。
openssl包已经包含报错里的ssl和crypto库,不用单独安装。pcre对应缺失的pcre库,zstd对应缺失的zstd库。
内容的提问来源于stack exchange,提问作者Dmitry M
相关产品推荐
相关产品推荐

