Skip to content

Instantly share code, notes, and snippets.

@chimmelb
Last active April 4, 2024 16:07
Show Gist options
  • Star 23 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save chimmelb/6342504893b2b9fce0f4a8efd096ae60 to your computer and use it in GitHub Desktop.
Save chimmelb/6342504893b2b9fce0f4a8efd096ae60 to your computer and use it in GitHub Desktop.
.ebextensions config file to load NodeJS EB instance with packages needed for Puppeteer/Chromium
# This is for ElasticBeanstalk with Amazon Linux 2023. For previous Linux 2 or Linux 1, see revisions for ideas
packages:
yum:
cups-libs: []
libdrm: []
libXdamage: []
libXfixes: []
libXrandr: []
mesa-libgbm: []
libxkbcommon: []
dbus-glib: []
libXrandr: []
libXcursor: []
libXinerama: []
cairo: []
cairo-gobject: []
pango: []
liberation-sans-fonts: []
libwayland-client: []
libwayland-cursor: []
gtk3: []
gdk-pixbuf2: []
libxkbcommon: []
libXScrnSaver: []
libpkgconf: []
atk: []
at-spi2-atk: []
at-spi2-core: []
alsa-lib: []
commands:
refresh-fonts:
command: |
fc-cache-64 -f -v
@pawlarius
Copy link

I'm installing via the ebextension script and have added the config files above.

Installation seems to work ok (no errors), but when calling puppeteer.launch (with any option), I get the following error:

(node:8305) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process!

/var/app/current/node_modules/puppeteer/.local-chromium/linux-722234/chrome-linux/chrome: /lib64/libdbus-1.so.3: no version information available (required by /usr/lib64/libatk-bridge-2.0.so.0)

/var/app/current/node_modules/puppeteer/.local-chromium/linux-722234/chrome-linux/chrome: /lib64/libdbus-1.so.3: no version information available (required by /usr/lib64/libatspi.so.0)

/var/app/current/node_modules/puppeteer/.local-chromium/linux-722234/chrome-linux/chrome: symbol lookup error:

/var/app/current/node_modules/puppeteer/.local-chromium/linux-722234/chrome-linux/chrome: undefined symbol: g_type_class_adjust_private_offset

I just can't understand how to solve this dependency issue, any help much appreciated!

having the same errors.. it seems from this thread puppeteer/puppeteer#5379, that is issues from puppeteer, and some people said using puppeteer@2.0.0 helps

@ayavilevich
Copy link

Another version change at the repository. had to update to:

commands:
  atk:
    command: rpm -ivh --nodeps --replacepkgs --replacefiles http://mirror.centos.org/centos/7/os/x86_64/Packages/atk-2.28.1-2.el7.x86_64.rpm

@chimmelb
Copy link
Author

chimmelb commented Sep 9, 2020

I just updated this gist for the versions that are currently working for me. Presumably they will become out of a date again.

@xehpuk
Copy link

xehpuk commented Oct 13, 2020

Doesn't work for me:

2020-10-13 22:17:41,853 [ERROR] -----------------------BUILD FAILED!------------------------
2020-10-13 22:17:41,853 [ERROR] Unhandled exception during build: Command libwayland-client failed
Traceback (most recent call last):
  File "/opt/aws/bin/cfn-init", line 171, in <module>
    worklog.build(metadata, configSets)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 129, in build
    Contractor(metadata).build(configSets, self)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 530, in build
    self.run_config(config, worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 542, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 260, in build
    changes['commands'] = CommandTool().apply(self._config.commands)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/command_tool.py", line 117, in apply
    raise ToolError(u"Command %s failed" % name)
ToolError: Command libwayland-client failed

Platform branch: Node.js 10 running on 64bit Amazon Linux 2
Current platform version: 5.2.2

@anthify
Copy link

anthify commented Jan 30, 2021

I can't get this to work as random packages fail install, and even when they don't packages are still required. The process of updating and deploying takes a while. Is there not a simpler more reliable way to do this?

My environment is EBS Amazon Linux 2 and Node 12.

@ValterSantosMatos
Copy link

Same here, not working anymore

@gerardhysa
Copy link

Doesn't work for me:

2020-10-13 22:17:41,853 [ERROR] -----------------------BUILD FAILED!------------------------
2020-10-13 22:17:41,853 [ERROR] Unhandled exception during build: Command libwayland-client failed
Traceback (most recent call last):
  File "/opt/aws/bin/cfn-init", line 171, in <module>
    worklog.build(metadata, configSets)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 129, in build
    Contractor(metadata).build(configSets, self)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 530, in build
    self.run_config(config, worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 542, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 260, in build
    changes['commands'] = CommandTool().apply(self._config.commands)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/command_tool.py", line 117, in apply
    raise ToolError(u"Command %s failed" % name)
ToolError: Command libwayland-client failed

Platform branch: Node.js 10 running on 64bit Amazon Linux 2
Current platform version: 5.2.2

Were you able to find a solution for this ? I am getting the same error

@chimmelb
Copy link
Author

We recently moved to Amazon Linux 2 and the upgrade had some changes for this config. (Revision 4)
Available Yum libs made it all a lot easier. I added the comments (prefixed with #) live in this gist, so if they break, remove them!
Linux (1) ideas are in the prior revisions.

@samueuh
Copy link

samueuh commented Jun 29, 2022

You are my hero! Thank you so much!

@raphaelsetin
Copy link

This worked with Node.js 16 running on 64bit Amazon Linux 2/5.5.6 🎉

Thank you!!

@falco467
Copy link

falco467 commented Dec 1, 2022

I found an easy way on Amazon Linux 2 is just:

packages: 
  yum:
    google-chrome-stable: []

This will install all required libraries with google chrome, even if you use the local installation from puppeteer afterwards.

Additionally I needed to configure the cache directory of puppeteer to a local directory, because how staging of new versions works on Elastic Beanstalk. Just put a .puppeteerrc.cjs in your project root:

const {join} = require('path');

/**
 * @type {import("puppeteer").Configuration}
 */
module.exports = {
  // Changes the cache location for Puppeteer.
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

@SFaraji
Copy link

SFaraji commented Dec 8, 2022

@falco467 I'm facing the similar issue with Playwright package which cannot use due to dependencies issue. Please see my latest log which I raised in StackOverflow and if you can point me what I'm doing wrong. Thanks
https://stackoverflow.com/questions/74696909/error-in-aws-elastic-beanstalk-for-using-playwrightcrawler-package

@wojtekKrol
Copy link

And how do you install puppeter (in my case playwright)?

I tried with command

npx playwright install chromium but it throws error

@falco467
Copy link

@wojtekKrol
Exactly as @SFaraji wrote in his StackOverflow answer. You need to install playwright with EBCONFIG file:

 command: PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment