我一直在使用libicu来检测我在docker,ubuntu中运行的节点应用中的字符集。这是通过使用libicu-dev
包的模块node-icu-charset-detector完成的,我在npm包之前安装了它。
一切正常,但我突然得到了错误
module.js:356
Module._extensions[extension](this, filename); ^
Error: libicui18n.so.52: cannot open shared object file: No such file or directory
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/app/node_modules/node-icu-charset-detector/node-icu-charset-detector.js:1:82)
查看我的/ usr / lib /,我找不到任何与icu相关的东西,但是安装了libicu-dev。
这是我的泊坞文件;
# Pull base image.
FROM dockerfile/ubuntu
WORKDIR /
ADD run.sh /run.sh
#make dirs
RUN mkdir /log
RUN mkdir /app
RUN apt-get install -y supervisor libssl-dev pkg-config wget
# Install Node.js
RUN apt-get install -y software-properties-common
RUN add-apt-repository -y ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install -y nodejs
# Append to $PATH variable.
RUN echo '\n# Node.js\nexport PATH="node_modules/.bin:$PATH"' >> /root/.bash_profile
ADD /supervisord.conf /etc/supervisor/conf.d/supervisord.conf
#get phantomJS
RUN apt-get install libfreetype6 libfontconfig -y
RUN cd /app
RUN npm install phantomjs &>/dev/null
#ICU
RUN apt-get install libicu-dev libicu48 -y
RUN npm install --loglevel silent &>/dev/null
RUN npm update --loglevel silent &>/dev/null
#GET NODE-Supervisor
RUN cd /
RUN npm install --loglevel silent -g supervisor
RUN chmod 755 /*.sh
CMD ["/run.sh"]
感谢您对此问题的任何帮助,因为我的Linux知识已经结束了:(
答案 0 :(得分:4)
您正在安装libicu 4.8,但请求的共享库是libicu 52.因此您需要安装libicu52
软件包(如果可用)或下载预构建的二进制文件(或源代码并编译)来自here。
答案 1 :(得分:2)
正如@mscdex指出的那样,libicu正在寻找libicu52软件包。不知何故,存储库得到了更新,允许我提取新的libicu,这取决于12.04的存储库中没有的libicu52,但是在14.04中。由于在docker注册表中没有14.04的官方可信赖版本,我创建了自己的&#34; base&#34; ubuntu14.04 docker image以13.10开头并升级到14.04;
FROM ubuntu:saucy
ENV DEBIAN_FRONTEND noninteractive
# Work around initramfs-tools running on kernel 'upgrade': <http://bugs.debian.org/cgi- bin/bugreport.cgi?bug=594189>
ENV INITRD No
# Update OS.
RUN sed -i 's/saucy/trusty/g' /etc/apt/sources.list
RUN apt-get update -y
RUN apt-get upgrade -y
RUN apt-get dist-upgrade -y
# Install basic packages.
RUN apt-get install -y software-properties-common
RUN apt-get install -y curl git htop unzip vim wget
# Add files.
ADD root/.bashrc /root/.bashrc
ADD root/.gitconfig /root/.gitconfig
ADD root/scripts /root/scripts
RUN apt-get clean
# Set working directory.
ENV HOME /root
WORKDIR /root
CMD ["/bin/bash"]
然后在我的工作人员的Dockerfile中,我安装了libicu52而不是libicu48,从而解决了所有问题