ERPnext installation on ubuntu fails

For the last 12 months I’ve been installing ERPnext on VPS and virtual machines with very few problems. During the last week (mid-Dec 2017) I tried installing ERPnext on virtual machines in the coprorate LAN and it keeps failing.

I tried to install ERPnext with “easy install” install.py

  • on fresh Ubuntu 16.04 server x86 2 GB RAM
  • on fresh Ubuntu 16.04 server x64 4 GB RAM
  • on fresh Ubuntu 14.04 server x86 2 GB RAM

On all Ubuntu instances I tried it several times, executing the following commands:

sudo apt-get update
sudo apt-get install python-minimal
wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
sudo python install.py --production

The problem that keeps coming up is when the TASK [init bench] shows up on screen.

TASK [init bench] **********************************************************************************
fatal: [localhost]: FAILED! => {“changed”: true, “cmd”: [“bench”, “init”, “/home/frappe/frappe-bench”, “–frappe-branch”, “master”], “delta”: “0:07:08.034464”, “end”: “2017-12-21 11:45:15.329248”, “failed”: true, “rc”: 1, “start”: “2017-12-21 11:38:07.294784”, “stderr”: “INFO:bench.utils:virtualenv -q env -p /usr/bin/python\nINFO:bench.utils:./env/bin/pip -q install --upgrade pip\nINFO:bench.utils:./env/bin/pip -q install wheel\nINFO:bench.utils:./env/bin/pip -q install six\n/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.\n SNIMissingWarning\n/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see Advanced Usage - urllib3 2.0.0a2 documentation InsecurePlatformWarning\nINFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit\nINFO:bench.app:getting app frappe\nINFO:bench.utils:git clone GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript --branch master --origin upstream\nCloning into ‘frappe’…\nINFO:bench.app:installing frappe\nINFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -q -e /home/frappe/frappe-bench/apps/frappe --no-cache-dir\n/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.\n SNIMissingWarning\n/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see Advanced Usage - urllib3 2.0.0a2 documentation InsecurePlatformWarning\nINFO:bench.utils:npm install\nChromeDriver installation failed Error extracting archive: Error: end of central directory record signature not found\nnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):\nnpm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"ia32"})\nnpm WARN frappe@ No description\nnpm ERR! Linux 3.19.0-25-generic\nnpm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install"\nnpm ERR! node v6.12.2\nnpm ERR! npm v3.10.10\nnpm ERR! code ELIFECYCLE\n\nnpm ERR! chromedriver@2.34.0 install: node install.js\nnpm ERR! Exit status 1\nnpm ERR! \nnpm ERR! Failed at the chromedriver@2.34.0 install script ‘node install.js’.\nnpm ERR! Make sure you have the latest version of node.js and npm installed.\nnpm ERR! If you do, this is most likely a problem with the chromedriver package,\nnpm ERR! not with npm itself.\nnpm ERR! Tell the author that this fails on your system:\nnpm ERR! node install.js\nnpm ERR! You can get information on how to open an issue for this project with:\nnpm ERR! npm bugs chromedriver\nnpm ERR! Or if that isn’t available, you can get their info via:\nnpm ERR! npm owner ls chromedriver\nnpm ERR! There is likely additional logging output above.\n\nnpm ERR! Please include the following file with any support request:\nnpm ERR! /home/frappe/frappe-bench/npm-debug.log\nTraceback (most recent call last):\n File "/usr/local/bin/bench", line 11, in \n load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()\n File "/home/frappe/.bench/bench/cli.py", line 40, in cli\n bench_command()\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in call\n return self.main(*args, **kwargs)\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main\n rv = self.invoke(ctx)\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke\n return _process_result(sub_ctx.command.invoke(sub_ctx))\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke\n return ctx.invoke(self.callback, **ctx.params)\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke\n return callback(*args, **kwargs)\n File "/home/frappe/.bench/bench/commands/make.py", line 21, in init\n verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)\n File "/home/frappe/.bench/bench/utils.py", line 72, in init\n update_npm_packages(bench_path=path)\n File "/home/frappe/.bench/bench/utils.py", line 442, in update_npm_packages\n exec_cmd(‘npm install’, cwd=bench_path)\n File "/home/frappe/.bench/bench/utils.py", line 140, in exec_cmd\n raise CommandFailedError(cmd)\nbench.utils.CommandFailedError: npm install”, “stderr_lines”: [“INFO:bench.utils:virtualenv -q env -p /usr/bin/python”, “INFO:bench.utils:./env/bin/pip -q install --upgrade pip”, “INFO:bench.utils:./env/bin/pip -q install wheel”, “INFO:bench.utils:./env/bin/pip -q install six”, “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see Advanced Usage - urllib3 2.0.0a2 documentation”, " SNIMissingWarning", “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see Advanced Usage - urllib3 2.0.0a2 documentation”, " InsecurePlatformWarning", “INFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit”, “INFO:bench.app:getting app frappe”, “INFO:bench.utils:git clone GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript --branch master --origin upstream”, “Cloning into ‘frappe’…”, “INFO:bench.app:installing frappe”, “INFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -q -e /home/frappe/frappe-bench/apps/frappe --no-cache-dir”, “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see Advanced Usage - urllib3 2.0.0a2 documentation”, " SNIMissingWarning", “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see Advanced Usage - urllib3 2.0.0a2 documentation”, " InsecurePlatformWarning", “INFO:bench.utils:npm install”, “ChromeDriver installation failed Error extracting archive: Error: end of central directory record signature not found”, “npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):”, “npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"ia32"})”, “npm WARN frappe@ No description”, “npm ERR! Linux 3.19.0-25-generic”, “npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install"”, “npm ERR! node v6.12.2”, “npm ERR! npm v3.10.10”, “npm ERR! code ELIFECYCLE”, “”, “npm ERR! chromedriver@2.34.0 install: node install.js”, “npm ERR! Exit status 1”, “npm ERR! “, “npm ERR! Failed at the chromedriver@2.34.0 install script ‘node install.js’.”, “npm ERR! Make sure you have the latest version of node.js and npm installed.”, “npm ERR! If you do, this is most likely a problem with the chromedriver package,”, “npm ERR! not with npm itself.”, “npm ERR! Tell the author that this fails on your system:”, “npm ERR! node install.js”, “npm ERR! You can get information on how to open an issue for this project with:”, “npm ERR! npm bugs chromedriver”, “npm ERR! Or if that isn’t available, you can get their info via:”, “npm ERR! npm owner ls chromedriver”, “npm ERR! There is likely additional logging output above.”, “”, “npm ERR! Please include the following file with any support request:”, “npm ERR! /home/frappe/frappe-bench/npm-debug.log”, “Traceback (most recent call last):”, " File "/usr/local/bin/bench", line 11, in ”, " load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()”, " File "/home/frappe/.bench/bench/cli.py", line 40, in cli", " bench_command()“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in call”, " return self.main(*args, **kwargs)“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main”, " rv = self.invoke(ctx)“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke”, " return _process_result(sub_ctx.command.invoke(sub_ctx))“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke”, " return ctx.invoke(self.callback, **ctx.params)“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke”, " return callback(*args, **kwargs)“, " File "/home/frappe/.bench/bench/commands/make.py", line 21, in init”, " verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)“, " File "/home/frappe/.bench/bench/utils.py", line 72, in init”, " update_npm_packages(bench_path=path)“, " File "/home/frappe/.bench/bench/utils.py", line 442, in update_npm_packages”, " exec_cmd(‘npm install’, cwd=bench_path)“, " File "/home/frappe/.bench/bench/utils.py", line 140, in exec_cmd”, " raise CommandFailedError(cmd)", “bench.utils.CommandFailedError: npm install”], “stdout”: “Already using interpreter /usr/bin/python\n\n> uws@0.14.5 install /home/frappe/frappe-bench/node_modules/uws\n> node-gyp rebuild > build_log.txt 2>&1 || exit 0\n\n\n> chromedriver@2.34.0 install /home/frappe/frappe-bench/node_modules/chromedriver\n> node install.js\n\nDownloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux32.zip\nSaving to /tmp/chromedriver/chromedriver_linux32.zip\nReceived 0K total.\nExtracting zip contents\nfrappe@ /home/frappe/frappe-bench\n├─┬ babel-core@6.26.0 \n│ ├─┬ babel-code-frame@6.26.0 \n│ │ ├─┬ chalk@1.1.3 \n│ │ │ ├── ansi-styles@2.2.1 \n│ │ │ ├─┬ has-ansi@2.0.0 \n│ │ │ │ └── ansi-regex@2.1.1 \n│ │ │ ├── strip-ansi@3.0.1 \n│ │ │ └── supports-color@2.0.0 \n│ │ ├── esutils@2.0.2 \n│ │ └── js-tokens@3.0.2 \n│ ├─┬ babel-generator@6.26.0 \n│ │ ├─┬ detect-indent@4.0.0 \n│ │ │ └─┬ repeating@2.0.1 \n│ │ │ └─┬ is-finite@1.0.2 \n│ │ │ └── number-is-nan@1.0.1 \n│ │ ├── jsesc@1.3.0 \n│ │ └── trim-right@1.0.1 \n│ ├── babel-helpers@6.24.1 \n│ ├── babel-messages@6.23.0 \n│ ├─┬ babel-register@6.26.0 \n│ │ ├── core-js@2.5.3 \n│ │ ├─┬ home-or-tmp@2.0.0 \n│ │ │ ├── os-homedir@1.0.2 \n│ │ │ └── os-tmpdir@1.0.2 \n│ │ └── source-map-support@0.4.18 \n│ ├─┬ babel-runtime@6.26.0 \n│ │ └── regenerator-runtime@0.11.1 \n│ ├── babel-template@6.26.0 \n│ ├─┬ babel-traverse@6.26.0 \n│ │ └── globals@9.18.0 \n│ ├─┬ babel-types@6.26.0 \n│ │ └── to-fast-properties@1.0.3 \n│ ├── babylon@6.18.0 \n│ ├── convert-source-map@1.5.1 \n│ ├─┬ debug@2.6.9 \n│ │ └── ms@2.0.0 \n│ ├── json5@0.5.1 \n│ ├── lodash@4.17.4 \n│ ├─┬ minimatch@3.0.4 \n│ │ └─┬ brace-expansion@1.1.8 \n│ │ ├── balanced-match@1.0.0 \n│ │ └── concat-map@0.0.1 \n│ ├── path-is-absolute@1.0.1 \n│ ├── private@0.1.8 \n│ ├── slash@1.0.0 \n│ └── source-map@0.5.7 \n├─┬ babel-preset-env@1.6.1 \n│ ├── babel-plugin-check-es2015-constants@6.22.0 \n│ ├── babel-plugin-syntax-trailing-function-commas@6.22.0 \n│ ├─┬ babel-plugin-transform-async-to-generator@6.24.1 \n│ │ ├── babel-helper-remap-async-to-generator@6.24.1 \n│ │ └── babel-plugin-syntax-async-functions@6.13.0 \n│ ├── babel-plugin-transform-es2015-arrow-functions@6.22.0 \n│ ├── babel-plugin-transform-es2015-block-scoped-functions@6.22.0 \n│ ├── babel-plugin-transform-es2015-block-scoping@6.26.0 \n│ ├─┬ babel-plugin-transform-es2015-classes@6.24.1 \n│ │ ├── babel-helper-define-map@6.26.0 \n│ │ ├── babel-helper-function-name@6.24.1 \n│ │ ├── babel-helper-optimise-call-expression@6.24.1 \n│ │ └── babel-helper-replace-supers@6.24.1 \n│ ├── babel-plugin-transform-es2015-computed-properties@6.24.1 \n│ ├── babel-plugin-transform-es2015-destructuring@6.23.0 \n│ ├── babel-plugin-transform-es2015-duplicate-keys@6.24.1 \n│ ├── babel-plugin-transform-es2015-for-of@6.23.0 \n│ ├── babel-plugin-transform-es2015-function-name@6.24.1 \n│ ├── babel-plugin-transform-es2015-literals@6.22.0 \n│ ├── babel-plugin-transform-es2015-modules-amd@6.24.1 \n│ ├─┬ babel-plugin-transform-es2015-modules-commonjs@6.26.0 \n│ │ └── babel-plugin-transform-strict-mode@6.24.1 \n│ ├─┬ babel-plugin-transform-es2015-modules-systemjs@6.24.1 \n│ │ └── babel-helper-hoist-variables@6.24.1 \n│ ├── babel-plugin-transform-es2015-modules-umd@6.24.1 \n│ ├── babel-plugin-transform-es2015-object-super@6.24.1 \n│ ├─┬ babel-plugin-transform-es2015-parameters@6.24.1 \n│ │ ├── babel-helper-call-delegate@6.24.1 \n│ │ └── babel-helper-get-function-arity@6.24.1 \n│ ├── babel-plugin-transform-es2015-shorthand-properties@6.24.1 \n│ ├── babel-plugin-transform-es2015-spread@6.22.0 \n│ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.24.1 \n│ │ └── babel-helper-regex@6.26.0 \n│ ├── babel-plugin-transform-es2015-template-literals@6.22.0 \n│ ├── babel-plugin-transform-es2015-typeof-symbol@6.23.0 \n│ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.24.1 \n│ │ └─┬ regexpu-core@2.0.0 \n│ │ ├── regenerate@1.3.3 \n│ │ ├── regjsgen@0.2.0 \n│ │ └─┬ regjsparser@0.1.5 \n│ │ └── jsesc@0.5.0 \n│ ├─┬ babel-plugin-transform-exponentiation-operator@6.24.1 \n│ │ ├─┬ babel-helper-builder-binary-assignment-operator-visitor@6.24.1 \n│ │ │ └── babel-helper-explode-assignable-expression@6.24.1 \n│ │ └── babel-plugin-syntax-exponentiation-operator@6.13.0 \n│ ├─┬ babel-plugin-transform-regenerator@6.26.0 \n│ │ └── regenerator-transform@0.10.1 \n│ ├─┬ browserslist@2.10.0 \n│ │ ├── caniuse-lite@1.0.30000784 \n│ │ └─┬ electron-to-chromium@1.3.30 \n│ │ └── electron-releases@2.1.0 \n│ ├─┬ invariant@2.2.2 \n│ │ └── loose-envify@1.3.1 \n│ └── semver@5.4.1 \n├─┬ babel-preset-minify@0.2.0 \n│ ├─┬ babel-plugin-minify-builtins@0.2.0 \n│ │ └── babel-helper-evaluate-path@0.2.0 \n│ ├── babel-plugin-minify-constant-folding@0.2.0 \n│ ├─┬ babel-plugin-minify-dead-code-elimination@0.2.0 \n│ │ ├── babel-helper-mark-eval-scopes@0.2.0 \n│ │ ├── babel-helper-remove-or-void@0.2.0 \n│ │ └── lodash.some@4.6.0 \n│ ├─┬ babel-plugin-minify-flip-comparisons@0.2.0 \n│ │ └── babel-helper-is-void-0@0.2.0 \n│ ├─┬ babel-plugin-minify-guarded-expressions@0.2.0 \n│ │ └── babel-helper-flip-expressions@0.2.0 \n│ ├── babel-plugin-minify-infinity@0.2.0 \n│ ├── babel-plugin-minify-mangle-names@0.2.0 \n│ ├── babel-plugin-minify-numeric-literals@0.2.0 \n│ ├── babel-plugin-minify-replace@0.2.0 \n│ ├─┬ babel-plugin-minify-simplify@0.2.0 \n│ │ ├── babel-helper-is-nodes-equiv@0.0.1 \n│ │ └── babel-helper-to-multiple-sequence-expressions@0.2.0 \n│ ├── babel-plugin-minify-type-constructors@0.2.0 \n│ ├── babel-plugin-transform-inline-consecutive-adds@0.2.0 \n│ ├── babel-plugin-transform-member-expression-literals@6.8.5 \n│ ├── babel-plugin-transform-merge-sibling-variables@6.8.6 \n│ ├── babel-plugin-transform-minify-booleans@6.8.3 \n│ ├── babel-plugin-transform-property-literals@6.8.5 \n│ ├── babel-plugin-transform-regexp-constructors@0.2.0 \n│ ├── babel-plugin-transform-remove-console@6.8.5 \n│ ├── babel-plugin-transform-remove-debugger@6.8.5 \n│ ├── babel-plugin-transform-remove-undefined@0.2.0 \n│ ├── babel-plugin-transform-simplify-comparison-operators@6.8.5 \n│ ├── babel-plugin-transform-undefined-to-void@6.8.3 \n│ └── lodash.isplainobject@4.0.6 \n├─┬ chokidar@1.7.0 \n│ ├─┬ anymatch@1.3.2 \n│ │ ├─┬ micromatch@2.3.11 \n│ │ │ ├─┬ arr-diff@2.0.0 \n│ │ │ │ └── arr-flatten@1.1.0 \n│ │ │ ├── array-unique@0.2.1 \n│ │ │ ├─┬ braces@1.8.5 \n│ │ │ │ ├─┬ expand-range@1.8.2 \n│ │ │ │ │ └─┬ fill-range@2.2.3 \n│ │ │ │ │ ├── is-number@2.1.0 \n│ │ │ │ │ ├─┬ isobject@2.1.0 \n│ │ │ │ │ │ └── isarray@1.0.0 \n│ │ │ │ │ ├─┬ randomatic@1.1.7 \n│ │ │ │ │ │ ├─┬ is-number@3.0.0 \n│ │ │ │ │ │ │ └── kind-of@3.2.2 \n│ │ │ │ │ │ └── kind-of@4.0.0 \n│ │ │ │ │ └── repeat-string@1.6.1 \n│ │ │ │ ├── preserve@0.2.0 \n│ │ │ │ └── repeat-element@1.1.2 \n│ │ │ ├─┬ expand-brackets@0.1.5 \n│ │ │ │ └── is-posix-bracket@0.1.1 \n│ │ │ ├── extglob@0.3.2 \n│ │ │ ├── filename-regex@2.0.1 \n│ │ │ ├─┬ kind-of@3.2.2 \n│ │ │ │ └── is-buffer@1.1.6 \n│ │ │ ├─┬ object.omit@2.0.1 \n│ │ │ │ ├─┬ for-own@0.1.5 \n│ │ │ │ │ └── for-in@1.0.2 \n│ │ │ │ └── is-extendable@0.1.1 \n│ │ │ ├─┬ parse-glob@3.0.4 \n│ │ │ │ ├── glob-base@0.3.0 \n│ │ │ │ └── is-dotfile@1.0.3 \n│ │ │ └─┬ regex-cache@0.4.4 \n│ │ │ └─┬ is-equal-shallow@0.1.3 \n│ │ │ └── is-primitive@2.0.0 \n│ │ └─┬ normalize-path@2.1.1 \n│ │ └── remove-trailing-separator@1.1.0 \n│ ├── async-each@1.0.1 \n│ ├── glob-parent@2.0.0 \n│ ├── inherits@2.0.3 \n│ ├─┬ is-binary-path@1.0.1 \n│ │ └── binary-extensions@1.11.0 \n│ ├─┬ is-glob@2.0.1 \n│ │ └── is-extglob@1.0.0 \n│ └─┬ readdirp@2.1.0 \n│ └── set-immediate-shim@1.0.1 \n├── cookie@0.3.1 \n├─┬ express@4.16.2 \n│ ├─┬ accepts@1.3.4 \n│ │ ├─┬ mime-types@2.1.17 \n│ │ │ └── mime-db@1.30.0 \n│ │ └── negotiator@0.6.1 \n│ ├── array-flatten@1.1.1 \n│ ├─┬ body-parser@1.18.2 \n│ │ ├── bytes@3.0.0 \n│ │ ├─┬ http-errors@1.6.2 \n│ │ │ └── setprototypeof@1.0.3 \n│ │ ├── iconv-lite@0.4.19 \n│ │ └── raw-body@2.3.2 \n│ ├── content-disposition@0.5.2 \n│ ├── content-type@1.0.4 \n│ ├── cookie-signature@1.0.6 \n│ ├── depd@1.1.1 \n│ ├── encodeurl@1.0.1 \n│ ├── escape-html@1.0.3 \n│ ├── etag@1.8.1 \n│ ├─┬ finalhandler@1.1.0 \n│ │ └── unpipe@1.0.0 \n│ ├── fresh@0.5.2 \n│ ├── merge-descriptors@1.0.1 \n│ ├── methods@1.1.2 \n│ ├─┬ on-finished@2.3.0 \n│ │ └── ee-first@1.1.1 \n│ ├── parseurl@1.3.2 \n│ ├── path-to-regexp@0.1.7 \n│ ├─┬ proxy-addr@2.0.2 \n│ │ ├── forwarded@0.1.2 \n│ │ └── ipaddr.js@1.5.2 \n│ ├── qs@6.5.1 \n│ ├── range-parser@1.2.0 \n│ ├── safe-buffer@5.1.1 \n│ ├─┬ send@0.16.1 \n│ │ └── destroy@1.0.4 \n│ ├── serve-static@1.13.1 \n│ ├── setprototypeof@1.1.0 \n│ ├── statuses@1.3.1 \n│ ├─┬ type-is@1.6.15 \n│ │ └── media-typer@0.3.0 \n│ ├── utils-merge@1.0.1 \n│ └── vary@1.1.2 \n├─┬ less@2.7.3 \n│ ├─┬ errno@0.1.6 \n│ │ └── prr@1.0.1 \n│ ├── graceful-fs@4.1.11 \n│ ├── image-size@0.5.5 \n│ ├── mime@1.4.1 \n│ ├─┬ mkdirp@0.5.1 \n│ │ └── minimist@0.0.8 \n│ ├─┬ promise@7.3.1 \n│ │ └── asap@2.0.6 \n│ └─┬ request@2.81.0 \n│ ├── aws-sign2@0.6.0 \n│ ├── aws4@1.6.0 \n│ ├── caseless@0.12.0 \n│ ├─┬ combined-stream@1.0.5 \n│ │ └── delayed-stream@1.0.0 \n│ ├── forever-agent@0.6.1 \n│ ├── form-data@2.1.4 \n│ ├─┬ har-validator@4.2.1 \n│ │ ├─┬ ajv@4.11.8 \n│ │ │ ├── co@4.6.0 \n│ │ │ └─┬ json-stable-stringify@1.0.1 \n│ │ │ └── jsonify@0.0.0 \n│ │ └── har-schema@1.0.5 \n│ ├─┬ hawk@3.1.3 \n│ │ ├── boom@2.10.1 \n│ │ ├── cryptiles@2.0.5 \n│ │ ├── hoek@2.16.3 \n│ │ └── sntp@1.0.9 \n│ ├─┬ http-signature@1.1.1 \n│ │ ├── assert-plus@0.2.0 \n│ │ ├─┬ jsprim@1.4.1 \n│ │ │ ├── assert-plus@1.0.0 \n│ │ │ ├── extsprintf@1.3.0 \n│ │ │ ├── json-schema@0.2.3 \n│ │ │ └── verror@1.10.0 \n│ │ └─┬ sshpk@1.13.1 \n│ │ ├── asn1@0.2.3 \n│ │ ├── bcrypt-pbkdf@1.0.1 \n│ │ ├── dashdash@1.14.1 \n│ │ ├── ecc-jsbn@0.1.1 \n│ │ ├── getpass@0.1.7 \n│ │ ├── jsbn@0.1.1 \n│ │ └── tweetnacl@0.14.5 \n│ ├── is-typedarray@1.0.0 \n│ ├── isstream@0.1.2 \n│ ├── json-stringify-safe@5.0.1 \n│ ├── oauth-sign@0.8.2 \n│ ├── performance-now@0.2.0 \n│ ├── qs@6.4.0 \n│ ├── stringstream@0.0.5 \n│ ├─┬ tough-cookie@2.3.3 \n│ │ └── punycode@1.4.1 \n│ ├── tunnel-agent@0.6.0 \n│ └── uuid@3.1.0 \n├─┬ nightwatch@0.9.19 \n│ ├─┬ chai-nightwatch@0.1.1 \n│ │ ├── assertion-error@1.0.0 \n│ │ └─┬ deep-eql@0.1.3 \n│ │ └── type-detect@0.1.1 \n│ ├── ejs@2.5.7 \n│ ├─┬ lodash.clone@3.0.3 \n│ │ ├─┬ lodash._baseclone@3.3.0 \n│ │ │ ├── lodash._arraycopy@3.0.0 \n│ │ │ ├── lodash._arrayeach@3.0.0 \n│ │ │ ├─┬ lodash._baseassign@3.2.0 \n│ │ │ │ └── lodash._basecopy@3.0.1 \n│ │ │ ├── lodash._basefor@3.0.3 \n│ │ │ ├── lodash.isarray@3.0.4 \n│ │ │ └─┬ lodash.keys@3.1.2 \n│ │ │ ├── lodash._getnative@3.9.1 \n│ │ │ └── lodash.isarguments@3.1.0 \n│ │ ├── lodash._bindcallback@3.0.1 \n│ │ └── lodash._isiterateecall@3.0.9 \n│ ├─┬ lodash.defaultsdeep@4.3.2 \n│ │ ├── lodash._baseclone@4.5.7 \n│ │ ├── lodash._stack@4.1.3 \n│ │ ├── lodash.keysin@4.2.0 \n│ │ ├── lodash.mergewith@4.6.0 \n│ │ └── lodash.rest@4.0.5 \n│ ├── minimatch@3.0.3 \n│ ├── mkpath@1.0.0 \n│ ├─┬ mocha-nightwatch@3.2.2 \n│ │ ├── browser-stdout@1.3.0 \n│ │ ├─┬ commander@2.9.0 \n│ │ │ └── graceful-readlink@1.0.1 \n│ │ ├─┬ debug@2.2.0 \n│ │ │ └── ms@0.7.1 \n│ │ ├── diff@1.4.0 \n│ │ ├── escape-string-regexp@1.0.5 \n│ │ ├─┬ glob@7.0.5 \n│ │ │ ├── fs.realpath@1.0.0 \n│ │ │ ├─┬ inflight@1.0.6 \n│ │ │ │ └── wrappy@1.0.2 \n│ │ │ └── once@1.4.0 \n│ │ ├── growl@1.9.2 \n│ │ ├── json3@3.3.2 \n│ │ ├─┬ lodash.create@3.1.1 \n│ │ │ └── lodash._basecreate@3.0.3 \n│ │ └─┬ supports-color@3.1.2 \n│ │ └── has-flag@1.0.0 \n│ ├─┬ optimist@0.6.1 \n│ │ └── wordwrap@0.0.3 \n│ ├─┬ proxy-agent@2.0.0 \n│ │ ├─┬ agent-base@2.1.1 \n│ │ │ └── semver@5.0.3 \n│ │ ├── http-proxy-agent@1.0.0 \n│ │ ├── https-proxy-agent@1.0.0 \n│ │ ├── lru-cache@2.6.5 \n│ │ ├─┬ pac-proxy-agent@1.1.0 \n│ │ │ ├─┬ get-uri@2.0.1 \n│ │ │ │ ├── data-uri-to-buffer@1.2.0 \n│ │ │ │ ├── file-uri-to-path@1.0.0 \n│ │ │ │ └─┬ ftp@0.3.10 \n│ │ │ │ ├─┬ readable-stream@1.1.14 \n│ │ │ │ │ ├── isarray@0.0.1 \n│ │ │ │ │ └── string_decoder@0.10.31 \n│ │ │ │ └── xregexp@2.0.0 \n│ │ │ └─┬ pac-resolver@2.0.0 \n│ │ │ ├── co@3.0.6 \n│ │ │ ├─┬ degenerator@1.0.4 \n│ │ │ │ ├── ast-types@0.10.1 \n│ │ │ │ ├─┬ escodegen@1.9.0 \n│ │ │ │ │ ├── estraverse@4.2.0 \n│ │ │ │ │ └─┬ optionator@0.8.2 \n│ │ │ │ │ ├── deep-is@0.1.3 \n│ │ │ │ │ ├── fast-levenshtein@2.0.6 \n│ │ │ │ │ ├── levn@0.3.0 \n│ │ │ │ │ ├── prelude-ls@1.1.2 \n│ │ │ │ │ ├── type-check@0.3.2 \n│ │ │ │ │ └── wordwrap@1.0.0 \n│ │ │ │ └── esprima@3.1.3 \n│ │ │ ├── ip@1.0.1 \n│ │ │ ├── netmask@1.0.6 \n│ │ │ └── thunkify@2.1.2 \n│ │ └─┬ socks-proxy-agent@2.1.1 \n│ │ └─┬ socks@1.1.10 \n│ │ ├── ip@1.1.5 \n│ │ └── smart-buffer@1.1.15 \n│ └── q@1.4.1 \n├─┬ redis@2.8.0 \n│ ├── double-ended-queue@2.1.0-0 \n│ ├── redis-commands@1.3.1 \n│ └── redis-parser@2.6.0 \n├─┬ socket.io@2.0.4 \n│ ├─┬ engine.io@3.1.4 \n│ │ ├── accepts@1.3.3 \n│ │ ├── base64id@1.0.0 \n│ │ ├─┬ engine.io-parser@2.1.1 \n│ │ │ ├── after@0.8.2 \n│ │ │ ├── arraybuffer.slice@0.0.6 \n│ │ │ └── blob@0.0.4 \n│ │ ├── uws@0.14.5 \n│ │ └─┬ ws@3.3.3 \n│ │ ├── async-limiter@1.0.0 \n│ │ └── ultron@1.1.1 \n│ ├── socket.io-adapter@1.1.1 \n│ ├─┬ socket.io-client@2.0.4 \n│ │ ├── backo2@1.0.2 \n│ │ ├── base64-arraybuffer@0.1.5 \n│ │ ├── component-bind@1.0.0 \n│ │ ├─┬ engine.io-client@3.1.4 \n│ │ │ ├── component-inherit@0.0.3 \n│ │ │ ├── xmlhttprequest-ssl@1.5.4 \n│ │ │ └── yeast@0.1.2 \n│ │ ├── has-cors@1.1.0 \n│ │ ├── indexof@0.0.1 \n│ │ ├── object-component@0.0.3 \n│ │ ├─┬ parseqs@0.0.5 \n│ │ │ └─┬ better-assert@1.0.2 \n│ │ │ └── callsite@1.0.0 \n│ │ ├── parseuri@0.0.5 \n│ │ └── to-array@0.1.4 \n│ └─┬ socket.io-parser@3.1.2 \n│ ├── has-binary2@1.0.2 \n│ └── isarray@2.0.1 \n├─┬ superagent@3.8.2 \n│ ├── component-emitter@1.2.1 \n│ ├── cookiejar@2.1.1 \n│ ├── debug@3.1.0 \n│ ├── extend@3.0.1 \n│ ├─┬ form-data@2.3.1 \n│ │ └── asynckit@0.4.0 \n│ ├── formidable@1.1.1 \n│ └─┬ readable-stream@2.3.3 \n│ ├── core-util-is@1.0.2 \n│ ├── isarray@1.0.0 \n│ ├── process-nextick-args@1.0.7 \n│ ├── string_decoder@1.0.3 \n│ └── util-deprecate@1.0.2 \n└─┬ touch@3.1.0 \n └─┬ nopt@1.0.10 \n └── abbrev@1.1.1 \n\n(‘installing’, u’frappe’)\nUpdating node libraries…”, “stdout_lines”: [“Already using interpreter /usr/bin/python”, “”, “> uws@0.14.5 install /home/frappe/frappe-bench/node_modules/uws”, “> node-gyp rebuild > build_log.txt 2>&1 || exit 0”, “”, “”, “> chromedriver@2.34.0 install /home/frappe/frappe-bench/node_modules/chromedriver”, “> node install.js”, “”, “Downloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux32.zip”,

“Saving to /tmp/chromedriver/chromedriver_linux32.zip”, “Received 0K total.”, “Extracting zip contents”, “frappe@ /home/frappe/frappe-bench”, "├─┬ babel-core@6.26.0 ", "│ ├─┬ babel-code-frame@6.26.0 ", "│ │ ├─┬ chalk@1.1.3 ", "│ │ │ ├── ansi-styles@2.2.1 ", "│ │ │ ├─┬ has-ansi@2.0.0 ", "│ │ │ │ └── ansi-regex@2.1.1 ", "│ │ │ ├── strip-ansi@3.0.1 ", "│ │ │ └── supports-color@2.0.0 ", "│ │ ├── esutils@2.0.2 ", "│ │ └── js-tokens@3.0.2 ", "│ ├─┬ babel-generator@6.26.0 ", "│ │ ├─┬ detect-indent@4.0.0 ", "│ │ │ └─┬ repeating@2.0.1 ", "│ │ │ └─┬ is-finite@1.0.2 ", "│ │ │ └── number-is-nan@1.0.1 ", "│ │ ├── jsesc@1.3.0 ", "│ │ └── trim-right@1.0.1 ", "│ ├── babel-helpers@6.24.1 ", "│ ├── babel-messages@6.23.0 ", "│ ├─┬ babel-register@6.26.0 ", "│ │ ├── core-js@2.5.3 ", "│ │ ├─┬ home-or-tmp@2.0.0 ", "│ │ │ ├── os-homedir@1.0.2 ", "│ │ │ └── os-tmpdir@1.0.2 ", "│ │ └── source-map-support@0.4.18 ", "│ ├─┬ babel-runtime@6.26.0 ", "│ │ └── regenerator-runtime@0.11.1 ", "│ ├── babel-template@6.26.0 ", "│ ├─┬ babel-traverse@6.26.0 ", "│ │ └── globals@9.18.0 ", "│ ├─┬ babel-types@6.26.0 ", "│ │ └── to-fast-properties@1.0.3 ", "│ ├── babylon@6.18.0 ", "│ ├── convert-source-map@1.5.1 ", "│ ├─┬ debug@2.6.9 ", "│ │ └── ms@2.0.0 ", "│ ├── json5@0.5.1 ", "│ ├── lodash@4.17.4 ", "│ ├─┬ minimatch@3.0.4 ", "│ │ └─┬ brace-expansion@1.1.8 ", "│ │ ├── balanced-match@1.0.0 ", "│ │ └── concat-map@0.0.1 ", "│ ├── path-is-absolute@1.0.1 ", "│ ├── private@0.1.8 ", "│ ├── slash@1.0.0 ", "│ └── source-map@0.5.7 ", "├─┬ babel-preset-env@1.6.1 ", "│ ├── babel-plugin-check-es2015-constants@6.22.0 ", "│ ├── babel-plugin-syntax-trailing-function-commas@6.22.0 ", "│ ├─┬ babel-plugin-transform-async-to-generator@6.24.1 ", "│ │ ├── babel-helper-remap-async-to-generator@6.24.1 ", "│ │ └── babel-plugin-syntax-async-functions@6.13.0 ", "│ ├── babel-plugin-transform-es2015-arrow-functions@6.22.0 ", "│ ├── babel-plugin-transform-es2015-block-scoped-functions@6.22.0 ", "│ ├── babel-plugin-transform-es2015-block-scoping@6.26.0 ", "│ ├─┬ babel-plugin-transform-es2015-classes@6.24.1 ", "│ │ ├── babel-helper-define-map@6.26.0 ", "│ │ ├── babel-helper-function-name@6.24.1 ", "│ │ ├── babel-helper-optimise-call-expression@6.24.1 ", "│ │ └── babel-helper-replace-supers@6.24.1 ", "│ ├── babel-plugin-transform-es2015-computed-properties@6.24.1 ", "│ ├── babel-plugin-transform-es2015-destructuring@6.23.0 ", "│ ├── babel-plugin-transform-es2015-duplicate-keys@6.24.1 ", "│ ├── babel-plugin-transform-es2015-for-of@6.23.0 ", "│ ├── babel-plugin-transform-es2015-function-name@6.24.1 ", "│ ├── babel-plugin-transform-es2015-literals@6.22.0 ", "│ ├── babel-plugin-transform-es2015-modules-amd@6.24.1 ", "│ ├─┬ babel-plugin-transform-es2015-modules-commonjs@6.26.0 ", "│ │ └── babel-plugin-transform-strict-mode@6.24.1 ", "│ ├─┬ babel-plugin-transform-es2015-modules-systemjs@6.24.1 ", "│ │ └── babel-helper-hoist-variables@6.24.1 ", "│ ├── babel-plugin-transform-es2015-modules-umd@6.24.1 ", "│ ├── babel-plugin-transform-es2015-object-super@6.24.1 ", "│ ├─┬ babel-plugin-transform-es2015-parameters@6.24.1 ", "│ │ ├── babel-helper-call-delegate@6.24.1 ", "│ │ └── babel-helper-get-function-arity@6.24.1 ", "│ ├── babel-plugin-transform-es2015-shorthand-properties@6.24.1 ", "│ ├── babel-plugin-transform-es2015-spread@6.22.0 ", "│ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.24.1 ", "│ │ └── babel-helper-regex@6.26.0 ", "│ ├── babel-plugin-transform-es2015-template-literals@6.22.0 ", "│ ├── babel-plugin-transform-es2015-typeof-symbol@6.23.0 ", "│ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.24.1 ", "│ │ └─┬ regexpu-core@2.0.0 ", "│ │ ├── regenerate@1.3.3 ", "│ │ ├── regjsgen@0.2.0 ", "│ │ └─┬ regjsparser@0.1.5 ", "│ │ └── jsesc@0.5.0 ", "│ ├─┬ babel-plugin-transform-exponentiation-operator@6.24.1 ", "│ │ ├─┬ babel-helper-builder-binary-assignment-operator-visitor@6.24.1 ", "│ │ │ └── babel-helper-explode-assignable-expression@6.24.1 ", "│ │ └── babel-plugin-syntax-exponentiation-operator@6.13.0 ", "│ ├─┬ babel-plugin-transform-regenerator@6.26.0 ", "│ │ └── regenerator-transform@0.10.1 ", "│ ├─┬ browserslist@2.10.0 ", "│ │ ├── caniuse-lite@1.0.30000784 ", "│ │ └─┬ electron-to-chromium@1.3.30 ", "│ │ └── electron-releases@2.1.0 ", "│ ├─┬ invariant@2.2.2 ", "│ │ └── loose-envify@1.3.1 ", "│ └── semver@5.4.1 ", "├─┬ babel-preset-minify@0.2.0 ", "│ ├─┬ babel-plugin-minify-builtins@0.2.0 ", "│ │ └── babel-helper-evaluate-path@0.2.0 ", "│ ├── babel-plugin-minify-constant-folding@0.2.0 ", "│ ├─┬ babel-plugin-minify-dead-code-elimination@0.2.0 ", "│ │ ├── babel-helper-mark-eval-scopes@0.2.0 ", "│ │ ├── babel-helper-remove-or-void@0.2.0 ", "│ │ └── lodash.some@4.6.0 ", "│ ├─┬ babel-plugin-minify-flip-comparisons@0.2.0 ", "│ │ └── babel-helper-is-void-0@0.2.0 ", "│ ├─┬ babel-plugin-minify-guarded-expressions@0.2.0 ", "│ │ └── babel-helper-flip-expressions@0.2.0 ", "│ ├── babel-plugin-minify-infinity@0.2.0 ", "│ ├── babel-plugin-minify-mangle-names@0.2.0 ", "│ ├── babel-plugin-minify-numeric-literals@0.2.0 ", "│ ├── babel-plugin-minify-replace@0.2.0 ", "│ ├─┬ babel-plugin-minify-simplify@0.2.0 ", "│ │ ├── babel-helper-is-nodes-equiv@0.0.1 ", "│ │ └── babel-helper-to-multiple-sequence-expressions@0.2.0 ", "│ ├── babel-plugin-minify-type-constructors@0.2.0 ", "│ ├── babel-plugin-transform-inline-consecutive-adds@0.2.0 ", "│ ├── babel-plugin-transform-member-expression-literals@6.8.5 ", "│ ├── babel-plugin-transform-merge-sibling-variables@6.8.6 ", "│ ├── babel-plugin-transform-minify-booleans@6.8.3 ", "│ ├── babel-plugin-transform-property-literals@6.8.5 ", "│ ├── babel-plugin-transform-regexp-constructors@0.2.0 ", "│ ├── babel-plugin-transform-remove-console@6.8.5 ", "│ ├── babel-plugin-transform-remove-debugger@6.8.5 ", "│ ├── babel-plugin-transform-remove-undefined@0.2.0 ", "│ ├── babel-plugin-transform-simplify-comparison-operators@6.8.5 ", "│ ├── babel-plugin-transform-undefined-to-void@6.8.3 ", "│ └── lodash.isplainobject@4.0.6 ", "├─┬ chokidar@1.7.0 ", "│ ├─┬ anymatch@1.3.2 ", "│ │ ├─┬ micromatch@2.3.11 ", "│ │ │ ├─┬ arr-diff@2.0.0 ", "│ │ │ │ └── arr-flatten@1.1.0 ", "│ │ │ ├── array-unique@0.2.1 ", "│ │ │ ├─┬ braces@1.8.5 ", "│ │ │ │ ├─┬ expand-range@1.8.2 ", "│ │ │ │ │ └─┬ fill-range@2.2.3 ", "│ │ │ │ │ ├── is-number@2.1.0 ", "│ │ │ │ │ ├─┬ isobject@2.1.0 ", "│ │ │ │ │ │ └── isarray@1.0.0 ", "│ │ │ │ │ ├─┬ randomatic@1.1.7 ", "│ │ │ │ │ │ ├─┬ is-number@3.0.0 ", "│ │ │ │ │ │ │ └── kind-of@3.2.2 ", "│ │ │ │ │ │ └── kind-of@4.0.0 ", "│ │ │ │ │ └── repeat-string@1.6.1 ", "│ │ │ │ ├── preserve@0.2.0 ", "│ │ │ │ └── repeat-element@1.1.2 ", "│ │ │ ├─┬ expand-brackets@0.1.5 ", "│ │ │ │ └── is-posix-bracket@0.1.1 ", "│ │ │ ├── extglob@0.3.2 ", "│ │ │ ├── filename-regex@2.0.1 ", "│ │ │ ├─┬ kind-of@3.2.2 ", "│ │ │ │ └── is-buffer@1.1.6 ", "│ │ │ ├─┬ object.omit@2.0.1 ", "│ │ │ │ ├─┬ for-own@0.1.5 ", "│ │ │ │ │ └── for-in@1.0.2 ", "│ │ │ │ └── is-extendable@0.1.1 ", "│ │ │ ├─┬ parse-glob@3.0.4 ", "│ │ │ │ ├── glob-base@0.3.0 ", "│ │ │ │ └── is-dotfile@1.0.3 ", "│ │ │ └─┬ regex-cache@0.4.4 ", "│ │ │ └─┬ is-equal-shallow@0.1.3 ", "│ │ │ └── is-primitive@2.0.0 ", "│ │ └─┬ normalize-path@2.1.1 ", "│ │ └── remove-trailing-separator@1.1.0 ", "│ ├── async-each@1.0.1 ", "│ ├── glob-parent@2.0.0 ", "│ ├── inherits@2.0.3 ", "│ ├─┬ is-binary-path@1.0.1 ", "│ │ └── binary-extensions@1.11.0 ", "│ ├─┬ is-glob@2.0.1 ", "│ │ └── is-extglob@1.0.0 ", "│ └─┬ readdirp@2.1.0 ", "│ └── set-immediate-shim@1.0.1 ", "├── cookie@0.3.1 ", "├─┬ express@4.16.2 ", "│ ├─┬ accepts@1.3.4 ", "│ │ ├─┬ mime-types@2.1.17 ", "│ │ │ └── mime-db@1.30.0 ", "│ │ └── negotiator@0.6.1 ", "│ ├── array-flatten@1.1.1 ", "│ ├─┬ body-parser@1.18.2 ", "│ │ ├── bytes@3.0.0 ", "│ │ ├─┬ http-errors@1.6.2 ", "│ │ │ └── setprototypeof@1.0.3 ", "│ │ ├── iconv-lite@0.4.19 ", "│ │ └── raw-body@2.3.2 ", "│ ├── content-disposition@0.5.2 ", "│ ├── content-type@1.0.4 ", "│ ├── cookie-signature@1.0.6 ", "│ ├── depd@1.1.1 ", "│ ├── encodeurl@1.0.1 ", "│ ├── escape-html@1.0.3 ", "│ ├── etag@1.8.1 ", "│ ├─┬ finalhandler@1.1.0 ", "│ │ └── unpipe@1.0.0 ", "│ ├── fresh@0.5.2 ", "│ ├── merge-descriptors@1.0.1 ", "│ ├── methods@1.1.2 ", "│ ├─┬ on-finished@2.3.0 ", "│ │ └── ee-first@1.1.1 ", "│ ├── parseurl@1.3.2 ", "│ ├── path-to-regexp@0.1.7 ", "│ ├─┬ proxy-addr@2.0.2 ", "│ │ ├── forwarded@0.1.2 ", "│ │ └── ipaddr.js@1.5.2 ", "│ ├── qs@6.5.1 ", "│ ├── range-parser@1.2.0 ", "│ ├── safe-buffer@5.1.1 ", "│ ├─┬ send@0.16.1 ", "│ │ └── destroy@1.0.4 ", "│ ├── serve-static@1.13.1 ", "│ ├── setprototypeof@1.1.0 ", "│ ├── statuses@1.3.1 ", "│ ├─┬ type-is@1.6.15 ", "│ │ └── media-typer@0.3.0 ", "│ ├── utils-merge@1.0.1 ", "│ └── vary@1.1.2 ", "├─┬ less@2.7.3 ", "│ ├─┬ errno@0.1.6 ", "│ │ └── prr@1.0.1 ", "│ ├── graceful-fs@4.1.11 ", "│ ├── image-size@0.5.5 ", "│ ├── mime@1.4.1 ", "│ ├─┬ mkdirp@0.5.1 ", "│ │ └── minimist@0.0.8 ", "│ ├─┬ promise@7.3.1 ", "│ │ └── asap@2.0.6 ", "│ └─┬ request@2.81.0 ", "│ ├── aws-sign2@0.6.0 ", "│ ├── aws4@1.6.0 ", "│ ├── caseless@0.12.0 ", "│ ├─┬ combined-stream@1.0.5 ", "│ │ └── delayed-stream@1.0.0 ", "│ ├── forever-agent@0.6.1 ", "│ ├── form-data@2.1.4 ", "│ ├─┬ har-validator@4.2.1 ", "│ │ ├─┬ ajv@4.11.8 ", "│ │ │ ├── co@4.6.0 ", "│ │ │ └─┬ json-stable-stringify@1.0.1 ", "│ │ │ └── jsonify@0.0.0 ", "│ │ └── har-schema@1.0.5 ", "│ ├─┬ hawk@3.1.3 ", "│ │ ├── boom@2.10.1 ", "│ │ ├── cryptiles@2.0.5 ", "│ │ ├── hoek@2.16.3 ", "│ │ └── sntp@1.0.9 ", "│ ├─┬ http-signature@1.1.1 ", "│ │ ├── assert-plus@0.2.0 ", "│ │ ├─┬ jsprim@1.4.1 ", "│ │ │ ├── assert-plus@1.0.0 ", "│ │ │ ├── extsprintf@1.3.0 ", "│ │ │ ├── json-schema@0.2.3 ", "│ │ │ └── verror@1.10.0 ", "│ │ └─┬ sshpk@1.13.1 ", "│ │ ├── asn1@0.2.3 ", "│ │ ├── bcrypt-pbkdf@1.0.1 ", "│ │ ├── dashdash@1.14.1 ", "│ │ ├── ecc-jsbn@0.1.1 ", "│ │ ├── getpass@0.1.7 ", "│ │ ├── jsbn@0.1.1 ", "│ │ └── tweetnacl@0.14.5 ", "│ ├── is-typedarray@1.0.0 ", "│ ├── isstream@0.1.2 ", "│ ├── json-stringify-safe@5.0.1 ", "│ ├── oauth-sign@0.8.2 ", "│ ├── performance-now@0.2.0 ", "│ ├── qs@6.4.0 ", "│ ├── stringstream@0.0.5 ", "│ ├─┬ tough-cookie@2.3.3 ", "│ │ └── punycode@1.4.1 ", "│ ├── tunnel-agent@0.6.0 ", "│ └── uuid@3.1.0 ", "├─┬ nightwatch@0.9.19 ", "│ ├─┬ chai-nightwatch@0.1.1 ", "│ │ ├── assertion-error@1.0.0 ", "│ │ └─┬ deep-eql@0.1.3 ", "│ │ └── type-detect@0.1.1 ", "│ ├── ejs@2.5.7 ", "│ ├─┬ lodash.clone@3.0.3 ", "│ │ ├─┬ lodash._baseclone@3.3.0 ", "│ │ │ ├── lodash._arraycopy@3.0.0 ", "│ │ │ ├── lodash._arrayeach@3.0.0 ", "│ │ │ ├─┬ lodash._baseassign@3.2.0 ", "│ │ │ │ └── lodash._basecopy@3.0.1 ", "│ │ │ ├── lodash._basefor@3.0.3 ", "│ │ │ ├── lodash.isarray@3.0.4 ", "│ │ │ └─┬ lodash.keys@3.1.2 ", "│ │ │ ├── lodash._getnative@3.9.1 ", "│ │ │ └── lodash.isarguments@3.1.0 ", "│ │ ├── lodash._bindcallback@3.0.1 ", "│ │ └── lodash._isiterateecall@3.0.9 ", "│ ├─┬ lodash.defaultsdeep@4.3.2 ", "│ │ ├── lodash._baseclone@4.5.7 ", "│ │ ├── lodash._stack@4.1.3 ", "│ │ ├── lodash.keysin@4.2.0 ", "│ │ ├── lodash.mergewith@4.6.0 ", "│ │ └── lodash.rest@4.0.5 ", "│ ├── minimatch@3.0.3 ", "│ ├── mkpath@1.0.0 ", "│ ├─┬ mocha-nightwatch@3.2.2 ", "│ │ ├── browser-stdout@1.3.0 ", "│ │ ├─┬ commander@2.9.0 ", "│ │ │ └── graceful-readlink@1.0.1 ", "│ │ ├─┬ debug@2.2.0 ", "│ │ │ └── ms@0.7.1 ", "│ │ ├── diff@1.4.0 ", "│ │ ├── escape-string-regexp@1.0.5 ", "│ │ ├─┬ glob@7.0.5 ", "│ │ │ ├── fs.realpath@1.0.0 ", "│ │ │ ├─┬ inflight@1.0.6 ", "│ │ │ │ └── wrappy@1.0.2 ", "│ │ │ └── once@1.4.0 ", "│ │ ├── growl@1.9.2 ", "│ │ ├── json3@3.3.2 ", "│ │ ├─┬ lodash.create@3.1.1 ", "│ │ │ └── lodash._basecreate@3.0.3 ", "│ │ └─┬ supports-color@3.1.2 ", "│ │ └── has-flag@1.0.0 ", "│ ├─┬ optimist@0.6.1 ", "│ │ └── wordwrap@0.0.3 ", "│ ├─┬ proxy-agent@2.0.0 ", "│ │ ├─┬ agent-base@2.1.1 ", "│ │ │ └── semver@5.0.3 ", "│ │ ├── http-proxy-agent@1.0.0 ", "│ │ ├── https-proxy-agent@1.0.0 ", "│ │ ├── lru-cache@2.6.5 ", "│ │ ├─┬ pac-proxy-agent@1.1.0 ", "│ │ │ ├─┬ get-uri@2.0.1 ", "│ │ │ │ ├── data-uri-to-buffer@1.2.0 ", "│ │ │ │ ├── file-uri-to-path@1.0.0 ", "│ │ │ │ └─┬ ftp@0.3.10 ", "│ │ │ │ ├─┬ readable-stream@1.1.14 ", "│ │ │ │ │ ├── isarray@0.0.1 ", "│ │ │ │ │ └── string_decoder@0.10.31 ", "│ │ │ │ └── xregexp@2.0.0 ", "│ │ │ └─┬ pac-resolver@2.0.0 ", "│ │ │ ├── co@3.0.6 ", "│ │ │ ├─┬ degenerator@1.0.4 ", "│ │ │ │ ├── ast-types@0.10.1 ", "│ │ │ │ ├─┬ escodegen@1.9.0 ", "│ │ │ │ │ ├── estraverse@4.2.0 ", "│ │ │ │ │ └─┬ optionator@0.8.2 ", "│ │ │ │ │ ├── deep-is@0.1.3 ", "│ │ │ │ │ ├── fast-levenshtein@2.0.6 ", "│ │ │ │ │ ├── levn@0.3.0 ", "│ │ │ │ │ ├── prelude-ls@1.1.2 ", "│ │ │ │ │ ├── type-check@0.3.2 ", "│ │ │ │ │ └── wordwrap@1.0.0 ", "│ │ │ │ └── esprima@3.1.3 ", "│ │ │ ├── ip@1.0.1 ", "│ │ │ ├── netmask@1.0.6 ", "│ │ │ └── thunkify@2.1.2 ", "│ │ └─┬ socks-proxy-agent@2.1.1 ", "│ │ └─┬ socks@1.1.10 ", "│ │ ├── ip@1.1.5 ", "│ │ └── smart-buffer@1.1.15 ", "│ └── q@1.4.1 ", "├─┬ redis@2.8.0 ", "│ ├── double-ended-queue@2.1.0-0 ", "│ ├── redis-commands@1.3.1 ", "│ └── redis-parser@2.6.0 ", "├─┬ socket.io@2.0.4 ", "│ ├─┬ engine.io@3.1.4 ", "│ │ ├── accepts@1.3.3 ", "│ │ ├── base64id@1.0.0 ", "│ │ ├─┬ engine.io-parser@2.1.1 ", "│ │ │ ├── after@0.8.2 ", "│ │ │ ├── arraybuffer.slice@0.0.6 ", "│ │ │ └── blob@0.0.4 ", "│ │ ├── uws@0.14.5 ", "│ │ └─┬ ws@3.3.3 ", "│ │ ├── async-limiter@1.0.0 ", "│ │ └── ultron@1.1.1 ", "│ ├── socket.io-adapter@1.1.1 ", "│ ├─┬ socket.io-client@2.0.4 ", "│ │ ├── backo2@1.0.2 ", "│ │ ├── base64-arraybuffer@0.1.5 ", "│ │ ├── component-bind@1.0.0 ", "│ │ ├─┬ engine.io-client@3.1.4 ", "│ │ │ ├── component-inherit@0.0.3 ", "│ │ │ ├── xmlhttprequest-ssl@1.5.4 ", "│ │ │ └── yeast@0.1.2 ", "│ │ ├── has-cors@1.1.0 ", "│ │ ├── indexof@0.0.1 ", "│ │ ├── object-component@0.0.3 ", "│ │ ├─┬ parseqs@0.0.5 ", "│ │ │ └─┬ better-assert@1.0.2 ", "│ │ │ └── callsite@1.0.0 ", "│ │ ├── parseuri@0.0.5 ", "│ │ └── to-array@0.1.4 ", "│ └─┬ socket.io-parser@3.1.2 ", "│ ├── has-binary2@1.0.2 ", "│ └── isarray@2.0.1 ", "├─┬ superagent@3.8.2 ", "│ ├── component-emitter@1.2.1 ", "│ ├── cookiejar@2.1.1 ", "│ ├── debug@3.1.0 ", "│ ├── extend@3.0.1 ", "│ ├─┬ form-data@2.3.1 ", "│ │ └── asynckit@0.4.0 ", "│ ├── formidable@1.1.1 ", "│ └─┬ readable-stream@2.3.3 ", "│ ├── core-util-is@1.0.2 ", "│ ├── isarray@1.0.0 ", "│ ├── process-nextick-args@1.0.7 ", "│ ├── string_decoder@1.0.3 ", "│ └── util-deprecate@1.0.2 ", "└─┬ touch@3.1.0 ", " └─┬ nopt@1.0.10 ", " └── abbrev@1.1.1 ", “”, “(‘installing’, u’frappe’)”, “Updating node libraries…”]}
to retry, use: --limit @/tmp/.bench/playbooks/production/install.retry

PLAY RECAP *****************************************************************************************
localhost : ok=62 changed=38 unreachable=0 failed=1

Traceback (most recent call last):
File “install.py”, line 388, in
install_bench(args)
File “install.py”, line 114, in install_bench
run_playbook(‘production/install.yml’, sudo=True, extra_vars=extra_vars)
File “install.py”, line 326, in run_playbook
success = subprocess.check_call(args, cwd=os.path.join(cwd, ‘playbooks’))
File “/usr/lib/python2.7/subprocess.py”, line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command ‘[‘ansible-playbook’, ‘-c’, ‘local’, ‘production/install.yml’, ‘-e’, ‘@/tmp/extra_vars.json’, ‘–become’, ‘–become-user=frappe’]’ returned non-zero exit status 2

Does anybody have any idea about this?

Thanks in advance.

@D_Petropoulos Seems like nodejs legacy package issue. Can you try again after installing nodejs legacy package

sudo apt-get -y install nodejs-legacy

Sunil

I did another fresh Ubuntu 16.04 x86 installation and executed the following:

sudo apt-get update
sudo apt-get install python-minimal
sudo apt-get install software-properties-common
sudo apt-get install python-software-properties
sudo apt-get -y install nodejs-legacy
sudo apt-get update
wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
sudo python install.py --production

And after some wait, again an error.

TASK [init bench] **********************************************************************************
fatal: [localhost]: FAILED! => {“changed”: true, “cmd”: [“bench”, “init”, “/home/frappe/frappe-bench”, “–frappe-branch”, “master”], “delta”: “0:04:59.020151”, “end”: “2017-12-21 13:48:42.851776”, “failed”: true, “rc”: 1, “start”: “2017-12-21 13:43:43.831625”, “stderr”: “INFO:bench.utils:virtualenv -q env -p /usr/bin/python\nINFO:bench.utils:./env/bin/pip -q install --upgrade pip\nINFO:bench.utils:./env/bin/pip -q install wheel\nINFO:bench.utils:./env/bin/pip -q install six\nINFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit\nINFO:bench.app:getting app frappe\nINFO:bench.utils:git clone GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript --branch master --origin upstream\nCloning into ‘frappe’…\nINFO:bench.app:installing frappe\nINFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -q -e /home/frappe/frappe-bench/apps/frappe --no-cache-dir\nINFO:bench.utils:npm install\n/bin/sh: 1: npm: not found\nTraceback (most recent call last):\n File "/usr/local/bin/bench", line 11, in \n load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()\n File "/home/frappe/.bench/bench/cli.py", line 40, in cli\n bench_command()\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in call\n return self.main(*args, **kwargs)\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main\n rv = self.invoke(ctx)\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke\n return _process_result(sub_ctx.command.invoke(sub_ctx))\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke\n return ctx.invoke(self.callback, **ctx.params)\n File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke\n return callback(*args, **kwargs)\n File "/home/frappe/.bench/bench/commands/make.py", line 21, in init\n verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)\n File "/home/frappe/.bench/bench/utils.py", line 72, in init\n update_npm_packages(bench_path=path)\n File "/home/frappe/.bench/bench/utils.py", line 442, in update_npm_packages\n exec_cmd(‘npm install’, cwd=bench_path)\n File "/home/frappe/.bench/bench/utils.py", line 140, in exec_cmd\n raise CommandFailedError(cmd)\nbench.utils.CommandFailedError: npm install”, “stderr_lines”: [“INFO:bench.utils:virtualenv -q env -p /usr/bin/python”, “INFO:bench.utils:./env/bin/pip -q install --upgrade pip”, “INFO:bench.utils:./env/bin/pip -q install wheel”, “INFO:bench.utils:./env/bin/pip -q install six”, “INFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit”, “INFO:bench.app:getting app frappe”, “INFO:bench.utils:git clone GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript --branch master --origin upstream”, “Cloning into ‘frappe’…”, “INFO:bench.app:installing frappe”, “INFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -q -e /home/frappe/frappe-bench/apps/frappe --no-cache-dir”, “INFO:bench.utils:npm install”, “/bin/sh: 1: npm: not found”, “Traceback (most recent call last):”, " File "/usr/local/bin/bench", line 11, in “, " load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()”, " File "/home/frappe/.bench/bench/cli.py", line 40, in cli", " bench_command()“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in call”, " return self.main(*args, **kwargs)“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main”, " rv = self.invoke(ctx)“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke”, " return _process_result(sub_ctx.command.invoke(sub_ctx))“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke”, " return ctx.invoke(self.callback, **ctx.params)“, " File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke”, " return callback(*args, **kwargs)“, " File "/home/frappe/.bench/bench/commands/make.py", line 21, in init”, " verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)“, " File "/home/frappe/.bench/bench/utils.py", line 72, in init”, " update_npm_packages(bench_path=path)“, " File "/home/frappe/.bench/bench/utils.py", line 442, in update_npm_packages”, " exec_cmd(‘npm install’, cwd=bench_path)“, " File "/home/frappe/.bench/bench/utils.py", line 140, in exec_cmd”, " raise CommandFailedError(cmd)", “bench.utils.CommandFailedError: npm install”], “stdout”: “Already using interpreter /usr/bin/python\n(‘installing’, u’frappe’)\nUpdating node libraries…”, “stdout_lines”: [“Already using interpreter /usr/bin/python”, “(‘installing’, u’frappe’)”, “Updating node libraries…”]}
to retry, use: --limit @/tmp/.bench/playbooks/production/install.retry

PLAY RECAP *****************************************************************************************
localhost : ok=62 changed=38 unreachable=0 failed=1

Traceback (most recent call last):
File “install.py”, line 388, in
install_bench(args)
File “install.py”, line 114, in install_bench
run_playbook(‘production/install.yml’, sudo=True, extra_vars=extra_vars)
File “install.py”, line 326, in run_playbook
success = subprocess.check_call(args, cwd=os.path.join(cwd, ‘playbooks’))
File “/usr/lib/python2.7/subprocess.py”, line 541, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command ‘[‘ansible-playbook’, ‘-c’, ‘local’, ‘production/install.yml’, ‘-e’, ‘@/tmp/extra_vars.json’, ‘–become’, ‘–become-user=frappe’]’ returned non-zero exit status 2

Something is clearly broken. Two weeks ago there was no problem with installation, with the same hardware, OS and setup commands. Any recent changes in install.py? Any additional requirements in latest ERPnext versions? I don’t know.

1 Like

Try these steps

https://jwrober.github.io/erpnext_admin_guide/i-u-b/install

Tested good on both supported LTS versions. I also would suggest going to Debian 8. “it just works” there and since Ubuntu is based on debian there is little learning curve.

Thank you.

After some trouble locating Debian 8, I installed it and followed the instructions on the page you mentioned. Having a user “frappe”…

su
apt-get update
apt-get dist-upgrade -y
apt-get install -y sudo curl wget net-tools nginx postfix python2.7 vim
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
apt-get install -y nodejs
adduser frappe sudo
reboot

…login as “frappe”…

curl "https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py" -o install.py
sudo python install.py --production --site site1.local --user frappe --bench-name erpnext-prd --verbose 2>&1 | tee --append erpnext-install.log

…and got the following error:

TASK [init bench] **********************************************************************************
task path: /tmp/.bench/playbooks/develop/includes/setup_bench.yml:31
Using module file /usr/local/lib/python2.7/dist-packages/ansible/modules/commands/command.py
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /tmp/ansible-tmp-1513940876.24-229098115176891 `" && echo ansible-tmp-1513940876.24-229098115176891="` echo /tmp/ansible-tmp-1513940876.24-229098115176891 `" ) && sleep 0'
<127.0.0.1> PUT /tmp/tmpejEHG6 TO /tmp/ansible-tmp-1513940876.24-229098115176891/command.py
<127.0.0.1> EXEC /bin/sh -c 'setfacl -m u:frappe:r-x /tmp/ansible-tmp-1513940876.24-229098115176891/ /tmp/ansible-tmp-1513940876.24-229098115176891/command.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u frappe /bin/sh -c '"'"'echo BECOME-SUCCESS-qzoamplfvuzusnjmbkhvkrywzpuvwrdh; /usr/bin/python /tmp/ansible-tmp-1513940876.24-229098115176891/command.py'"'"' && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /tmp/ansible-tmp-1513940876.24-229098115176891/ > /dev/null 2>&1 && sleep 0'
fatal: [localhost]: FAILED! => {
    "changed": true,
    "cmd": [
        "bench",
        "init",
        "/home/frappe/erpnext-prd",
        "--frappe-branch",
        "master"
    ],
    "delta": "0:09:23.233007",
    "end": "2017-12-22 13:17:19.565169",
    "failed": true,
    "invocation": {
        "module_args": {
            "_raw_params": "bench init /home/frappe/erpnext-prd --frappe-branch master",
            "_uses_shell": false,
            "chdir": null,
            "creates": "/home/frappe/erpnext-prd",
            "executable": null,
            "removes": null,
            "warn": true
        }
    },
    "rc": 1,
    "start": "2017-12-22 13:07:56.332162",
    "stderr": "INFO:bench.utils:virtualenv -q env -p /usr/bin/python\nINFO:bench.utils:./env/bin/pip -q install --upgrade pip\nINFO:bench.utils:./env/bin/pip -q install wheel\nINFO:bench.utils:./env/bin/pip -q install six\nINFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit\nINFO:bench.app:getting app frappe\nINFO:bench.utils:git clone https://github.com/frappe/frappe.git --branch master  --origin upstream\nCloning into 'frappe'...\nINFO:bench.app:installing frappe\nINFO:bench.utils:/home/frappe/erpnext-prd/env/bin/pip install -q  -e /home/frappe/erpnext-prd/apps/frappe --no-cache-dir\nINFO:bench.utils:npm install\nChromeDriver installation failed Error extracting archive: Error: end of central directory record signature not found\nnpm WARN frappe@ No description\nnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules/fsevents):\nnpm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {\"os\":\"darwin\",\"arch\":\"any\"} (current: {\"os\":\"linux\",\"arch\":\"ia32\"})\n\nnpm ERR! code ELIFECYCLE\nnpm ERR! errno 1\nnpm ERR! chromedriver@2.34.0 install: `node install.js`\nnpm ERR! Exit status 1\nnpm ERR! \nnpm ERR! Failed at the chromedriver@2.34.0 install script.\nnpm ERR! This is probably not a problem with npm. There is likely additional logging output above.\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR!     /home/frappe/.npm/_logs/2017-12-22T11_17_19_500Z-debug.log\nTraceback (most recent call last):\n  File \"/usr/local/bin/bench\", line 11, in <module>\n    load_entry_point('bench', 'console_scripts', 'bench')()\n  File \"/home/frappe/.bench/bench/cli.py\", line 40, in cli\n    bench_command()\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 722, in __call__\n    return self.main(*args, **kwargs)\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 697, in main\n    rv = self.invoke(ctx)\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 1066, in invoke\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 895, in invoke\n    return ctx.invoke(self.callback, **ctx.params)\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 535, in invoke\n    return callback(*args, **kwargs)\n  File \"/home/frappe/.bench/bench/commands/make.py\", line 21, in init\n    verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)\n  File \"/home/frappe/.bench/bench/utils.py\", line 72, in init\n    update_npm_packages(bench_path=path)\n  File \"/home/frappe/.bench/bench/utils.py\", line 442, in update_npm_packages\n    exec_cmd('npm install', cwd=bench_path)\n  File \"/home/frappe/.bench/bench/utils.py\", line 140, in exec_cmd\n    raise CommandFailedError(cmd)\nbench.utils.CommandFailedError: npm install",
    "stderr_lines": [
        "INFO:bench.utils:virtualenv -q env -p /usr/bin/python",
        "INFO:bench.utils:./env/bin/pip -q install --upgrade pip",
        "INFO:bench.utils:./env/bin/pip -q install wheel",
        "INFO:bench.utils:./env/bin/pip -q install six",
        "INFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit",
        "INFO:bench.app:getting app frappe",
        "INFO:bench.utils:git clone https://github.com/frappe/frappe.git --branch master  --origin upstream",
        "Cloning into 'frappe'...",
        "INFO:bench.app:installing frappe",
        "INFO:bench.utils:/home/frappe/erpnext-prd/env/bin/pip install -q  -e /home/frappe/erpnext-prd/apps/frappe --no-cache-dir",
        "INFO:bench.utils:npm install",
        "ChromeDriver installation failed Error extracting archive: Error: end of central directory record signature not found",
        "npm WARN frappe@ No description",
        "npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules/fsevents):",
        "npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {\"os\":\"darwin\",\"arch\":\"any\"} (current: {\"os\":\"linux\",\"arch\":\"ia32\"})",
        "",
        "npm ERR! code ELIFECYCLE",
        "npm ERR! errno 1",
        "npm ERR! chromedriver@2.34.0 install: `node install.js`",
        "npm ERR! Exit status 1",
        "npm ERR! ",
        "npm ERR! Failed at the chromedriver@2.34.0 install script.",
        "npm ERR! This is probably not a problem with npm. There is likely additional logging output above.",
        "",
        "npm ERR! A complete log of this run can be found in:",
        "npm ERR!     /home/frappe/.npm/_logs/2017-12-22T11_17_19_500Z-debug.log",
        "Traceback (most recent call last):",
        "  File \"/usr/local/bin/bench\", line 11, in <module>",
        "    load_entry_point('bench', 'console_scripts', 'bench')()",
        "  File \"/home/frappe/.bench/bench/cli.py\", line 40, in cli",
        "    bench_command()",
        "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 722, in __call__",
        "    return self.main(*args, **kwargs)",
        "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 697, in main",
        "    rv = self.invoke(ctx)",
        "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 1066, in invoke",
        "    return _process_result(sub_ctx.command.invoke(sub_ctx))",
        "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 895, in invoke",
        "    return ctx.invoke(self.callback, **ctx.params)",
        "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 535, in invoke",
        "    return callback(*args, **kwargs)",
        "  File \"/home/frappe/.bench/bench/commands/make.py\", line 21, in init",
        "    verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)",
        "  File \"/home/frappe/.bench/bench/utils.py\", line 72, in init",
        "    update_npm_packages(bench_path=path)",
        "  File \"/home/frappe/.bench/bench/utils.py\", line 442, in update_npm_packages",
        "    exec_cmd('npm install', cwd=bench_path)",
        "  File \"/home/frappe/.bench/bench/utils.py\", line 140, in exec_cmd",
        "    raise CommandFailedError(cmd)",
        "bench.utils.CommandFailedError: npm install"
    ],
    "stdout": "Already using interpreter /usr/bin/python\n\n> uws@0.14.5 install /home/frappe/erpnext-prd/node_modules/uws\n> node-gyp rebuild > build_log.txt 2>&1 || exit 0\n\n\n> chromedriver@2.34.0 install /home/frappe/erpnext-prd/node_modules/chromedriver\n> node install.js\n\nDownloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux32.zip\nSaving to /tmp/chromedriver/chromedriver_linux32.zip\nReceived 0K total.\nExtracting zip contents\n('installing', u'frappe')\nUpdating node libraries...",
    "stdout_lines": [
        "Already using interpreter /usr/bin/python",
        "",
        "> uws@0.14.5 install /home/frappe/erpnext-prd/node_modules/uws",
        "> node-gyp rebuild > build_log.txt 2>&1 || exit 0",
        "",
        "",
        "> chromedriver@2.34.0 install /home/frappe/erpnext-prd/node_modules/chromedriver",
        "> node install.js",
        "",
        "Downloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux32.zip",
        "Saving to /tmp/chromedriver/chromedriver_linux32.zip",
        "Received 0K total.",
        "Extracting zip contents",
        "('installing', u'frappe')",
        "Updating node libraries..."
    ]
}
        to retry, use: --limit @/tmp/.bench/playbooks/production/install.retry

PLAY RECAP *****************************************************************************************
localhost                  : ok=62   changed=37   unreachable=0    failed=1

Passwords saved at ~/passwords.txt
Traceback (most recent call last):
  File "install.py", line 388, in <module>
    install_bench(args)
  File "install.py", line 114, in install_bench
    run_playbook('production/install.yml', sudo=True, extra_vars=extra_vars)
  File "install.py", line 326, in run_playbook
    success = subprocess.check_call(args, cwd=os.path.join(cwd, 'playbooks'))
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ansible-playbook', '-c', 'local', 'production/install.yml', '-e', '@/tmp/extra_vars.json', '-vvvv', '--become', '--become-user=frappe']' returned non-zero exit status 2

Then I tried

sudo python install.py --production

…and I got this error:

TASK [init bench] **********************************************************************************
fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["bench", "init", "/home/frappe/frappe-bench", "--frappe-branch", "master"], "delta": "0:09:05.564228", "end": "2017-12-22 13:29:47.571873", "failed": true, "rc": 1, "start": "2017-12-22 13:20:42.007645", "stderr": "INFO:bench.utils:virtualenv -q env -p /usr/bin/python\nINFO:bench.utils:./env/bin/pip -q install --upgrade pip\nINFO:bench.utils:./env/bin/pip -q install wheel\nINFO:bench.utils:./env/bin/pip -q install six\nINFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit\nINFO:bench.app:getting app frappe\nINFO:bench.utils:git clone https://github.com/frappe/frappe.git --branch master  --origin upstream\nCloning into 'frappe'...\nINFO:bench.app:installing frappe\nINFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -q  -e /home/frappe/frappe-bench/apps/frappe --no-cache-dir\nINFO:bench.utils:npm install\nChromeDriver installation failed Error extracting archive: Error: end of central directory record signature not found\nnpm WARN frappe@ No description\nnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules/fsevents):\nnpm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {\"os\":\"darwin\",\"arch\":\"any\"} (current: {\"os\":\"linux\",\"arch\":\"ia32\"})\n\nnpm ERR! code ELIFECYCLE\nnpm ERR! errno 1\nnpm ERR! chromedriver@2.34.0 install: `node install.js`\nnpm ERR! Exit status 1\nnpm ERR! \nnpm ERR! Failed at the chromedriver@2.34.0 install script.\nnpm ERR! This is probably not a problem with npm. There is likely additional logging output above.\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR!     /home/frappe/.npm/_logs/2017-12-22T11_29_47_523Z-debug.log\nTraceback (most recent call last):\n  File \"/usr/local/bin/bench\", line 11, in <module>\n    load_entry_point('bench', 'console_scripts', 'bench')()\n  File \"/home/frappe/.bench/bench/cli.py\", line 40, in cli\n    bench_command()\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 722, in __call__\n    return self.main(*args, **kwargs)\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 697, in main\n    rv = self.invoke(ctx)\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 1066, in invoke\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 895, in invoke\n    return ctx.invoke(self.callback, **ctx.params)\n  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 535, in invoke\n    return callback(*args, **kwargs)\n  File \"/home/frappe/.bench/bench/commands/make.py\", line 21, in init\n    verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)\n  File \"/home/frappe/.bench/bench/utils.py\", line 72, in init\n    update_npm_packages(bench_path=path)\n  File \"/home/frappe/.bench/bench/utils.py\", line 442, in update_npm_packages\n    exec_cmd('npm install', cwd=bench_path)\n  File \"/home/frappe/.bench/bench/utils.py\", line 140, in exec_cmd\n    raise CommandFailedError(cmd)\nbench.utils.CommandFailedError: npm install", "stderr_lines": ["INFO:bench.utils:virtualenv -q env -p /usr/bin/python", "INFO:bench.utils:./env/bin/pip -q install --upgrade pip", "INFO:bench.utils:./env/bin/pip -q install wheel", "INFO:bench.utils:./env/bin/pip -q install six", "INFO:bench.utils:./env/bin/pip -q install -e git+https://github.com/frappe/python-pdfkit.git#egg=pdfkit", "INFO:bench.app:getting app frappe", "INFO:bench.utils:git clone https://github.com/frappe/frappe.git --branch master  --origin upstream", "Cloning into 'frappe'...", "INFO:bench.app:installing frappe", "INFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -q  -e /home/frappe/frappe-bench/apps/frappe --no-cache-dir", "INFO:bench.utils:npm install", "ChromeDriver installation failed Error extracting archive: Error: end of central directory record signature not found", "npm WARN frappe@ No description", "npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules/fsevents):", "npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {\"os\":\"darwin\",\"arch\":\"any\"} (current: {\"os\":\"linux\",\"arch\":\"ia32\"})", "", "npm ERR! code ELIFECYCLE", "npm ERR! errno 1", "npm ERR! chromedriver@2.34.0 install: `node install.js`", "npm ERR! Exit status 1", "npm ERR! ", "npm ERR! Failed at the chromedriver@2.34.0 install script.", "npm ERR! This is probably not a problem with npm. There is likely additional logging output above.", "", "npm ERR! A complete log of this run can be found in:", "npm ERR!     /home/frappe/.npm/_logs/2017-12-22T11_29_47_523Z-debug.log", "Traceback (most recent call last):", "  File \"/usr/local/bin/bench\", line 11, in <module>", "    load_entry_point('bench', 'console_scripts', 'bench')()", "  File \"/home/frappe/.bench/bench/cli.py\", line 40, in cli", "    bench_command()", "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 722, in __call__", "    return self.main(*args, **kwargs)", "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 697, in main", "    rv = self.invoke(ctx)", "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 1066, in invoke", "    return _process_result(sub_ctx.command.invoke(sub_ctx))", "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 895, in invoke", "    return ctx.invoke(self.callback, **ctx.params)", "  File \"/usr/local/lib/python2.7/dist-packages/click/core.py\", line 535, in invoke", "    return callback(*args, **kwargs)", "  File \"/home/frappe/.bench/bench/commands/make.py\", line 21, in init", "    verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)", "  File \"/home/frappe/.bench/bench/utils.py\", line 72, in init", "    update_npm_packages(bench_path=path)", "  File \"/home/frappe/.bench/bench/utils.py\", line 442, in update_npm_packages", "    exec_cmd('npm install', cwd=bench_path)", "  File \"/home/frappe/.bench/bench/utils.py\", line 140, in exec_cmd", "    raise CommandFailedError(cmd)", "bench.utils.CommandFailedError: npm install"], "stdout": "Already using interpreter /usr/bin/python\n\n> uws@0.14.5 install /home/frappe/frappe-bench/node_modules/uws\n> node-gyp rebuild > build_log.txt 2>&1 || exit 0\n\n\n> chromedriver@2.34.0 install /home/frappe/frappe-bench/node_modules/chromedriver\n> node install.js\n\nDownloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux32.zip\nSaving to /tmp/chromedriver/chromedriver_linux32.zip\nReceived 0K total.\nExtracting zip contents\n('installing', u'frappe')\nUpdating node libraries...", "stdout_lines": ["Already using interpreter /usr/bin/python", "", "> uws@0.14.5 install /home/frappe/frappe-bench/node_modules/uws", "> node-gyp rebuild > build_log.txt 2>&1 || exit 0", "", "", "> chromedriver@2.34.0 install /home/frappe/frappe-bench/node_modules/chromedriver", "> node install.js", "", "Downloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux32.zip", "Saving to /tmp/chromedriver/chromedriver_linux32.zip", "Received 0K total.", "Extracting zip contents", "('installing', u'frappe')", "Updating node libraries..."]}
        to retry, use: --limit @/tmp/.bench/playbooks/production/install.retry

PLAY RECAP *****************************************************************************************
localhost                  : ok=58   changed=8    unreachable=0    failed=1

Traceback (most recent call last):
  File "install.py", line 388, in <module>
    install_bench(args)
  File "install.py", line 114, in install_bench
    run_playbook('production/install.yml', sudo=True, extra_vars=extra_vars)
  File "install.py", line 326, in run_playbook
    success = subprocess.check_call(args, cwd=os.path.join(cwd, 'playbooks'))
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ansible-playbook', '-c', 'local', 'production/install.yml', '-e', '@/tmp/extra_vars.json', '--become', '--become-user=frappe']' returned non-zero exit status 2

I assume the “It just works” has recently become “It just used to work”, no pun intended of course.

Looks like NPM from NodeJS did not get installed right for some reason. It is having trouble downloading modules bench needs. Did you ensure that the frappe user has the bash shell set with the useradd command I give in the instructions? That is important. Default on Debian is to use sh instead of bash.

Also just to make sure, run which python to ensure you are running python2.7.

Hi , i am getting trouble with "TASK [Install apt packages] " Could you please help me

You must be running the script with a user that has sudo rights. Don’t run as root. Need more information on error message to really help.