Sur les serveurs RedHat OpenShift, il n'est pas possible de compiler le canevas de module node.js, car il manque des bibliothèques cairo pour linux, ainsi que des bibliothèques requises apparentées.Comment compiler le canevas de module node.js sur les serveurs RedHat OpenShift?
Répondre
This is how to make it compile:
export PATH=/sbin:$PATH:$OPENSHIFT_DATA_DIR/usr/local/bin
export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib:/opt/rh/nodejs010/root/usr/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib/pkgconfig
cd $OPENSHIFT_DATA_DIR
curl -L http://sourceforge.net/projects/libpng/files/libpng16/1.6.17/libpng-1.6.17.tar.gz/download -o libpng.tar.gz
curl -L http://www.ijg.org/files/jpegsrc.v9a.tar.gz -o jpegsrc.tar.gz
curl -L http://www.cairographics.org/releases/pixman-0.32.6.tar.gz -o pixman.tar.gz
curl -L http://public.p-knowledge.co.jp/Savannah-nongnu-mirror//freetype/freetype-2.5.5.tar.gz -o freetype.tar.gz
curl -L http://www.cairographics.org/releases/cairo-1.14.2.tar.xz -o cairo.tar.xz
curl -L http://ftp.gnome.org/pub/GNOME/sources/pango/1.35/pango-1.35.3.tar.xz -o pango.tar.xz
curl -L http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.gz -o fontconfig.tar.gz
curl -L http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2 -o harfbuzz.tar.bz2
curl -L http://ftp.gnome.org/pub/GNOME/sources/glib/2.34/glib-2.34.3.tar.xz -o glib.tar.xz
curl -L http://ftp.gnome.org/pub/GNOME/sources/pango/1.35/pango-1.35.3.tar.xz -o pango.tar.xz
cd $OPENSHIFT_DATA_DIR
gunzip libpng.tar.gz
tar -xvf libpng.tar
cd libpng-1.6.17/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar -zxf jpegsrc.tar.gz && cd jpeg-9a/
./configure --disable-dependency-tracking --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar -zxf pixman.tar.gz && cd pixman-0.32.6/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar -zxf freetype.tar.gz && cd freetype-2.5.5/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar --xz -xvf cairo.tar.xz && cd cairo-1.14.2/
./configure --disable-dependency-tracking --without-x --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar -xvf fontconfig.tar.gz && cd fontconfig-2.11.1/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
bunzip2 harfbuzz.tar.bz2
tar -xvf harfbuzz.tar && cd harfbuzz-0.9.37/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar --xz -xvf glib.tar.xz && cd glib-2.34.3/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar --xz -xvf pango.tar.xz && cd pango-1.35.3/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_REPO_DIR
scl enable nodejs010 v8314 'npm install canvas'
rm -rf "${OPENSHIFT_NODEJS_DIR}/tmp/saved.node_modules"
Pour utiliser ces bibliothèques dans le serveur Node.js, vous devez ajouter une entrée LD_LIBRARY_PATH personnalisée qui pointe vers eux
Dans le projet git OpenShift ajouter le répertoire: .openshift/marqueurs Dans ce répertoire créer un fichier vide nommé: use_npm
Dans le fichier package.json ajouter cette entrée:
"scripts": {
"start": "export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib:/opt/rh/nodejs010/root/usr/lib64:$LD_LIBRARY_PATH; supervisor server.js"
}
cela fonctionne habituellement, mais SOMETI Il se passe des activités de mise à jour npm qui commencent à reconstruire le module de toile.
Parfois, le module bcrypt ne se construit pas non plus.
La solution est de créer un engrenage, où tout fonctionne, puis de faire le fichier tar.gz avec le contenu de $ OPENSHIFT_DATA_DIR/usr/ et de transférer ce fichier sur votre serveur où il est accessible via http: //
Il devrait en être de même pour node_modules/canvas, node_modules/bcrypt et autres entrées vulnérables. Puis, il est possible d'utiliser les hooks de l'application OpenShift (build, etc) pour télécharger et extraire le contenu de ces fichiers au bon endroit.
En outre, vous pouvez compiler beaucoup node_modules/xxxxx sur CentOS 6.6, puis de les copier dans les bons endroits sur le serveur, qui fonctionne RHEL 6.6 (substance de compatibilité binaire, comme avec rpm installation du package)
De cette façon, il est possible de créer un dépôt git et des fichiers tar.gz téléchargeables qui permettraient de lancer automatiquement de nouveaux rapports RedHat OpenShift.
Bien sûr, s'il y aura des mises à niveau du système, le contenu des fichiers tar.gz doit également être mis à niveau.
Vous devez installer glib avant harfbuzz, ou pango se plaindra que hb-glib.h n'existe pas car harfbuzz n'inclura pas glib. – matteodelabre
gzip: libpng.tar.gz: pas en format gzip – Badjano
le fichier était un html, trouvé ceci et cela a fonctionné: http://mac-dev-env.patrickbougie.com/libpng/ – Badjano