libicui18n.so.52:无法打开共享对象文件

时间:2014-04-19 17:27:08

标签: node.js ubuntu shared-libraries docker icu

我一直在使用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知识已经结束了:(

2 个答案:

答案 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,从而解决了所有问题