Nix配方postInstall脚本中权限修改与软链接创建失败问题求助
Nix配方postInstall脚本中权限修改与软链接创建失败问题求助
大家好,我正在Linux Mint机器上尝试通过自定义Nix配方,用nix-env -i -f recipe.nix命令安装Grafana及其ClickHouse数据源插件。配方主体都是直接取自官方Nix仓库,只修改了Grafana配方里的postInstall代码块,现在碰到两个棘手的问题,想请教下各位:
我的配置与操作
首先是顶层的recipe.nix内容:
with import <nixpkgs> {}; let grafanaPlugin = callPackage ./plugins/grafana-plugin.nix {}; in { clickhousePLugin = callPackage ./plugins/grafana-clickhouse-datasource/default.nix {inherit grafanaPlugin;}; grafana = callPackage ./default.nix {}; }
然后是Grafana的default.nix中修改的postInstall部分:
postInstall = '' tar -xvf $srcStatic mkdir -p $out/share/grafana mv grafana-*/{public,conf,tools} $out/share/grafana/ cp ./conf/defaults.ini $out/share/grafana/conf/ pluginPath=`here should be the path to the found folder with Clickhouse plugin in the /nix/store/ directory using the "find" command` mkdir -p $out/share/grafana/data/plugins ln -s $pluginPath $out/share/grafana/data/plugins/clickhouse-plugin chmod -R 777 $out/share/grafana/ '';
我的目标
我希望安装完成后,只需要创建一个systemd服务文件就能让Grafana自动启动。为此我做了两个操作:
- 尝试将Nix Store中的ClickHouse插件目录软链接到
$out/share/grafana/data/plugins下,让Grafana启动时自动识别并加载插件(比起直接复制,软链接更省空间也更合理) - 因为Grafana启动时会在工作目录创建一些文件和文件夹,但Nix生成的目录默认权限是555,无法写入,所以用
chmod -R 777 $out/share/grafana/来修改权限
遇到的问题
- 软链接未创建成功:虽然执行软链接命令时,插件目录已经存在于Nix Store中,但最终
$out/share/grafana/data/plugins下并没有生成预期的软链接 - 权限修改未生效:执行
chmod -R 777后,$out/share/grafana/及其子目录的权限仍然是555,导致Grafana无法在该目录下运行(因为无法写入文件)
求助问题
有没有大佬能解释一下,为什么postInstall脚本里的这两个操作都没有生效?如果有其他解决这些问题的思路或方法,也欢迎指点!
备注:内容来源于stack exchange,提问作者niceguy135
相关产品推荐
相关产品推荐

