我刚刚创建了一个docker容器,并尝试在其中安装SQL Relay。
但是,在sqlrelay的public List<Object> createObjectsFromJsonFile(Class<?> objectToCreate) {
gson = new GsonBuilder().create();
return gson.fromJson(reader, /*<appropriate type array from objectToCreate>*/);
}
末尾,我看到了这样的错误:
make install
我的安装可能出现什么问题?
这是我用来开始安装的docker文件:
update-rc.d: /etc/init.d/sqlrelay: file does not exist
update-rc.d: /etc/init.d/sqlrcachemanager: file does not exist
make[1]: *** [install] Error 1
make[1]: Leaving directory `/sqlrelay-0.66.0/init'
make: *** [install-init] Error 2
以下是sqlrelay-0.66.0文件夹中FROM ubuntu:trusty
RUN apt-get update && \
apt-get install libxml2-dev libpcre3 libpcre3-dev libmysqld-dev -y
RUN apt-get install mysql-server libmysqlclient-dev -y
# sql relay prerequisites
RUN apt-get install g++ make perl php5-dev python-dev ruby-dev \
tcl-dev openjdk-7-jdk erlang-dev nodejs-dev node-gyp mono-devel \
libmariadbclient-dev libpq-dev firebird-dev libfbclient2 libsqlite3-dev \
unixodbc-dev freetds-dev mdbtools-dev -y
COPY rudiments-0.56.0.tar.gz /
COPY sqlrelay-0.66.0.tar.gz /
EXPOSE 80
,./configure
和make
的输出:
如果您需要有关我的安装过程的更多信息,请告诉我们。我可以提供它。
答案 0 :(得分:0)
我认为你应该在你的行中使用ADD
代替COPY
,例如
COPY rudiments-0.56.0.tar.gz /
你的COPY只是复制.tar.gz,但不解包它们
与ADD一样
If the <src> parameter of ADD is an archive in a recognised compression format, it will be unpacked
这是从
中提取的What is the difference between the `COPY` and `ADD` commands in a Dockerfile?
答案 1 :(得分:0)
我最近遇到了同样的问题。我发现的问题是init Makefile错误地检测到在Ubuntu Trusty上使用systemctl并将脚本放在那里。稍后脚本会尝试在init.d中找到脚本并失败。
解决方案是编辑Makefile:sqlrelay-X.X.X/init/Makefile
替换:
install:
if ( test -d "/lib/systemd/system" ); \
使用:
install:
if ( test -d "/lib/systemd/system_x" ); \
稍后在脚本中对uninstall
选项进行类似的更改,现在它将在Ubuntu上正确安装。