【问题标题】:Google Chrome fails to launch on Heroku using Cedar-14 stackGoogle Chrome 无法使用 Cedar-14 堆栈在 Heroku 上启动
【发布时间】:2018-06-26 12:35:13
【问题描述】:

我们在 Heroku 上使用 Google chromechromedriver 在无头浏览器中渲染一些 HTML。这以前可以工作,但现在失败并出现以下错误。

Selenium::WebDriver::Error::UnknownError: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.4.0-1019-aws x86_64)

通过从命令行运行 google chrome 来解决此问题,如下所示也失败:

~ $ /app/.apt/usr/bin/google-chrome-stable

/app/.apt/opt/google/chrome/chrome: /lib/x86_64-linux-gnu/libdbus-1.so.3: no version information available (required by /app/.apt/usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0)
/app/.apt/opt/google/chrome/chrome: /lib/x86_64-linux-gnu/libdbus-1.so.3: no version information available (required by /app/.apt/usr/lib/x86_64-linux-gnu/libatspi.so.0)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmirclient.so.9)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmirclient.so.9)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmirclient.so.9)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmircommon.so.7)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmircommon.so.7)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmircommon.so.7)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmirprotobuf.so.3)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmirprotobuf.so.3)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmircore.so.1)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libmircore.so.1)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.9)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0)
/app/.apt/opt/google/chrome/chrome: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0)

【问题讨论】:

    标签: google-chrome heroku selenium-chromedriver google-chrome-headless buildpack


    【解决方案1】:

    不得不修补heroku xvfb chrome buildpack,不确定是否真的需要libstdc++6作为额外的包:

    diff --git a/bin/compile b/bin/compile
    index 6d092e9..ead9239 100755
    --- a/bin/compile
    +++ b/bin/compile
    @@ -67,7 +67,7 @@ esac
    
     indent "Installing Google Chrome from the $channel channel."
    
    -PACKAGES="https://dl.google.com/linux/direct/google-chrome-${channel}_current_amd64.deb libxss1 libnss3 xvfb"
    +PACKAGES="libstdc++6 https://dl.google.com/linux/direct/google-chrome-${channel}_current_amd64.deb libxss1 libnss3 xvfb"
    
     APT_CACHE_DIR="$CACHE_DIR/apt/cache"
     APT_STATE_DIR="$CACHE_DIR/apt/state"
    @@ -146,7 +146,8 @@ BIN_DIR=$BUILD_DIR/.apt/usr/bin
     rm $BIN_DIR/$SHIM
     cat <<EOF >$BIN_DIR/$SHIM
     #!/usr/bin/env bash
    -exec \$HOME/.apt/opt/google/$BIN --disable-gpu --no-sandbox \$@
    +export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:\$LD_LIBRARY_PATH
    +\$HOME/.apt/opt/google/$BIN --disable-gpu --no-sandbox \$@
     EOF
     chmod +x $BIN_DIR/$SHIM
     cp $BIN_DIR/$SHIM $BIN_DIR/google-chrome
    

    【讨论】:

      【解决方案2】:

      看起来这是 Heroku 上使用的 buildpack 和堆栈组合的问题。

      构建包跟踪 Chrome 的最新稳定版本,而不是特定版本。好像没有办法锁定版本,所以从 Chrome 更新最新版本可能会导致 chrome 失败

      https://github.com/heroku/heroku-buildpack-google-chrome#channels

      将构建包从 Cedar-14 升级到 Heroku-16 对我们来说意味着 /app/.apt/usr/bin/google-chrome-stable 将再次成功运行 chrome。

      【讨论】:

        猜你喜欢
        • 2011-12-08
        • 1970-01-01
        • 2012-07-10
        • 2012-04-02
        • 2015-03-20
        • 2013-01-08
        • 2020-08-07
        • 2011-12-31
        • 2011-11-22
        相关资源
        最近更新 更多