変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

Node.js

[ReadyNAS212]node-v14.17.6 インスト

やはりバージョンがあがっていたので、

# sudo wget https://nodejs.org/dist/v14.17.6/node-v14.17.6.tar.gz
# tar xvzf node-v14.17.6.tar.gz
# cd node-v14.17.6
# export CCFLAGS='-march=armv7-a'
# export CXXFLAGS='-march=armv7-a'
# sudo -E ./configure     ※要python
# date; sudo -E make -j4 ; date;
Fri Sep 17 21:03:47 JST 2021
・・・
Fri Sep 17 23:04:00 JST 2021
-j4でも結構限界に近い

最初は -j8 でやってみたら、盛りすぎてエラったらしい。

virtual memory exhausted: Cannot allocate memory
tools/v8_gypfiles/v8_compiler.target.mk:259: recipe for target '/home/{ユーザ}/node-v14.17.6/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/js-operator.o' failed
make[1]: *** [/home/{ユーザ}/node-v14.17.6/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/js-operator.o] Error 1
make[1]: *** Waiting for unfinished jobs....

では

# date; sudo -E make -j4 ; date;
Fri Sep 17 21:03:47 JST 2021
...
Fri Sep 17 23:04:00 JST 2021


[ReadyNas212]Node.jsインスト再び

前回インストからしばらく経ったので、Node.js本家からVer14をインスト。

curl -fsSL https://deb.nodesource.com/setup_14.x | bash -
apt-get install -y nodejs
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-armel/Packages' as repository 'https://deb.nodesource.com/node_14.x jessie InRelease' doesn't support architecture 'armel'

## Run `sudo apt-get install -y nodejs` to install Node.js 14.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
     echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn

今回もダメだった。一応 apyでもやってみたが

# sudo apt-get install -y nodejs
# node -v
v0.10.29

安定のVer0でした。ちゃんとお掃除しとこ。

# sudo apt-get remove -y nodejs
NASの状態 By PHPSystemInfo

Node.jsの32Bit版はarmhf (ARM 32-bit hard-float, ARMv7 and up: arm-linux-gnueabihf)対応なのはそのまま。



[RadyNAS212]node.js再び

OS入れなおしたのでnode.jsやgitの環境が消えてしまった。

やり直すのがメンドクサイ。

  1. gitインスト
  2. gccビルド
  3. gccの共有ライブラリィの設定(arm-gcc-9.2.9.conf作成)
  4. opensslビルド
  5. python3ビルド
  6. node.js

の順でいいはず。

しかしバージョンが上がる度に何かが可笑しくなるのはいつものこと

nginXを入れてWANからは80でLANからは80以外のポートでWordPressを動かすのも悪くないかな

  • PHP 7.3 以上
  • MySQL 5.6 以上または MariaDB 10.1 以上

の条件が厳しいからphpenvとphp-frmでnginx実行時のみ最新のphpを動かせばいいかも

# php -v
PHP 5.6.40-0+deb8u12 (cli) (built: Jun 28 2020 13:19:50)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
# mysql --version
mysql  Ver 14.14 Distrib 5.5.62, for debian-linux-gnu (armv7l) using readline 6.3
# mysqladmin --version
mysqladmin  Ver 8.42 Distrib 5.5.62, for debian-linux-gnu on armv7l



[node.js]v12.18.3

事前準備

$ sudo apt-get install build-essential libssl-dev

gccのインストールは、https://ssiscirine.moe.hm/?p=28263 参照

pythonのインストールは、ReadyNasの管理画面のアプリからインストール。

ソースのダウンロード

$ sudo wget https://nodejs.org/dist/v12.18.3/node-v12.18.3.tar.gz
$ tar xvzf node-v12.18.3.tar.gz
$ cd node-v12.18.3

環境変数の追加 ※以下、sudo -E で追加した環境変数が引き継がれる様にすること。

$ export CCFLAGS='-march=armv7-a'
$ export CXXFLAGS='-march=armv7-a'

makefile作成

sudo -E ./configure

ビルド

date; sudo -E make -j8 ; date;

インストール
しかし、コンパイルしまくりなので、上か下だけで良いような気がした。

$ date; sudo -E make install ; date;

と云うか、この手のパッケージは環境を破壊しやすく、再構築の時は長~いビルド時間(この手のNASでは数時間)を省いてインストールしたくなるものだと思うんだけどね。(笑)

と書いたら install は2分ほどで終わった。
もう一度 install しても2分ほどで終わった。

ビルドしたイメージをtar圧縮化して、再構築したNASで解凍した際にpythonをインストし忘れたがinstall自体は動き続けたので、何か変なコトが起こったかもしれない。



[CentOS8]Node.jsとか

パッケージ管理がdnfに変わったので

# dnf info nodejs
利用可能なパッケージ
名前         : nodejs
エポック     : 1
バージョン   : 10.19.0
リリース     : 1.module_el8.1.0+277+2bccb1a9
Arch         : x86_64
サイズ       : 9.0 M
ソース       : nodejs-10.19.0-1.module_el8.1.0+277+2bccb1a9.src.rpm
リポジトリー : AppStream
概要         : JavaScript runtime
URL          : http://nodejs.org/
ライセンス   : MIT and ASL 2.0 and ISC and BSD
説明         : Node.js is a platform built on Chrome's JavaScript runtime
             : for easily building fast, scalable network applications.
             : Node.js uses an event-driven, non-blocking I/O model that
             : makes it lightweight and efficient, perfect for data-intensive
             : real-time applications that run across distributed devices.
# dnf info python36
インストール済みパッケージ
名前         : python36
バージョン   : 3.6.8
リリース     : 2.module_el8.1.0+245+c39af44f
Arch         : x86_64
サイズ       : 13 k
ソース       : python36-3.6.8-2.module_el8.1.0+245+c39af44f.src.rpm
リポジトリー : @System
repo から    : AppStream
概要         : Interpreter of the Python programming language
URL          : https://www.python.org/
ライセンス   : Python
説明         : Python is an accessible, high-level, dynamically typed,
             : interpreted programming language, designed with an emphasis on
             : code readibility. It includes an extensive standard library, and
             : has a vast ecosystem of third-party libraries.
             :
             : The python36 package provides the "python3.6" executable: the
             : reference interpreter for the Python language, version 3.
             : The package also installs the "python3" executable which is user
             : configurable using the "alternatives --config python3" command.
             : For the unversioned "python" command, see manual page
             : "unversioned-python".
             :
             : The python36-devel package contains files for dovelopment of
             : Python application and the python36-debug is helpful for
             : debugging.
             :
             : Packages containing additional libraries for Python 3.6 are
             : generally named with the "python3-" prefix.
# dnf info openssl
インストール済みパッケージ
名前         : openssl
エポック     : 1
バージョン   : 1.1.1c
リリース     : 2.el8
Arch         : x86_64
サイズ       : 1.2 M
ソース       : openssl-1.1.1c-2.el8.src.rpm
リポジトリー : @System
repo から    : anaconda
概要         : Utilities from the general purpose cryptography library with TLS
             : implementation
URL          : http://www.openssl.org/
ライセンス   : OpenSSL
説明         : The OpenSSL toolkit provides support for secure communications
             : between machines. OpenSSL includes a certificate management tool
             : and shared libraries which provide various cryptographic
             : algorithms and protocols.

おっとupdateしてなかった。

# dnf update
================================================================================
 パッケージ           Arch   バージョン                         Repo      サイズ
================================================================================
インストール:
 kernel               x86_64 4.18.0-147.5.1.el8_1               BaseOS    1.5 M
 kernel-core          x86_64 4.18.0-147.5.1.el8_1               BaseOS     25 M
 kernel-modules       x86_64 4.18.0-147.5.1.el8_1               BaseOS     22 M
アップグレード:
 qemu-guest-agent     x86_64 15:2.12.0-88.module_el8.1.0+266+ba744077.2
                                                                AppStream 206 k
 NetworkManager       x86_64 1:1.20.0-5.el8_1                   BaseOS    2.1 M
 NetworkManager-libnm x86_64 1:1.20.0-5.el8_1                   BaseOS    1.7 M
 NetworkManager-team  x86_64 1:1.20.0-5.el8_1                   BaseOS    133 k
 NetworkManager-tui   x86_64 1:1.20.0-5.el8_1                   BaseOS    308 k
 glibc                x86_64 2.28-72.el8_1.1                    BaseOS    3.7 M
 glibc-common         x86_64 2.28-72.el8_1.1                    BaseOS    836 k
 glibc-devel          x86_64 2.28-72.el8_1.1                    BaseOS    1.0 M
 glibc-headers        x86_64 2.28-72.el8_1.1                    BaseOS    469 k
 glibc-langpack-ja    x86_64 2.28-72.el8_1.1                    BaseOS    323 k
 grub2-common         noarch 1:2.02-78.el8_1.1                  BaseOS    882 k
 grub2-pc             x86_64 1:2.02-78.el8_1.1                  BaseOS     36 k
 grub2-pc-modules     noarch 1:2.02-78.el8_1.1                  BaseOS    859 k
 grub2-tools          x86_64 1:2.02-78.el8_1.1                  BaseOS    2.0 M
 grub2-tools-extra    x86_64 1:2.02-78.el8_1.1                  BaseOS    1.1 M
 grub2-tools-minimal  x86_64 1:2.02-78.el8_1.1                  BaseOS    201 k
 kernel-tools         x86_64 4.18.0-147.5.1.el8_1               BaseOS    1.7 M
 kernel-tools-libs    x86_64 4.18.0-147.5.1.el8_1               BaseOS    1.5 M
 libarchive           x86_64 3.3.2-8.el8_1                      BaseOS    359 k
 openldap             x86_64 2.4.46-11.el8_1                    BaseOS    352 k
 openldap-devel       x86_64 2.4.46-11.el8_1                    BaseOS    811 k
 openssh              x86_64 8.0p1-4.el8_1                      BaseOS    496 k
 openssh-clients      x86_64 8.0p1-4.el8_1                      BaseOS    704 k
 openssh-server       x86_64 8.0p1-4.el8_1                      BaseOS    485 k
 policycoreutils      x86_64 2.9-3.el8_1.1                      BaseOS    377 k
 python3-perf         x86_64 4.18.0-147.5.1.el8_1               BaseOS    1.6 M
 sqlite-libs          x86_64 3.26.0-4.el8_1                     BaseOS    579 k
 systemd              x86_64 239-18.el8_1.4                     BaseOS    3.5 M
 systemd-libs         x86_64 239-18.el8_1.4                     BaseOS    562 k
 systemd-pam          x86_64 239-18.el8_1.4                     BaseOS    232 k
 systemd-udev         x86_64 239-18.el8_1.4                     BaseOS    1.3 M
 tuned                noarch 2.12.0-3.el8_1.1                   BaseOS    275 k
 cacti                noarch 1.2.9-1.el8                        epel       20 M
 epel-release         noarch 8-8.el8                            epel       22 k
依存関係のインストール:
 grub2-tools-efi      x86_64 1:2.02-78.el8_1.1                  BaseOS    465 k

トランザクションの概要
================================================================================
インストール     4 パッケージ
アップグレード  34 パッケージ

ダウンロードサイズの合計: 100 M
これでよろしいですか? [y/N]: y
(中略)
アップグレード済み:
  qemu-guest-agent-15:2.12.0-88.module_el8.1.0+266+ba744077.2.x86_64
  NetworkManager-1:1.20.0-5.el8_1.x86_64
  NetworkManager-libnm-1:1.20.0-5.el8_1.x86_64
  NetworkManager-team-1:1.20.0-5.el8_1.x86_64
  NetworkManager-tui-1:1.20.0-5.el8_1.x86_64
  glibc-2.28-72.el8_1.1.x86_64
  glibc-common-2.28-72.el8_1.1.x86_64
  glibc-devel-2.28-72.el8_1.1.x86_64
  glibc-headers-2.28-72.el8_1.1.x86_64
  glibc-langpack-ja-2.28-72.el8_1.1.x86_64
  grub2-common-1:2.02-78.el8_1.1.noarch
  grub2-pc-1:2.02-78.el8_1.1.x86_64
  grub2-pc-modules-1:2.02-78.el8_1.1.noarch
  grub2-tools-1:2.02-78.el8_1.1.x86_64
  grub2-tools-extra-1:2.02-78.el8_1.1.x86_64
  grub2-tools-minimal-1:2.02-78.el8_1.1.x86_64
  kernel-tools-4.18.0-147.5.1.el8_1.x86_64
  kernel-tools-libs-4.18.0-147.5.1.el8_1.x86_64
  libarchive-3.3.2-8.el8_1.x86_64
  openldap-2.4.46-11.el8_1.x86_64
  openldap-devel-2.4.46-11.el8_1.x86_64
  openssh-8.0p1-4.el8_1.x86_64
  openssh-clients-8.0p1-4.el8_1.x86_64
  openssh-server-8.0p1-4.el8_1.x86_64
  policycoreutils-2.9-3.el8_1.1.x86_64
  python3-perf-4.18.0-147.5.1.el8_1.x86_64
  sqlite-libs-3.26.0-4.el8_1.x86_64
  systemd-239-18.el8_1.4.x86_64
  systemd-libs-239-18.el8_1.4.x86_64
  systemd-pam-239-18.el8_1.4.x86_64
  systemd-udev-239-18.el8_1.4.x86_64
  tuned-2.12.0-3.el8_1.1.noarch
  cacti-1.2.9-1.el8.noarch
  epel-release-8-8.el8.noarch

インストール済み:
  kernel-4.18.0-147.5.1.el8_1.x86_64
  kernel-core-4.18.0-147.5.1.el8_1.x86_64
  kernel-modules-4.18.0-147.5.1.el8_1.x86_64
  grub2-tools-efi-1:2.02-78.el8_1.1.x86_64

完了しました!

自動アップデートの方法が変わったらしい。

# dnf install dnf-automatic
メタデータの期限切れの最終確認: 0:07:14 時間前の 2020年05月01日 10時03分10秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ           Arch          バージョン              リポジトリー  サイズ
================================================================================
インストール:
 dnf-automatic        noarch        4.2.7-7.el8_1           BaseOS        136 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 136 k
インストール済みのサイズ: 46 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
dnf-automatic-4.2.7-7.el8_1.noarch.rpm          482 kB/s | 136 kB     00:00
--------------------------------------------------------------------------------
合計                                            105 kB/s | 136 kB     00:01
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : dnf-automatic-4.2.7-7.el8_1.noarch                     1/1
  scriptletの実行中: dnf-automatic-4.2.7-7.el8_1.noarch                     1/1
  検証             : dnf-automatic-4.2.7-7.el8_1.noarch                     1/1

インストール済み:
  dnf-automatic-4.2.7-7.el8_1.noarch

完了しました!
※ /etc/dnf/dnf-automatic.comfのapply_updates = no ⇒ yes に変える
# systemctl enable dnf-automatic
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
   instance name specified.
# systemctl start dnf-automatic

でも、systemctl status dnf-automaticで調べると
inactiveなんだけど?

yum同様にミラーリポジトリィを使う

fastestmirror=true ※ 追記する


Node.js ABC順でハマる

$ uname -a
 Linux ****** 4.4.184.alpine.1 #1 SMP Thu Sep 5 02:32:14 UTC 2019 armv7l GNU/Linux

armv71.CPUの分類が判ったので、
公式サイトからArmV71用をダウンロード。

インストール方法を見ながら、やってみたものの。結果は

# node -bash: /usr/local/lib/nodejs/node-v12.13.0-linux-armv7l/bin/node: No such file or directory

Ubuntu(for Armv7l)のリポジトリィを漁ってみると

# apt-get update
# apt-get install nodejs npm
# nodejs -v
v0.10.29

さすがにコレは古いが、開発キットをインストしてみると、

# apt-get install build-essential
# gcc --version
gcc (Debian 4.9.2-10+deb8u2) 4.9.2
# g++ --version
g++ (Debian 4.9.2-10+deb8u2) 4.9.2
# make --version
GNU Make 4.0
# apt-get install openjdk*
# java -version
java version "1.7.0_231"
# python --version ※これは管理画面からインスト
Python 2.7.9

32ビットCPUなんで全てが古いらしい。
Node.jsのソースからビルドする際に要求に
gcc and g++ >= 6.3 or newer, or
があるので致命的。
しかも、ie同様にarrow関数が使えないから全部function()で書かないといけないのは辛いので「パッケージマネージャを利用した Node.js のインストール」から「 Node.js 公式のバイナリディストリビューション 」の「Manual installation」を読んでみたが失敗。

armel で、引っかかってしまう。
Available architectures: を見ると未サポートで、
ラズパイの様にarmhf(ハードウェアFPU付)だったら良かったらしい。

キモは、
export でCCFLAGSとCXXFLAGSを指定することだった。
Rasbery-Pi/Zeroなら

# export CCFLAGS='-march=armv6'
# export CXXFLAGS='-march=armv6'

とするらしい。
gccが9.2.0でもコレは同じ。
しかし、ReadyNAS212のCPUは ARM Cortex A15。
Wikiによれば、
 ファミリー : Cortex-A
 アーキテクチャ: v7-A
 コア : Cortex A15
と云うことで、
こんぱいらの ターゲットアーキテクチャの指定 から
CCFLAGSは、 ‘-march=armv7-a’ なのだそうだ。
Node.jsのコミュニティを眺めてたら、
ん~な古いCPUの需要あるの?あるならやるかも。と、書いてあったので、
新しいVerで試してみた。
※wgetしたので、git-coreは要らない。
なお、コンパイルに要した時間は3時間を超えており、make install もログが長い。

最終的にはこれでOK。

$ sudo apt-get install git-core build-essential libssl-dev
$ # sudo wget https://nodejs.org/dist/v12.13.1/node-v12.13.1.tar.gz
$ # sudo tar xvzf node-v12.13.1.tar.gz
$ # cd node-v12.13.1
$ sudo wget https://nodejs.org/dist/v12.18.3/node-v12.18.3.tar.gz
$ sudo tar xvzf node-v12.18.3.tar.gz
$ cd node-v12.18.3
$ export CCFLAGS='-march=armv7-a'
$ export CXXFLAGS='-march=armv7-a'
$ sudo -E ./configure
$ sudo -E make -j8
$ sudo -E make install
$ node --version
v12.13.1
$ npm --version
6.12.1

-j8は8スレッド使用かな?付けない時よりはログの流れが速いし、topコマンドで見る限り、指定有:97%、無:24%。8コアじゃないから-j4で十分。
かかった時間も 指定有:1時間半、無:3時間だから -j2で良かったかも。

以下は、トラブル履歴。

トラブル 1.一般ユーザからsudoを使ってビルドすると古いgccが使われてしまう。
-Eを付けてもPATHだけは置き換えられてしまうので、
/etc/sudoers のパスに/usr/local/gcc-9.2.0/binを追加。

# cd node-v12.13.1
# ./configure    ※要python
WARNING: C++ compiler too old, need g++ 6.3.0 or clang++ 8.0.0 (CXX=g++)
INFO: Using floating patch "tools/icu/patches/64/source/common/putil.cpp" from "tools/icu"
INFO: Using floating patch "tools/icu/patches/64/source/i18n/dtptngen.cpp" from "tools/icu"
WARNING: warnings were emitted in the configure phase
INFO: configure completed successfully
※gcc 9.2.0の場合
INFO: Using floating patch "tools/icu/patches/64/source/common/putil.cpp" from "tools/icu"
INFO: Using floating patch "tools/icu/patches/64/source/i18n/dtptngen.cpp" from "tools/icu"
INFO: configure completed successfully

しかし、うまくいかない。

Error: selected processor does not support ARM mode `bkpt 0'

この直後にrootでログインしても

libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by

apt-get install libstdc++6
はインスト済みだが、リポジトリィのものはかなり古いようだ。
gcc-9.2.0のターゲットは /usr/local/gcc-9.2.0 だったので、
export LD_LIBRARY_PATH=/usr/local/gcc-9.2.0/lib:$LD_LIBRARY_PATH
でやり過ごそうとしたが
無駄。
やはり古いのを見てしまう。
というか仕様になっていた。
一般のユーザの~/.bash_profileなどに書くとうまくいく場合もあるらしいが

$ echo $LD_LIBRARY_PATH
/usr/local/gcc-9.2.0/lib:

トラブル2. LD_LIBRARY_PATH は効かない。

LD_LIBRARY_PATHが空っぽの時点で察する必要があった。
このNASのLinuxでは、LD_LIBRARY_PATH環境変数は一般の環境変数でしかないのだった。

どうやら、ldconfigの出番の様だ。gcc-9.2.0と心中するつもりで取り掛かるしかないのだ。

しかし、今は/etc/ld.so.confに直書きするのではなく、

/etc/ld.so.conf.dにgcc-9.2.9.confを追加するのが通らしい。

# gcc-9.2.0 configuration
/usr/local/gcc-9.2.0/lib

そして、共有ライブラリィのリンクを入れ替える

# ldconfig
/sbin/ldconfig.real: /usr/local/gcc-9.2.0/lib/libstdc++.so.6.0.27-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
/sbin/ldconfig.real: /usr/lib/libreadycloud.so.1 is not a symbolic link

これでも、

$ sudo -E ldconfig -p | grep libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/lib/arm-linux-gnueabi/libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/local/gcc-9.2.0/lib/libstdc++.so.6

となって古いものを見てしまう。
/etc/ld.so.conf の中身が

include /etc/ld.so.conf.d/*.conf

なので、arm-linux-gnueabi.conf より文字コードが前になりそうな
__ gcc-9.2.9.conf に名を変えたが無駄足で、
結局  ls -l /etc/ld.so.conf.d/*.conf の結果 を見ながらファイル名を変えて、

arm-gcc-9.2.9.conf が正解!

奥が深いというより、
デフォのgccのファイル名が linux-gnueabi.conf ならOKだが、
arm- linux-gnueabi.conf なら誰もが失敗する。
こんな設定ファイルの読込み順で、共有ライブラリィのパスが決まるのって

間抜けとしか云いようがない

否、今は
include  *****/*.conf
が普通なのだから、昨今のlinuxのノウハウの半分を占めている可能性が高い。
※とっても低レベルだが、

決して、侮れないノウハウだ。

ファイル名を linux-arm-gnueabi.conf に変えるだけで誰もが幸せになれるのにね?でも、ダレもそんなことはしないのが世の常。

$ sudo -E ldconfig -p | grep libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/local/gcc-9.2.0/lib/libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/lib/arm-linux-gnueabi/libstdc++.so.6

とりあえず、バイトコード生成をコメントアウトしなくて済むようになったので、リモートデバッグもできるようになるだろう。
※ソースをNFSの共有フォルダに配置しなければいけない問題はあるけど。

そして、長いコンパイルはまだまだ3時間くらい続くはずだ。

sudo make test
=== release test-perf-hooks ===
Path: sequential/test-perf-hooks
{
  name: 'node',
  entryType: 'node',
  startTime: 0,
  duration: { around: 144.90792298316956 },
  nodeStart: { around: 0 },
  v8Start: { around: 0 },
  bootstrapComplete: { around: 135.9222869873047, delay: 2500 },
  environment: { around: 0 },
  loopStart: -1,
  loopExit: -1
}
{
  name: 'node',
  entryType: 'node',
  startTime: 0,
  duration: { around: 1163.1746279895306 },
  nodeStart: { around: 0 },
  v8Start: { around: 0 },
  bootstrapComplete: { around: 135.9222869873047, delay: 2500 },
  environment: { around: 0 },
  loopStart: { around: 135.9222869873047, delay: 2500 },
  loopExit: -1
}
{
  name: 'node',
  entryType: 'node',
  startTime: 0,
  duration: { around: 1165.5776199996471 },
  nodeStart: { around: 0 },
  v8Start: { around: 0 },
  bootstrapComplete: { around: 135.9222869873047, delay: 2500 },
  environment: { around: 0 },
  loopStart: { around: 135.9222869873047, delay: 2500 },
  loopExit: { around: 1165.6191799938679 }
}
assert.js:374
    throw err;
    ^
AssertionError [ERR_ASSERTION]: duration: 389.13076999783516 >= 250
    at checkNodeTiming (/home/****/node-v12.13.1/test/sequential/test-perf-hooks.js:67:7)
    at process.<anonymous> (/home/****/node-v12.13.1/test/sequential/test-perf-hooks.js:108:3)
    at process.emit (events.js:215:7) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}
Command: out/Release/node /home/****/node-v12.13.1/test/sequential/test-perf-hooks.js
[09:26|% 100|+ 2776|-   1]: Done
Makefile:296: recipe for target 'jstest' failed
make[1]: *** [jstest] Error 1
Makefile:316: recipe for target 'test' failed
make: *** [test] Error 2

ダメっぽいが、何がダメなのか判らないので、インストして終了。

OpenSSLの指定方法が不明だったので、
apt-get でインストした libssl-dev(1.0.1t-1+deb8u12)を使うことになる。

$ openssl version
OpenSSL 1.0.1t 3 May 2016

/etc/sudoersにコンパイルしたOpenSSLのパスを追加すればいいかな
Defaults secure_path=”/usr/local/openssl-1.0.2t/bin:
にすると
$ sudo openssl version
OpenSSL 1.0.2t 10 Sep 2019

やっぱりもっと新しい方がいいような
Defaults secure_path=”/usr/local/openssl-1.1.1d/bin:
OpenSSL 1.1.1d 10 Sep 2019
にしておこう。

ldconfigで書き換えてるし、rootも設定しておくか

export PATH=/usr/local/openssl-1.1.1d/bin:/usr/local/gcc-9.2.0/bin:$PATH


node.js インストール linux

Linux版をnode-v0.10.21-linux-x64.tar.gzをダウンロードできたけど、
困ったことにページにはインストールは説明がない。
仕方が無いので解凍してみる
# tar xzf  node-v0.10.21-linux-x64.tar.gz
# cd node-v0.10.21-linux-x64
中にREADME.mdが入っているので、
その通りにやってみるようとしたが
開発者自身のリストアのメモであるらしいことが判ったので・・・
おとなしくnpmからインストールすることにする。
※一度インストールできたら利用できそうな気もする。
※だが、大幅な変更があったら、やっぱりダメだろうなぁ~って気もする。
# yum   -y   install   openssl-devel
# git   clone     git://github.com/creationix/nvm.git ~/.nvm
# .   .nvm/nvm.sh
# nvm   install   0.10.21
/usr/bin/which: no shasum in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/tripwire/sbin:/root/bin)
######################################################################## 100.0%
Now using node v0.10.21
# node -v
v0.10.21
#

で終わり。
次にソース・デバッガ

# npm install node-inspector
・・・
長いので中略
・・・
node-inspector@0.5.0 node_modules/node-inspector
tqq async@0.2.9
tqq strong-data-uri@0.1.0 (truncate@1.0.2)
tqq glob@3.2.6 (inherits@2.0.1, minimatch@0.2.12)
tqq rc@0.3.1 (deep-extend@0.2.6, ini@1.1.0, optimist@0.3.7)
tqq express@3.4.4 (methods@0.1.0, range-parser@0.0.4, cookie-signature@1.0.1, fresh@0.2.0, debug@0.7.3, buffer-crc32@0.2.1, cookie@0.1.0, mkdirp@0.3.5, commander@1.3.2, send@0.1.4, connect@2.11.0)
mqq socket.io@0
インストールはうまくいったのか?
状況はサッパリ判らない。
nodeコマンドのパスを通したら動くようになったが、
やっぱりソースは見えなかった。
そんな訳で
# rm -rf node-*
ps.2018/10/16
node.js用のユーザを作り、
https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz
を再ダウンロード。解凍。
vi ~/.bash_profile
でPATHにnode-v8.12.0-linux-x64.tar.xzを解凍した先のbinディレクトリィを追加し保存&リロード。
. ~/.bash_profile
node
> process.env
いっぱい出てくる。
> .exit で退席
とりあえず、PATHだけでも動くらしい。
https://nodejs.org/en/docs/guides/getting-started-guide/
のapp.jsを動かしてみるが、127.0.0.1では他のPCから見れないので、
app.jsをルータが割り振ったLANのIPアドレスに変え、
firewall-cmd --get-active-zones
でpublicだったら・・・※違った場合はpublicの部分を差し替えてコマンドを実行
firewall-cmd --add-port=3000/tcp --zone=public --permanent
firewall-cmd --reload
でポートを解放してやっと見えるようになる。
ThorntailやAngularやWebStormを動かすにはまだ遠い。



top