본문 바로가기
배우고 있습니다/Node.js 개발

[Node.js 개발일지] java / node-gyp 설치 오류

by 유헤 2018. 12. 6.

node.js 에서도 java API 호출을 위한 java 모듈을 제공하고 있다.

install 자체는 간단하다.


 npm install java 


을 하면 되는데.. 이와 관련된 삽질 및 이슈를 정리합니다.ㅠㅠ


npm install java를 하기 전에 우선적으로 설치해야 할 모듈은


npm install node-gyp


이 모듈이 나를 정말로 속썩이게 했다.


node-gyp 는 의존성이 강해서, python과 gcc 버전에 민감하다. (node.js 자체도 민감)

python은 3.x가 아닌 2.x가 필요하다.




https://ice2732.wordpress.com/2016/01/26/centos-6-4-gcc-4-8-2/ 관련 내용이 있는 포스팅이다.

https://www.npmjs.com/package/java





이슈 1

Error: `make` failed with exit code: 2 


위 이슈가 발생하는 이유는,

해당 os에 설치된 gcc 버전이 낮아서 그렇다.


https://github.com/node-inspector/node-inspector/issues/753


깃허브에 올라온 내용을 확인해보면, gcc 버전을 4.8 보다 높은 버전이여야 한다.

나 역시도 4.4.1 이여서 해당 오류가 났었다.


최근 버전을 보면 

https://gcc.gnu.org/gcc-6/

6.5 까지 나와있는것을 확인할 수 있다..


gcc를 재설치를 하고 


https://sarc.io/index.php/miscellaneous/771-c-g-yum

https://stackoverflow.com/questions/36327805/how-to-install-gcc-5-3-with-yum-on-centos-7-2



yum install을 이용하여 설치하는 방법

http://wyseburn.tistory.com/entry/GCC-47-%EC%9D%B4%EC%83%81-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95

https://centos.pkgs.org/6/centos-sclo-rh/devtoolset-6-gcc-6.3.1-3.1.el6.x86_64.rpm.html


gcc -v 으로 확인하여 버전이 업그레이드 되었는지 확인한다.

gcc 설치 했는데도 버전이 그대로 일 경우, 


1. 

./bashrc 나 ./bash_profile 을 열어서


GCC_PATH=/opt/rh/devtoolset-3/root/usr/bin/gcc

ATH=$GCC_PATH:$PATH


등 gcc 변수를 등록해준다.


이렇게 해도 안될 경우에는


2.

/usr/bin 에 기존에 있는 gcc 가 먼저 인식 되서이므로

mv gcc gcc.back 등으로 바꿔둔뒤

ln -s /opt/rh/devtoolset-3/root/usr/bin/gcc /usr/bin/

으로 심볼릭링크 걸어주시고 다시 버전을 확인해보면 정상적으로 적용이 되어 있습니다

https://kldp.org/node/79559




이슈 2.

/usr/bin/ld: cannot find -ljvm



위 문제를 해결 했더니, 다음 난관이 등장했다. ㅜㅜ


위 이슈는 ljvm을 찾을 수 없다는 건데


gcc 버전을 더 올려야 하거나 ( node 버전이 높은 경우 )

ljvm 파일을 심볼릭 링크를 통해 설정해주어야 한다.


/usr/local/lib/에 들어가서 libjvm.so 의 파일이 있는지 확인 해보고

없을 경우 직접 jdk 디렉토리를 찾아 연결 해줘야 한다.


필자의 경우, 서버 이관 문제로 jdk도 생각없이 scp 로 복사해두었다가,

해당 파일이 문제되는걸 찾지 못했다.


ln -s /data/yj/jdk8/jdk1.8.0_131/jre/lib/i386/server/libjvm.so libjvm.so

으로 했는데, 여전히 같은 에러가 발생했다.


알고보니, jdk 설치 당시 i386 버전이 아니라 다른 버전을 설치했어야 했다ㅠㅠ

jdk 설치를 다시 하여


ln -s /data/yj/jdk1.8.0_131/jre/lib/amd64/server/libjvm.so libjvm.so

 로 해결할 수 있었다.


https://github.com/HyukjinKwon/hadoop-snappy/issues/2