代码之家  ›  专栏  ›  技术社区  ›  Hirurg103 Tilendor

无法从[elasticsearch--version]或[elasticsearch-v]确定elasticsearch版本:shift:不能移动那么多

  •  0
  • Hirurg103 Tilendor  · 技术社区  · 6 年前

    我在一个码头集装箱内运行ElasticSearch。图像的Dockerfile如下:

    # Dockerfile.ruby-2.4.1-elasticsearch-1.4.4
    FROM ruby:2.4.1
    
    # Install Java 8
    RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \
      echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \
      apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \
      apt-get update && \
      echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
      apt-get install -y oracle-java8-installer && \
      apt-get clean
    
    # Download and unpack elasticsearch 1.4.4
    RUN wget -q -O elasticsearch-1.4.4.tar.gz https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.4.4.tar.gz && \
      tar -xzf elasticsearch-1.4.4.tar.gz && \
      mv elasticsearch-1.4.4 $HOME/.elasticsearch && \
      ln -s $HOME/.elasticsearch/bin/elasticsearch /usr/local/bin/elasticsearch && \
      mkdir -p /usr/local/share/elasticsearch/ && \
      cp $HOME/.elasticsearch/bin/elasticsearch.in.sh /usr/local/share/elasticsearch/ && \
      rm elasticsearch-1.4.4.tar.gz
    

    当我建造它的时候

    docker build - < .gitlab-ci/Dockerfile.ruby-2.4.1-elasticsearch-1.4.4 -t hirurg103/ruby-2.4.1-elasticsearch-1.4.4
    

    启动一个交互式的bash会话

    docker run -i -t hirurg103/ruby-2.4.1-elasticsearch-1.4.4 bash
    

    并运行 elasticsearch --version 在我得到的容器里

    /usr/local/bin/elasticsearch: 168: shift: can't shift that many
    

    第168行的elasticsearch bin脚本如下所示:

    ...
    # Parse any long getopt options and put them into properties before calling getopt below
    # Be dash compatible to make sure running under ubuntu works
    ARGV=""
    while [ $# -gt 0 ]
    do
        case $1 in
          --*=*) properties="$properties -Des.${1#--}"
               shift 1
               ;;
          --*) properties="$properties -Des.${1#--}=$2"
               shift 2
               ;;
          *) ARGV="$ARGV $1" ; shift
        esac
    done
    ...
    

    当我开始我的RSPEC测试时,实际问题就发生了,它们失败了

    /usr/local/bin/elasticsearch: 168: shift: can't shift that many
    rake aborted!
    Cannot determine Elasticsearch version from [elasticsearch --version] or [elasticsearch -v]
    

    ElasticSearch——版本 正在从呼叫 elasticsearch-extensions ruby gem

    这个剧本怎么了?如何修复此错误?

    btw在我的本地机器mac操作系统上 10.14.1 Mojave 和ZSH 5.6.2 测试运行顺利

    1 回复  |  直到 6 年前
        1
  •  0
  •   Hirurg103 Tilendor    6 年前

    目前,我可以通过在初始化时直接指定ElasticSearch版本来解决这个错误。 Elasticsearch::Extensions::Test::Cluster :

    require 'elasticsearch/extensions/test/cluster'
    Elasticsearch::Extensions::Test::Cluster.start(
      port: 9250,
      version: '1.0'
    )