【问题标题】:Compiling NSS module in Docker Alpine - fatal error: nss.h: No such file or directory在 Docker Alpine 中编译 NSS 模块 - 致命错误:nss.h:没有这样的文件或目录
【发布时间】:2020-06-22 08:49:26
【问题描述】:

我构建了一个 SSH 堡垒映像,它允许客户通过反向 SSH 插入自己(由于授权密钥上的 permitopen 子句,他们都有一个分配的端口)。我通过一个处理所有公钥的通用帐户来实现这一点。这些密钥是通过 BASH 脚本动态检索的,该脚本从 HTTP 服务器中提取它们(AuthorizedKeysCommand SSHD 选项)。

我的问题来自堡垒的用户群,我也希望它是动态的(而不是拥有普通用户)。为此,我需要一个不作为本机包存在的 HTTP NSS 模块,因此我必须自己构建它。

一开始,我发现了这个项目https://github.com/gmjosack/nss_http

在根据我的需要更新源代码之前,我正在尝试在沙盒映像中编译它,但我遇到了这个编译错误

In file included from nss_http-passwd.c:1:
nss_http.h:8:10: fatal error: nss.h: No such file or directory
 #include <nss.h>
          ^~~~~~~
compilation terminated.
make: *** [Makefile:20: nss_http-passwd] Error 1

我现在的头像是

FROM alpine

RUN apk update && \
    apk add bash gcc autoconf automake cmake make libc-dev curl-dev jansson-dev && \
    mkdir /src

WORKDIR /src

COPY . /src/

RUN make && make install

nss 和 nss-dev Alpine 软件包链接到另一个 NSS(网络安全服务)...

任何帮助将不胜感激!

【问题讨论】:

    标签: c docker compiler-errors compilation alpine


    【解决方案1】:

    你应该很好地安装musl-nscd-dev 包:

    apk add musl-nscd-dev
    

    这个包提供了一个最小的/usr/include/nss.h 头文件,它只提供nss_status 枚举:

    enum nss_status
    {
        NSS_STATUS_TRYAGAIN = -2,
        NSS_STATUS_UNAVAIL = -1,
        NSS_STATUS_NOTFOUND = 0,
        NSS_STATUS_SUCCESS = 1,
        NSS_STATUS_RETURN = 2
    };
    

    编译nss_http-passwd.c就够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2022-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多