우분투에서 svn 명령어 실행시 libneon-gnutls.so.27가 없는 오류 2011-08-15 03:47:02에 작성. 17,382번 읽힘.

나는 현재 리눅스를 2대 쓰고 있는데, 한대는 조금 깨끗한 우분투이고 한대는 두번째 리눅스를 써보면서 깐 것이라 조금 더러운 우분투이다. 그 조금 더러운 우분투가 얼마나 더럽냐면 svn 명령어를 써도 아래와 같은 오류가 날 정도로 더럽다.

svn: error while loading shared libraries: libneon-gnutls.so.27: cannot open shared object file: No such file or directory

아, 그렇다고 위의 오류가 나는 모든 리눅스가 더럽다는 뜻은 절대로 아니다. 아무튼 더러운 잡소리는 집어치우고 저 오류를 해결하는 방법을 찾아봤다.

libneon-gnutls.so.27 가 정말로 없을까?

가끔 저기 나오는 저 메시지가 구라틱할때가 있다. 메시지가 No such file or directory 가 나오더라도 10초정도 들여서 확인쯤은 해보자. 저 라이브러리 파일은 원래 /usr/lib 에 존재하므로 그 폴더로 가서 ls 를 해보자. 하면서 libneon 만 표시해주기 위해 grep 를 쓴다.

while@ubuntu:/usr/lib$ cd /usr/lib; ls -al | grep libneon
-rw-r--r--  1 root root   851362 2009-11-06 18:32 libneon-gnutls.a
lrwxrwxrwx  1 root root       24 2011-08-15 03:11 libneon-gnutls.so -> libneon-gnutls.so.27
lrwxrwxrwx  1 root root       17 2011-08-15 03:15 libneon-gnutls.so.27 -> libneon-gnutls.so.27.2.0

아마도 이렇게 되있을 것이다. 아닐수도 있다. 분명 아닐껀데, 그냥 대충 저런식으로 있다고 치고 지금 설명을 해줄 것이다. -> 로 표시된 부분은 심볼릭링크로 연결된 부분이다. 그냥 바로가기정도의 개념이라고 이해하면 된다. 우리가 필요로 하는 libneon-gnutls.so.27 이 저기 분명히 있다. 그런데 -> 로 되있다. 연결되있단 이야기이다. 결국 libneon-gnutls.so.27.2.0 을 가르키고 있는데 이 파일은 눈씻고 찾아봐도 없다. 그러기에 결국 libneon-gnutls.so.27 은 없는 파일이라고 경고가 출력 된 것이다.

libneon-gnutls 설치해보기

그래서 결국 궁극적인 목표는 저 파일을 되살리는 것이다. 기본적으로 저 파일명을 봤을때 저 패키지를 apt-get 으로 한번 설치 해보는게 보통의 순서일 것이고 그 방법은 아래와 같다.

apt-cache search libneon

을 해서 패키지들을 찾아본다. libneon25, libneon26, libneon27 등이 많이 나온다. 파일명이 so.27 이니까 27을 고르면 된다.

libneon27 - An HTTP and WebDAV client library
libneon27-dbg - Detached symbols for libneon27
libneon27-dev - Header and static library files for libneon27
libneon27-gnutls - An HTTP and WebDAV client library (GnuTLS enabled)
libneon27-gnutls-dbg - Detached symbols for libneon27 (GnuTLS enabled)
libneon27-gnutls-dev - Header and static library files for libneon27 (GnuTLS enabled)

여기서 컴파일용 패키지는 dev 이다. 그런데 2가지가 있다. 위에서 봤듯이 우리는 libneon27-gnutls-dev 가 필요하다.

apt-get install libneon27-gnutls-dev

로 설치한다.

그리고 이제 svn 을 쳐보자. svn help 를 입력하라고 경고메시지가 띄워지는가? 아직 끝이 아니다. 아무거나 svn co 한번 해보고 되는지 확인. 되면 성공. 여기서 끝.

아직 안되면 libneon27-dev 를 설치해보기

아직 똑같은 에러가 난다면 아마 /usr/lib 에 아직도 제대로된 그 .so.27 이 안깔렸을 것이다. 내가 그랬고 어찌저찌하다가 해결하기는 했다. 그래서 내가 한 해결 방법은 아래와 같다.

apt-get install libneon27-dev

위와 같이 설치하면, ls /usr/lib | grep libneon 를 해봤을때

lrwxrwxrwx  1 root root       16 2011-08-15 03:11 libneon.a -> libneon-gnutls.a
lrwxrwxrwx  1 root root       17 2011-08-15 03:11 libneon.so -> libneon-gnutls.so
lrwxrwxrwx  1 root root       17 2011-08-15 03:11 libneon.so.27 -> libneon.so.27.2.0
-rw-r--r--  1 root root   163768 2009-11-06 18:32 libneon.so.27.2.0

-gnutls 가 붙지 않은 파일들이 생긴다.
그럼 아래와 같이 해준다.

cd /usr/lib; ln -s libneon.so.27 libneon-gnutls.so.27

그리고 svn 을 작동시켜보면 될 것이다.

또 오류

포맷후 재설치를 하던가 svn 을 포기하길 바란다.

자바스크립트로 150분만에 만든 “1 to 50″ 게임 2011-08-08 18:26:16에 작성. 29,876번 읽힘.

여러 사람들이 여러 플랫폼으로 1 to 50 게임을 공부용으로 만드는 것을 보고 나도 자바스크립트로 만들어 봤다. 사용 라이브러리는 jQuery 이다. jQuery 는 약간씩 다른 자바스크립트 엔진을 가지고 있는 웹브라우저들간에, jQuery 전용 함수를 통해 최대한 호환성을 제공 해준다. 예를 들자면 본문의 스크롤 길이를 측정하는 것이나, 특정 오브젝트의 좌표 픽셀 값이 각각 브라우저들간에 자바스크립트에서 쓰는 변수나 방법이 다른 경우가 있다. 이런 것을 1개의 함수로 통합하여 제공해준다. 대부분의 자바스크립트 라이브러리가 그런 목적을 가지고 있다. 이 jQuery 를 이용하여 상당히 빠른 시간안에 크로스 플랫폼으로 만들어봤다. 이런 좋은 라이브러리가 없다면 자바스크립트로 만든다고 하더라도 상당히 오래 걸렸을 것이다. 혹은 실제 C언어나 Java, Objective-C 등의 언어로 만드는 것보다 더 느려질수도 있다.

아무튼 jQuery 든 뭐든, 웹버전의 게임을 만들때 특히 제일 뚜렷한 장점은 크로스 플랫폼이라는 것이다. Windows, Linux, Mac OS, Android, iPhone, 심지어 Windows Mobile에서 까지 모두 웹브라우저는 구동 될 수 있다. 옛날에는 휴대폰에서 WAP 기반의 웹페이지만 정상적으로 읽을 수 있었지만 최근 스마트폰과 PDA의 보급으로 인해 휴대폰에서도 PC용 웹사이트를 아무런 문제나 속도 저하 없이 읽을 수 있게 됐다. 그렇게 크로스 플랫폼의 장점으로 웹은 폭풍성장하고 있다.

게임 해보기

게임은 아래에서 바로 가능하다. http://1to50.zz.gg/을 웹브라우저로 직접 들어가거나 아이폰, 안드로이드 폰으로 들어가면 멀티터치도 지원되는 웹게임을 해볼 수 있다.