s2i-nodejs-container icon indicating copy to clipboard operation
s2i-nodejs-container copied to clipboard

[Questions / Feature] ability to `yum install` additional packages

Open dnmd opened this issue 5 years ago • 1 comments

Some npm packages have additional dependencies outside the npm scope. For example the puppeteer npm package will download a recent version of Chromium. Chromium in its place depends on packages being present on the system it runs on.

When running ldd chrome | grep not it comes clear that the required packages are missing in this s2i. For example; libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 etc...

  1. Are the any plans, or did I miss it in the docs how to install additional packages for the system? Via something similar as other s2i's have like a requirements.txt?
  2. I also came across the possibility to extend the assemble script but I doubt if that is the proper way... because it may require sudo... (?)

Extending the assemble script by creating an .s2i/bin/assemble in the source of my project and add something like;

echo "Before assembling"

yum install libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 ...

/usr/libexec/s2i/assemble
rc=$?

if [ $rc -eq 0 ]; then
    echo "After successful assembling"
else
    echo "After failed assembling"
fi

exit $rc

dnmd avatar Feb 09 '20 12:02 dnmd

Hi, @dnmd, thanks for the question!

Unfortunately as root permissions are required to install packages this cannot be done anywhere else other than in the Dockerfile during the build of the image. The assemble script does not run under the root user, so extending it will not save you either.

If you do not need to get this working in Openshift you can just build a new image based on our images, switch to the root user during the build process, install what you need and switch the user back. Otherwise you will have to create an RFE in the Red Hat Bugzilla instance to get the dependencies into the image itself.

pkubatrh avatar Feb 12 '20 10:02 pkubatrh