node-mecab-ya
node-mecab-ya copied to clipboard
설치는 성공한 것 같은데, 여전히 작동은 안됩니다.
"mecab-ya": "git+https://github.com/golbin/node-mecab-ya.git",
최신 버전을 설치한 다음에 테스트를 진행했습니다.
일단 install-mecab ko 로 설치를 하면 make
는 정상적으로 동작하는 것 같습니다.
그런데, 아래와 같은 메시지가 나오네요. 실제로 동작도 하지 않습니다.
echo To enable dictionary, rewrite /app/node_modules/mecab-ya/mecab/etc/mecabrc as \"dicdir = /app/node_modules/mecab-ya/mecab/lib/mecab/dic/mecab-ko-dic\"
To enable dictionary, rewrite /app/node_modules/mecab-ya/mecab/etc/mecabrc as "dicdir = /app/node_modules/mecab-ya/mecab/lib/mecab/dic/mecab-ko-dic"
make[1]: Entering directory `/app/node_modules/mecab-ya/tmp/mecab-ko-dic-2.0.1-20150920'
make[1]: Nothing to be done for `install-exec-am'.
/bin/mkdir -p '/app/node_modules/mecab-ya/mecab/lib/mecab/dic/mecab-ko-dic'
/usr/bin/install -c -m 644 model.bin matrix.bin char.bin sys.dic unk.dic left-id.def right-id.def rewrite.def pos-id.def dicrc '/app/node_modules/mecab-ya/mecab/lib/mecab/dic/mecab-ko-dic'
make[1]: Leaving directory `/app/node_modules/mecab-ya/tmp/mecab-ko-dic-2.0.1-20150920'
상황이 재현되면 좋을텐데요. 저 메시지 자체는 문제가 될만한 내용이 아닌것 같습니다. 실제로 동작하지 않는다는건 구체적으로 뭘하면 어떻게 되어야하는데 어떻게 된걸까요?
@tael 님, @golbin 님.
안녕하세요. 테스트한 에러 로그 등을 다시 상술해서 등록합니다.
지난주 문제 해결
지난주말에 당면했던 문제는 로컬 환경에서는 정상적으로 동작하는 코드가 heroku
환경에서는 동작하지 않는 이슈 였습니다. 확인 결과 heroku
에서는 빌드 당시에 포함된 것이 아니면 이후에 bash
로 추가 설치 /mecab-ya/bin/install-mecab ko
하는 것이 불가능하고.. 그래서 그런지 mecab 폴더가 생성되지 않는 것을 확인했습니다. 그래서 package.json 에 아래와 같이 코드를 추가했습니다.
"postinstall": "node_modules/mecab-ya/bin/install-mecab ko"
이렇게 진행하니 실제로 문제없이 설치도 되는 것 같고 폴더도 생성됐습니다.
이번주에 발생한 문제
그런데 이번주에는 LD_LIBRARY_PATH
라는 것을 찾지 못하는 문제가 발생하고 있습니다.
에러 코드
2016-10-29T09:42:06.245922+00:00 app[web.1]: cmd: 'LD_LIBRARY_PATH=/app/node_modules/mecab-ya/mecab echo Hello\\,world\\! | /app/node_modules/mecab-ya/mecab/bin/mecab' } undefined
2016-10-29T09:42:06.248727+00:00 app[web.1]: /app/index.js:115
2016-10-29T09:42:06.248729+00:00 app[web.1]: if (result.length > 0) {
2016-10-29T09:42:06.248729+00:00 app[web.1]: ^
2016-10-29T09:42:06.248730+00:00 app[web.1]:
제가 작업한 코드: [https://github.com/dusskapark/fevi-bot/blob/master/index.js] 를 보시면 mecab.nouns()
펑션을 사용하는데, 라이브러리 폴더 자체를 찾지 못하니깐 아예 mecab-ya
가 동작하지 않는 상태입니다.
더 이상한 것은 heroku
환경에서는 이 문제가 발생하는데... 로컬 환경에서는 정상적으로 작동한다는 점 입니다..
일단은 상세하게 에러를 올려드리는 것이 좋을 것 같아서... 이렇게 전달을 드립니다. 요청하시면 별도의 환경 구축없이 볼 수 있도록 제가 테스트로 구축한 heroku 에 접속해서 볼 수 있도록 계정 초청을 드리겠습니다.
감사합니다.
[https://github.com/dusskapark/fevi-bot/blob/master/index.js] 의 114번 라인에서 err 를 뱉어주고 있습니다..
음.. 혹시나 답을 기다리실것 같아서 말씀드리면, 저는 js도 node도 heroku도 잘 모릅니다. ( 심지어 이 프로젝트가 무슨 기능을 하고 어떻게 사용하는지도 모릅니다;;; ) 말씀하신 것 처럼 '로컬에서 되는데 헤로쿠에서 안된다'면 헤로쿠의 특성을 이해하고 조치를 취해야 할것 같은데요. 이 리파지토리의 이슈에서 안건을 진행하는 것이 맞는 것인지 의문입니다.
그냥 구글링 해보니까 헤로쿠에서는 뭔가 더 해야 하는 작업들이 있나봅니다. (전 봐도 잘모르겠네요) http://blog.firsthand.ca/2013/10/vendoring-binaires-on-heroku-example.html
...
Before deploying you will need to configure LD_LIBRARY_PATH, the path used by the dynamic loader to load libraries into dynamically linked executables. Otherwise, the following error is raised:
...
헤로쿠에 대해 익숙하시면 알고계신 내용일거라고 생각되는데요. 이 프로젝트의 목적에 맞는 것이라면 Heroku supports 정도로 진행되면 될것같은데, 그게 아니면 헤로쿠와 관련한 많은 분들이 볼수 있는 커뮤니티나, 스택오버플로우같은 곳에서 해결하는게 좋지 않을까 싶습니다.