glfs/general/genlib/nodejs.xml
Pierre Labastie 30824f0bc7 Typo
2022-11-09 07:40:38 +01:00

271 lines
7.8 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY nodejs-download-http "https://nodejs.org/dist/v&nodejs-version;/node-v&nodejs-version;.tar.xz">
<!ENTITY nodejs-download-ftp " ">
<!ENTITY nodejs-md5sum "7322f55ce420f49378515b67d73faf88">
<!ENTITY nodejs-size "37 MB">
<!ENTITY nodejs-buildsize "930 MB (add 29 MB for tests)">
<!ENTITY nodejs-time "18 SBU (add 4.6 SBU for tests: both using parallelism=4 and 4 CPUs online, parts of the tests will use all online CPUs)">
]>
<sect1 id="nodejs" xreflabel="nodejs-&nodejs-version;">
<?dbhtml filename="nodejs.html"?>
<sect1info>
<date>$Date$</date>
</sect1info>
<title>Node.js-&nodejs-version;</title>
<indexterm zone="nodejs">
<primary sortas="a-nodejs">nodejs</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to Node.js</title>
<para>
<application>Node.js</application> is a
<application>JavaScript</application> runtime built on
<application>Chrome's</application> V8 JavaScript engine.
</para>
&lfs112_checked;
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Download (HTTP): <ulink url="&nodejs-download-http;"/>
</para>
</listitem>
<listitem>
<para>
Download (FTP): <ulink url="&nodejs-download-ftp;"/>
</para>
</listitem>
<listitem>
<para>
Download MD5 sum: &nodejs-md5sum;
</para>
</listitem>
<listitem>
<para>
Download size: &nodejs-size;
</para>
</listitem>
<listitem>
<para>
Estimated disk space required: &nodejs-buildsize;
</para>
</listitem>
<listitem>
<para>
Estimated build time: &nodejs-time;
</para>
</listitem>
</itemizedlist>
<!--
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Required patch:
<ulink url="&patch-root;/node-v&nodejs-version;-icu_69-1.patch"/>
</para>
</listitem>
</itemizedlist>
-->
<bridgehead renderas="sect3">Node.js Dependencies</bridgehead>
<bridgehead renderas="sect4">Required</bridgehead>
<para role="required">
<xref linkend="which"/>
</para>
<bridgehead renderas="sect4">Recommended</bridgehead>
<para role="recommended">
<xref linkend="c-ares"/>,
<xref linkend="icu"/>,
<xref linkend="libuv"/>, and
<xref linkend="nghttp2"/>
</para>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional">
<ulink url="https://github.com/nodejs/http-parser">http-parser</ulink> and
<ulink url="https://www.npmjs.com/">npm</ulink> (an internal copy of
<command>npm</command> will be installed if not present)
</para>
<para condition="html" role="usernotes">
User Notes: <ulink url="&blfs-wiki;/nodejs"/>
</para>
</sect2>
<sect2 role="installation">
<title>Installation of Node.js</title>
<!--
<para>
First, apply a patch to fix building Node.js against ICU-69.1:
</para>
<screen><userinput>patch -Np1 -i ../node-v&nodejs-version;-icu_69-1.patch</userinput></screen>
-->
<para>
The <command>configure</command> script for this version of Node.js is
not aware of Python-3.11. If you have installed <xref linkend="python3"/>,
apply the following change:
</para>
<screen><userinput>sed -e '/=.*exec/a command -v python3.11 >/dev/null &amp;&amp; exec python3.11 "$0" "$@"' \
-e s'/((/((3, 11), (/' \
-i configure</userinput></screen>
<para>
Build <application>Node.js</application> by running the following
commands:
</para>
<screen><userinput>./configure --prefix=/usr \
--shared-cares \
--shared-libuv \
--shared-openssl \
--shared-nghttp2 \
--shared-zlib \
--with-intl=system-icu &amp;&amp;
make</userinput></screen>
<para>
To test the results, issue: <command>make test-only</command>.
One test, test-socket-write-after-fin-error, out of over 3600 tests is known to fail.
</para>
<para>
Now, as the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>make install &amp;&amp;
ln -sf node /usr/share/doc/node-&nodejs-version;</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para>
<parameter>--with-intl=system-icu</parameter>: use the system version
of <application>icu</application>. Other values are
<option>full-icu</option> (to build a local, full
<application>icu</application> library) and <option>small-icu</option>
(to build a local, minimal <application>icu</application> library).
</para>
<para>
<parameter>--shared-{cares,libuv,nghttp2,openssl,zlib}</parameter>:
use the system installed libraries instead of local copies.
</para>
<para>
<option>--without-npm</option>: do not build
<application>npm</application> (use if you'd like to build a separate
<application>npm</application> later).
</para>
<para>
<option>--shared-http-parser</option>: use the system
installed library instead of a local copy.
</para>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Library</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>
corepack, node, npm, and npx
</seg>
<seg>
None
</seg>
<seg>
/usr/include/node,
/usr/lib/node_modules/{corepack,npm},
/usr/share/doc/{node,node-&nodejs-version;}, and
/usr/share/systemtap/tapset
</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="corepack">
<term><command>corepack</command></term>
<listitem>
<para>
is an experimental tool to help with managing versions of package
managers.
</para>
<indexterm zone="nodejs corepack">
<primary sortas="b-corepack">corepack</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="node">
<term><command>node</command></term>
<listitem>
<para>
is the server-side JavaScript runtime
</para>
<indexterm zone="nodejs node">
<primary sortas="b-node">node</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="npm">
<term><command>npm</command></term>
<listitem>
<para>
is the <application>Node.js</application> package manager
</para>
<indexterm zone="nodejs npm">
<primary sortas="b-npm">npm</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry>
<term>
<filename class="directory">/usr/lib/node_modules/npm/</filename>
</term>
<listitem>
<para>
is the installation root for Node.js executables and libraries
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>