1

在我的 Node.js 应用程序中,我使用 pam 身份验证,并且我使用的模块需要安装 libpam-dev(或 pam-devel),否则将无法编译。它生成的错误消息对用户不是很友好,而且很多人不会费心阅读文档。

我想使用 NPM 中的 preinstall 钩子来检查标头是否可用,如果没有,则显示一个友好的错误,然后在 NPM 尝试安装模块之前终止它。

我知道如何杀死 NPM,只是不知道如何检查 pam 标头是否可用。解决方案应该与发行版无关。

4

1 回答 1

1

我最终这样做了:

包.json:

{ 
  "scripts": {
    "preinstall": "./bin/install_check.sh"
  }
}

bin/install_check.sh:

#!/bin/bash

if [ `echo '#include <security/pam_appl.h>' | cpp -H -o /dev/null 2>&1 | head -n1 | grep 'fatal error' | wc -l` == "1" ]; then
  echo "nodeftpd: Please install the libpam-dev package";
  exit 1;
fi

我无法弄清楚如何避免需要单独的脚本。

于 2013-09-20T14:11:59.027 回答