참고: 이 글은 Skype for Linux 4.2가 정식 출시되기 전에 작성되었습니다. 따라서 일부 내용은 더 이상 적용되지 않을 수 있으며, 지금은 모든 과정이 한결 매끄럽게 동작할 수 있습니다. 하지만 기본적인 문제 해결 원리는 여전히 유용하니 끝까지 읽어보시길 권합니다.
들어가며
얼마 전, 최신 우분투 버전인 13.04 'Raring Ringtail'에는 스카이프를 설치할 수 없다는 소문이 퍼졌습니다. 심지어 일부 사용자들은 Xubuntu 같은 Unity가 아닌 데스크톱 환경에서는 스카이프가 아예 동작하지 않는다고 지적하기도 했습니다.
그래서 저는 직접 이 소문을 검증해 보기로 했습니다. 만약 사실이라면, 스카이프를 정상적으로 실행할 수 있는 몇 가지 해결 방법을 함께 알려드리겠습니다. 다소 기술적인 내용이 포함되지만 차근차근 따라오시면 큰 도움이 될 것입니다. 그럼 시작해 보겠습니다.
스카이프 설치하기
우분투 소프트웨어 센터를 이용하거나, 공식 웹사이트에서 데비안(Debian) 설치 파일을 내려받아 설치할 수 있습니다. 주의할 점은 설치 파일이 32비트 버전만 제공된다는 것입니다. 그래서 64비트 시스템 사용자들은 약간 걱정할 수 있지만, 실제로 걱정할 필요는 없습니다.
다운로드한 파일을 더블클릭하면 우분투 소프트웨어 센터가 실행되면서 패키지 설치를 안내하고, 필요한 의존성 패키지들을 백그라운드에서 자동으로 처리해 줍니다. 최근에 Steam을 설치했던 과정과 비슷합니다.
명령줄에서 패키지를 설치하려면 아키텍처를 강제로 지정해야 합니다. 명령어는 다음과 같습니다:
sudo dpkg -i --force-architecture skype-ubuntu*.deb
스카이프 실행하기
패키지 설치가 완료되면 스카이프를 실행해 보세요. 아마 대부분 실행에 실패할 것입니다. 이제 무엇이 잘못되었는지 파악하기 위해 조금씩 문제를 추적해 봐야 합니다. 먼저 명령줄(터미널)에서 스카이프를 실행해 보겠습니다.
그러면 다음과 같은 오류 메시지를 볼 수 있습니다:
Segmentation fault (core dumped)
코어 덤프와 기본 디버깅
일반적으로 코어 덤프 파일은 현재 작업 디렉터리(cwd)에 저장됩니다. 해당 폴더의 내용을 확인해 보면 아마 코어 파일이 생성되지 않았을 겁니다. 예전에 소개한 GNU 디버거(GDB) 튜토리얼을 떠올려 보세요. 거기서 크래시가 발생한 애플리케이션의 메모리 코어를 수집하는 방법을 다뤘습니다. 쉘(shell) 제한 설정 때문에 애플리케이션이 코어 파일을 디스크에 저장하지 못하는 경우가 많습니다. BASH에서는 ulimit -a 명령으로 확인할 수 있습니다.
실제로 코어 파일 크기(core file size)가 0으로 설정되어 있는 것을 확인할 수 있습니다. 이 값을 변경해 보겠습니다:
ulimit -c unlimited
이제 스카이프를 다시 실행하면 코어 덤프가 정상적으로 수집됩니다.
다시 GDB의 힘을 빌려, 디버거 안에서 코어 파일을 분석해 보겠습니다. 우리가 확인하고 싶은 것은 크래시 직전에 실행된 함수들의 호출 스택(trace)입니다. 이것이 문제 해결의 방향을 잡아줍니다.
gdb `which skype` core
조금 진전이 보입니다. 스택이 손상되었을 수 있지만(스카이프는 특수하게 컴파일된 프로그램입니다), 크래시가 libGL 공유 라이브러리에서 발생했다는 사실을 알 수 있습니다. 엔비디아(Nvidia) 드라이버 탓으로 돌리고 싶은 마음이 들 수도 있지만, 그럴 필요는 없습니다.
원인은 의외로 간단합니다. 스카이프는 /usr/lib32 아래 mesa 디렉터리에서 libGL 라이브러리를 찾기를 기대하지만, 실제 시스템에는 /usr/lib/i386-linux-gnu 경로에 해당 라이브러리가 위치해 있습니다. 이런 사소한 경로 차이가 애플리케이션을 혼란스럽게 만드는 것입니다. 원인을 알았으니 이제 해결책을 적용해 볼 수 있습니다.
방법 1: 심볼릭 링크 생성
첫 번째 방법은 심볼릭 링크(symbolic link)를 생성한 후, ldconfig로 런타임 바인딩을 갱신하는 것입니다. 두 작업 모두 sudo 권한으로 실행해야 합니다.
방법 2: 라이브러리 경로 설정 파일 추가
심볼릭 링크 방법이 동작하지 않는다면, 다음 해결 방법을 시도해 보세요. 이 방법은 스카이프가 레거시 디렉터리나 심볼릭 링크를 탐색하는 대신, 시스템의 네이티브 라이브러리가 있는 실제 경로를 직접 사용하도록 강제합니다. sudo 권한으로 다음 파일을 생성합니다:
sudo touch /etc/ld.so.conf.d/skype.conf
파일 안에 아래 한 줄을 입력합니다:
/usr/lib/i386-linux-gnu/mesa/
그런 다음 ldconfig를 다시 실행합니다:
sudo ldconfig
스카이프 테스트하기
이제 정말 동작하는지 확인해 볼까요? 놀랍게도 잘 됩니다. 게다가 Xubuntu에서 말이죠! 성공입니다.
추가 참고 자료
아래 자료들도 도움이 될 것입니다:
- Ask Ubuntu에 정리된 스카이프 관련 다양한 팁과 트릭
- 유사한 증상을 다룬 Skype Community의 Ubuntu 13.04 스레드
- 시스템 문제 해결에 활용할 수 있는 추가 디버깅 및 해킹 가이드
마무리
이제 스카이프가 정상적으로 동작합니다. 상대적으로 덜 알려진 Xfce 데스크톱 환경(Xubuntu)에서도 마찬가지입니다. 저는 다른 우분투 변형 버전에서도 테스트했고, 동일한 결과를 얻었습니다. 공식 수정 사항이 배포될 때까지 스카이프를 사용할 수 있는 확실한 해결책을 손에 넣으신 셈입니다. 앞으로의 릴리스에도 동일하게 적용됩니다!
무엇보다 이 튜토리얼은 많은 것을 가르쳐 줍니다. 32비트와 64비트 소프트웨어의 미묘한 차이, 명령줄 또는 우분투 소프트웨어 센터를 통한 패키지 설치, 쉘 제한 변경, 애플리케이션 메모리 코어 수집, 디버거를 활용한 문제 추적, 시스템 설정 파일 수정 방법까지요. 스카이프 설치법을 요청하셨는데, 그 이상의 보너스까지 얻어가시길 바랍니다. 문제는 생각보다 훨씬 단순한 경우가 많습니다. 즐거운 국제 화이트 채팅 되시길 바랍니다.
감사합니다.