为DBI运行Mkbootstrap()=> DBIXS.h:22:20:致命错误:EXTERN.h:没有这样的文件或目录
我尝试在基于Alpine的Docker容器上安装MHA节点。 容器有perl,make和gcc通过apk。 :
RUN apk add --update perl make gcc
MHA节点的先决条件是DBD :: mysql。 命令
perl -MCPAN -e 'install DBD::mysql'
导致上面给出的错误。 Google对此一无所知。
MHApipe理器所需的以下命令运行正常,但是:
perl -MCPAN -e "install Config::Tiny" perl -MCPAN -e "install Log::Dispatch" perl -MCPAN -e "install Parallel::ForkManager"
这个问题显然与DBI有关:
Running Mkbootstrap for DBI () chmod 644 "DBI.bs" "/usr/bin/perl" -p -e "s/~DRIVER~/Perl/g" ./Driver.xst > Perl.xsi "/usr/bin/perl" "/usr/share/perl5/core_perl/ExtUtils/xsubpp" -typemap "/usr/share/perl5/core_perl/ExtUtils/typemap" -typemap "typemap" Perl.xs > Perl.xsc && mv Perl.xsc Perl.c cc -c -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -fomit-frame-pointer -DVERSION=\"1.636\" -DXS_VERSION=\"1.636\" -fPIC "-I/usr/lib/perl5/core_perl/CORE" -W -Wall -Wpointer-arith -Wbad-function-cast -Wno-comment -Wno-sign-compare -Wno-cast-qual -Wmissing-noreturn -Wno-unused-parameter Perl.c In file included from Perl.xs:7:0: DBIXS.h:22:20: fatal error: EXTERN.h: No such file or directory compilation terminated. Makefile:625: recipe for target 'Perl.o' failed make: *** [Perl.o] Error 1 TIMB/DBI-1.636.tar.gz /usr/bin/make -- NOT OK
我能做些什么来解决它?
在安装gcc之后使用Ubuntu 14.04
您需要libperl头文件来构build特定的模块,包括DBI。 在高山看来,它们是由perl-dev
软件包提供的。
从http://www.perlmonks.org/bare/?node_id=486526
EXTERN.h是embedded解释器和构buildXS模块所需的perl C API的一部分。 官方的perl发行版包含所有这些文件,但是很多linux发行版并没有将它作为基本perl包的一部分进行捆绑(有些甚至省去了很多核心模块)。 应该有一个或多个用于提供C API文件的分发包。 他们通常被称为“perl dev ”或类似的东西。 (从谷歌search,它看起来像mandrage包是“perl-devel-5。*。rpm”)
所以解决scheme看起来像添加perl-dev的apk添加命令,但这是不够的:
In file included from DBIXS.h:23:0, from Perl.xs:7: /usr/lib/perl5/core_perl/CORE/perl.h:699:23: fatal error: sys/types.h: No such file or directory compilation terminated. Makefile:628: recipe for target 'Perl.o' failed
好的,还有更多的使用googlesearch的插件。 现在工作:
FROM alpine ENV MHA_NODE_VERSION=0.54 \ MHA_MANAGER_VERSION=0.55 COPY ./mha/* /tmp/ # mha4mysql-manager-0.55.tar.gz # mha4mysql-node-0.54.tar.gz RUN apk add --update perl perl-dev musl-dev make gcc \ && perl -MCPAN -e 'install DBD::mysql' \ && perl -MCPAN -e "install Config::Tiny" \ && perl -MCPAN -e "install Log::Dispatch" \ && perl -MCPAN -e "install Parallel::ForkManager" \ && cd /tmp \ && tar -zxf mha4mysql-node-${MHA_NODE_VERSION}.tar.gz \ && cd mha4mysql-node-${MHA_NODE_VERSION}/ \ && perl Makefile.PL \ && make \ && make install \ && cd /tmp \ && tar -zxf mha4mysql-manager-${MHA_MANAGER_VERSION}.tar.gz \ && cd mha4mysql-manager-${MHA_MANAGER_VERSION}/ \ && perl Makefile.PL \ && make \ && make install \ && apk del make gcc musl-dev perl-dev \ && rm -rf /var/cache/apk/* ENTRYPOINT ["/usr/bin/perl", "-de0"]
- Alpine Linux是否处理与Busybox不同的authentication?
- 编译高山docker上的opencv
- getcap / setcap不能在Docker容器中使用Debian Stretch主机
- 如何在域名过期时添加Alpine Linux存储库?
- docker高山linux包蒙面
- 无法在官方Docker PHP Alpine映像中安装一些PHP扩展(模块)
- 在Docker中运行Linux Alpine 3.6的M2Crypto ImportError
- 如何将命令输出replace为string并将其附加到文件(在Docker中运行的Alpine Linux中)
- 执行shell命令不会产生任何结果