윈도우10 WSL 환경에서 Node.js 실습을 진행하고 있었다.


암호화 패키지인 bcrypt를 설치할 때 아래처럼 오류가 발생하였다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
$ sudo npm i bcrypt
> bcrypt@3.0.3 install /mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using needle for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.3/bcrypt_lib-v3.0.3-node-v64-linux-x64-glibc.tar.gz
node-pre-gyp WARN Pre-built binaries not found for bcrypt@3.0.3 and node@10.14.2 (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
gyp ERR! build error
gyp ERR! stack Error: not found: make
gyp ERR! stack     at getNotFoundError (/usr/lib/node_modules/npm/node_modules/which/which.js:13:12)
gyp ERR! stack     at F (/usr/lib/node_modules/npm/node_modules/which/which.js:68:19)
gyp ERR! stack     at E (/usr/lib/node_modules/npm/node_modules/which/which.js:80:29)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/which/which.js:89:16
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/isexe/index.js:42:5
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/isexe/mode.js:8:5
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:154:21)
gyp ERR! System Linux 4.4.0-17134-Microsoft
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding/bcrypt_lib.node" "--module_name=bcrypt_lib" "--module_path=/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding" "--napi_version=3" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v64"
gyp ERR! cwd /mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt
gyp ERR! node -v v10.14.2
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding/bcrypt_lib.node --module_name=bcrypt_lib --module_path=/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding --napi_version=3 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v64' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:962:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:251:5)
node-pre-gyp ERR! System Linux 4.4.0-17134-Microsoft
node-pre-gyp ERR! command "/usr/bin/node" "/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt
node-pre-gyp ERR! node -v v10.14.2
node-pre-gyp ERR! node-pre-gyp -v v0.12.0
node-pre-gyp ERR! not ok
Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding/bcrypt_lib.node --module_name=bcrypt_lib --module_path=/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding --napi_version=3 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v64' (1)
npm WARN nodebird@0.0.1 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bcrypt@3.0.3 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypt@3.0.3 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jipro/.npm/_logs/2018-12-26T13_06_58_125Z-debug.log
cs


구글링을 해 본 결과 여러가지 해결법이 존재하였지만, 전혀 먹히지 않았다.

내 경우의 해결법은 의외로 간단했다.



https://www.npmjs.com/package/bcrypt#if-you-are-submitting-bugsissues


First, make sure that the version of node you are using is a stable version.



노드의 버전을 안정 버전(stable)으로 설치하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sudo npm i bcrypt
 
> bcrypt@3.0.3 install /mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build
 
node-pre-gyp WARN Using needle for node-pre-gyp https download
[bcrypt] Success: "/mnt/c/Users/Jipro/workspace/nodejs-book/ch9/9.3/nodebird/node_modules/bcrypt/lib/binding/bcrypt_lib.node" is installed via remote
npm WARN nodebird@0.0.1 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
 
+ bcrypt@3.0.3
added 71 packages from 49 contributors and audited 2640 packages in 22.783s
found 0 vulnerabilities
cs


설치가 잘 되었다.



끝!

'개인 공부 > Node.js' 카테고리의 다른 글

윈도우10/우분투 Sequelize의 MySQL 포트 설정  (0) 2018.12.11

몽고DB를 실습하려고 우분투에서 4.0 버전을 설치하고

$ sudo service mongod start

타이핑 하고 엔터키를 딱 눌렀는데

 

mongod: unrecognized service

라는 에러를 뱉었다.

 

service라는 명령어는 알아보니 /etc/init.d에 해당 파일이 있을 때 동작하는 방식이다.

내 경우엔 mongod라는 파일이 존재하지 않았다.

 

구글링을 하면 MongoDB를 재설치해라, 또는 mongod 대신 mongodb를 타이핑해라. 등의 내용이 대부분이다.

 

$ sudo apt-get purge mongodb-org*

명령으로 삭제하고,

 

$ sudo apt autoremove

해 주고,

 

$ sudo rm -r /var/lib/mongodb
$ sudo rm -r /var/log/mongodb

디렉토리 날려주고...

다시 설치를 수십 번 반복.

 

이래도 안 되니 아래 방법을 시도.

$ sudo apt-get install --reinstall mongodb-org

 

하지만 이것 역시 안 됨.

mongodb라는 명령어는 MongoDB 2 버전을 깔았을 때 사용하는 커맨드인 듯 했다.

 

커맨드로 MongoDB를 설치하면 동작하는 것이 당연하다는 듯이 교재에도, 공식 매뉴얼에도 service 스크립트를 만들어라, 등록해라 라는 내용은 찾아볼 수 없었다.

 

답답해서 내가 찾아보니 이런 링크가 있었다.

https://github.com/mongodb/mongo/blob/master/debian/init.d

 

데비안 계열의 우분투에서 쓰는 init script의 내용이다.

$ sudo vi /etc/init.d/mongod

위의 내용을 붙여넣기 하고, wq로 저장했다.

 

$ cd /etc/init.d
$ ls -al

확인해 보면 방금 생성한 mongod 파일만 색상이 다르다. 권한이 다르다.

 

$ chmod 755 mongod

권한을 다른 파일과 동일하게 설정해 주었다.

그 후,

 

# service mongod start

또는

$ sudo service mongod start

하면

 

* Starting database mongod 					[ OK ]

라고 이쁘게 뜬다.

끗!!

아래의 링크를 참고했다.

https://superuser.com/questions/1126721/rebooting-ubuntu-on-windows-without-rebooting-windows/1347725


윈도우 CMD를 관리자 권한으로 실행하여 아래의 명령어를 입력한다.


net stop LxssManager
net start LxssManager


해 보았다.


C:\WINDOWS\system32>net stop LxssManager

LxssManager 서비스를 멈춥니다..

LxssManager 서비스를 잘 멈추었습니다.


C:\WINDOWS\system32>net start LxssManager

LxssManager 서비스를 시작합니다..

LxssManager 서비스가 잘 시작되었습니다.

'개인 공부 > 리눅스' 카테고리의 다른 글

윈도우10 우분투에서 MySQL 설정 파일 위치  (2) 2018.12.10

나처럼 윈도우10을 사용하면서 우분투(리눅스) 환경도 함께 사용하는 경우(WSL), 

우분투가 윈도우 위에서 돌아가는 듯 보이지만 엄연히 별개의 운영체제가 분리되어 동작하는 중이었다. (당시 이에 관한 이해가 부족)


가령, Node.js를 설치하는 방법도 윈도우에서는 https://nodejs.org/에서 인스톨러 파일(.exe 등)을 다운받아 설치한다고 대부분의 교재에서 확인할 수 있고,

우분투 등 리눅스에서는 npm 등 패키지 매니저를 이용해 설치하는 것이 선호되는 방법이다.


Node.js를 설치하면 윈도우의 기본 경로는 보통

C:\Program Files\nodejs

다.

 

윈도우에서 설치된 우분투 리눅스의 npm으로 설치한 경로는 내 경우엔

/usr/bin

이다.

 

따라서 윈도우용과 우분투용을 별개로 생각하고 설치해줘야 한다는 것이다.

 

MySQL의 경우에도 저번 글에 언급했지만, 각각 설치를 해주었는데 둘 다 기본 포트가 3306으로 설정되기 때문에, 먼저 설치한 것이 선점하면 나머지 하나가 켜지지 않는 문제가 생겼다.

 

설치 과정에서 포트를 변경해주는 것이 가장 편하고, 이미 설정했다면 설정 파일을 수정해서 변경해주면 된다.

(하나를 끄고, 사용하는 방법도 있지만 매번 켜고 끄는 것이 번거롭기 때문에 포트를 변경해주는 것이 나을 것이다.)

 

 

각설하고,

 

Node.js 실습 과정에서 난 처음부터 우분투 환경에서 실습을 진행하였다.

저번 글처럼 MySQL의 포트를 변경했는데, 윈도우는 그대로 3306을 사용하기로 하고, 우분투의 것을 3307로 변경했다.

데이터베이스 실습을 하면서 예제 데이터를 우분투의 MySQL에 만들어두었다.

 

Sequelize를 사용하는데 MySQL의 포트를 지정해주지 않았더니 기본 포트인 3306을 인식해서 윈도우용을 잡아 데이터가 나오지 않았다. (윈도우 MySQL에는 예제 데이터를 넣지 않았다.)

 

따라서, 포트를 변경하려면 Sequelize의 config/config.json 파일을 수정해야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
{
  "development": {
    "username""root",
    "password""1234",
    "database""nodejs",
    "host""127.0.0.1",
    "port"3307,
    "dialect""mysql",
    "operatorsAliases"false
  },
  ...
}

port만 추가해주니 잘 된다.

 

끝.

'개인 공부 > Node.js' 카테고리의 다른 글

윈도우10 WSL에서 bcrypt 설치 오류 해결 방법  (0) 2018.12.26

Node.js 실습을 하면서 윈도우10에 개발자 설정을 하고, 윈도우 스토어에 있는 우분투를 깔았었다.


CMD에서 bash 사용 가능하도록 설정을 해서 Visual Studio Code에서 실습을 진행하면서 터미널 창에서 bash를 사용했다.


데이터베이스 실습에 들어가서, MySQL을 설치하는 과정에서 윈도우 버전을 먼저 설치해서 실습하고,

그 다음 리눅스 버전을 모두 설치했는데 실행 오류가 났다.



# /etc/init.d/mysql start

 * Starting MySQL database server mysqld                                                                                No directory, logging in with HOME=/

                                                                                                                 [fail]

# mysql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)



오류 로그를 확인해 보았다.


# cat /var/log/mysql/error.log



오류 메시지 중 이런 내용을 발견했다.


2018-12-10T10:25:00.951106Z 0 [ERROR] Do you already have another mysqld server running on port: 3306 ?



MySQL 기본 포트인 3306 포트가 충돌이 나서 실행이 안 되는 것 같았다.

포트 변경은 my.cnf에서 port 부분을 변경하면 된다고 한다.


문제는 my.cnf의 경로인데, 처음에는 /etc/mysql/my.cnf 파일이 있길래 열어봤는데 아무 내용이 없다.


윈도우에서 설치한 우분투의 MySQL 설정 파일 경로는 /etc/mysql/mysql.conf.d/mysqld.cnf 이다.


[mysqld] 아래의 port를 3307로 변경하고, 저장.



# /etc/init.d/mysql restart

 * Stopping MySQL database server mysqld                                                                         [ OK ]

 * Starting MySQL database server mysqld                                                                                No directory, logging in with HOME=/

                                                                                                               [ OK ]


아까와 다르게 OK가 뜨며 정상적으로 데몬이 켜진다.



끝!

'개인 공부 > 리눅스' 카테고리의 다른 글

윈도우10에서 설치한 우분투 rebooting 방법  (0) 2018.12.13

+ Recent posts