GDB!!! ㅠㅠㅠ

니가 오류를 내면 어쩌니..!!!!!! ㅠㅠㅠㅠㅠㅠ%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-19-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-7-26-53

Advertisements

ubuntu에서 MATLAB을 설치했는데 java 관련 오류가 발생

이거 은근 골때린다. MATLAB R2016A를 설치 다 하고나서 실행을 하는데 MATLAB이 죽는다. 근데 이때 실행 안되는 것에 대한 답변으로 Octave를 쓰라는 답변 다는 것들 진짜 열심히 패고 싶었다만…

다행이도, 매틀랩은 친절해서 그런지 크래시 덤프를 남겨준다. 그걸 열어보니 참으로 어이없는 상황이 만들어졌다.

스크린샷_2016-06-29_15-26-54.png

Segmentation violation

…설치 하자마자 바로 첫 실행한 프로그램이 저러는 것에는 이유가 있을 것이라 생각했다. 그래서 일단 사실 확인을 위해 내용을 뒤져보니..

Virtual Machine     : Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

…저기요? java 1.8 쓰고 있는지가 몇년인데..?

사실 매틀랩은 자바 환경에서 GUI를 제공한다. 그래서 최소한 java 1.4 이상을 지원해 줘야 하는데, 시스템이 잘 지원 안해줄까봐 스스로도 자바 런타임을 가지고 있다. 근데 그게 꼬인거다.

stack trace도 도중에 잘렸지만, 불려진 바이너리의 위치가 매틀랩 내부에 있는 자바 런타임 코드랑 현재 돌아가는 window 시스템이랑 꼬인 내용들이 대부분이다.

그래서 일단 지금 내 우분투에 설치되어 있는 java의 jre 경로로 위치를 변경해 줘야겠다 싶었다.

스크린샷_2016-06-29_15-34-05

구동을 위해 필요한 것은 바로 위에 터미널에 경로에 있는 libjvm.so이다. 매틀랩은 저걸 못찾아서 Segmentation violation을 일으키는 것이었다.

나보다도 자바에 대해서 더 뛰고 날고 하는 사람들은 많겠지만… 저 파일에 대해서도 잠깐 적겠다.(내가 잊어버리지 않기 위해서) 저 파일은 Java Stored Procedure(자바 저장 프로시저)를 수행하기 위한 환경을 만들어주는 바이너리이다. 자바 개발자들 중에서 개발환경 설정할 때 경로 설정에 LD_LIBRARY_PATH를 설정해서 쓰는 분들 있는데 그 라이브러리에 들어있는 것이다. 경로는 운영체제, 아키텍쳐에 따라 다를 수 있지만 기본적으로는 [java home path]/jre/bin 경로에 있다.

그럼 저걸 어떻게 바꿔주느냐? 매틀랩 실행을 위한 경로로 들어가서 아래와 같이 MATLAB_JAVA 변수에 jre 경로를 입력하면 된다.

export MATLAB_JAVA=/usr/lib/jvm/java-8-oracle/jre

스크린샷_2016-06-29_15-43-40

그리고 나서 실행을 하면 제대로 실행되는 것을 확인할 수 있다.

스크린샷_2016-06-29_15-44-03

자바 기반의 GUI 환경에 익숙해지면 이런 것쯤이야 뭐 알아서 수정할 수 있겠지만… 난 그런 게 별로 없는 환경을 좋아해서 그런지 이거에 좀 삽질을 많이 했다.

Git -could not read from remote repository

git에 로컬 저장소를 만들고 나서 remote를 추가할 때, remote의 주소가 잘못 지정된 상태에서 push를 하려고 하면 저런 메시지가 나타난다. github에서 만들어서 하면 저런 걸 별로 보진 못하는데, 다른 원격 저장소를 이용하면서 가끔 주소 문제로 저렇게 오류가 나는 경우가 있다.

그럴 때에는 remote의 주소를 변경해 주면 된다.

현재 지정된 원격 저장소의 주소를 알고자 할 경우에는 다음 명령어를 입력한다.

$ git remote -v

원격 저장소의 위치를 설정해주고자 할 때에는 다음 명령어를 입력한다. 난 여기서 origin의 저장소 주소를 변경하고자 한다.

$ git remote set-url origin [저장소주소]

어려운 건 아닌데 원격 저장소에서 만들어준 주소 그냥 복붙하다가 저런 오류 만나면 당황해 하진 말아야지 하면서 정리해본다.