본 페이지에서는 우분투 리눅스에서 파이어폭스 실행시에 Failed to load module "topmenu-gtk-module" 에러가 발생할 경우에 이를 해결하는 방법에 대해서 설명하고자 합니다.
문제의 상황
모든 문제의 문제의 상황을 확인하는 것부터 시작되어야 합니다. 원인을 찾아야 처방도 가능하기 때문입니다.
문제의 상황 1. 파이어폭스가 실행되지 않는다
문제의 상황은 Ubuntu 리눅스를 업그레이드한 이후에 발생했습니다. Firefox 웹브라우저를 실행하면 아무런 메시지 없이 웹브라우저가 열리지 않았습니다.
문제의 상황 2. 터미널에서 실행해면 모듈 로드 오류가 발생
터미널에서 "firefox" 명령을 입력하여 파이어폭스 실행을 시도하면 아래와 같은 메시지가 발생했습니다.
$ firefox Failed to load module "topmenu-gtk-module" |
문제의 상황 3. 로그에서 모듈 로드 오류 다수 발생
로그를 확인해보면 Failed to load module "topmenu-gtk-module" 라는 메시지가 상당히 많이 발견됩니다.
$ cat /var/log/syslog | grep topmenu-gtk-module
파이어폭스 실행을 여러번 실행했기 때문에 아래와 같은 메시지가 상당히 많이 발생하였습니다.
Failed to load module "topmenu-gtk-module" |
문제의 상황 4. GTK_MODULES 환경변수
GTK_MODULES 환경변수 값을 확인해봅니다.
$ env | grep GTK_MODULES
아래와 같이 "canberra-gtk-module:topmenu-gtk-module"로 되어 있습니다.
GTK_MODULES=canberra-gtk-module:topmenu-gtk-module |
결론부터 말씀드리자면, 문제를 해결한 이후에 GTK_MODULES 환경변수의 값이 달랐습니다.
GTK_MODULES | 환경변수 값 |
문제 발생 시 | GTK_MODULES=canberra-gtk-module:topmenu-gtk-module |
문제 해결 후 | GTK_MODULES=gail:atk-bridge:appmenu-gtk-module |
문제의 상황 5. /etc/X11/Xsession.d/99mate-environment 파일 내용 확인
상당량의 구글링을 통해서 문제의 원인은 /etc/X11/Xsession.d/99mate-environment 파일에 있다는 것까지 narrow down 할 수 있었습니다. cat 명령으로 해당 파일의 내용을 살펴보았습니다.
$ cat /etc/X11/Xssession.d/99mate-enviroment
해당 파일을 쉘스크립트 문법으로 되어 있었습니다.
# This file is sourced by Xsession(5), not executed. if [ "x$DESKTOP_SESSION" = "xmate" ] || [ "x$XDG_SESSION_DESKTOP" == "xmate" ]; then if [ -z "$GTK_MODULES" ] ; then GTK_MODULES="canberra-gtk-module:topmenu-gtk-module" else GTK_MODULES="$GTK_MODULES:canberra-gtk-module:topmenu-gtk-module" fi export GTK_MODULES # Disable GTK3 overlay scrollbars export GTK_OVERLAY_SCROLLING=0 # QT apps to use GTK styling export QT_STYLE_OVERRIDE=gtk # Workaround clutter issue (LP: #1462445) export CLUTTER_BACKEND=x11 fi |
스크립트의 내용을 살펴보면 GTK_MODULES 라는 환경변수가 없을 경우에는 "canberra-gtk-module:topmenu-gtk-module"로 환경변수를 설정해버리는 것을 알 수 있습니다. 앞서 정상 동작시의 환경변수 값과는 차이가 있음을 확인했습니다.
문제의 해결
문제를 해결하는 방법은 "/etc/X11/Xsession.d/99mate-environment" 파일을 삭제하는 것이었습니다. 실제로 이 파일을 최근의 Ubuntu 리눅스에서는 없는 파일입니다. 만약 지우는 것이 찝찝하시다면 파일 확장자만 추가하시면 됩니다.
$ cd /etc/X11/Xsession.d
$ mv 99mate-environment 99mate-environment.bak
위와 같이 조치한 이후에 재부팅하면 파이어폭스가 정상적으로 실행되는 것을 확인하실 수 있고 GTK_MODULES 환경변수를 확인해보면 변경된 것을 알 수 있습니다.
$ env | grep GTK_MODULES
GTK_MODULES=atk-bridge:appmenu-gtk-module
왜 그럴까?
아무래도 OS 업그레이드 과정에서 기존의 설정 정보를 그대로 유지하기 위해서 기존의 OS 버전에서 사용했던 99mate-environment 라는 파일을 실행해준 것으로 추측됩니다. 실제 제대로된 설정 파일은 90atk-adaptor 파일에 포함되어 있습니다.
실제로 90atk-adaptor 파일 내용을 살펴보면 실제 환경변수에서 확인된 gail 과 atk-bridge 값을 GTK_MODULES 환경변수에 추가해주는 스크립트를 확인하실 수 있습니다.
$ cat 90atk-adaptor
# -*- sh -*-
# Xsession.d script to set the GTK_MODULES env variable to load atk
#
# This file is sourced by Xsession(5), not executed.
add_module()
{
case :$GTK_MODULES: in
*:$1:*)
;;
*)
if [ -z "$GTK_MODULES" ]
then
GTK_MODULES=$1
else
GTK_MODULES=$GTK_MODULES:$1
fi
;;
esac
}
add_module gail
add_module atk-bridge
export GTK_MODULES
if [ -x "/usr/bin/dbus-update-activation-environment" ]; then
dbus-update-activation-environment --verbose --systemd GTK_MODULES
fi
도움 받은 기사
https://ubuntu-mate.community/t/gtk-message-failed-to-load-module-topmenu-gtk-module/4964/9
관련된 내용을 위의 페이지에서 많은 도움을 받았습니다. 만약 제가 설명드린 내용으로 해결되지 않을 경우 위의 글을 좀 더 살펴보시는 것도 도움이 될 수도 있겠습니다.
결론
이상으로 우분투 리눅스에서 파이어폭스 웹브라우저 실행시에 Failed to load module "topmenu-gtk-module" 에러 메시지가 발생하면서 파이어폭스가 종료되는 문제에 대한 해결 방법 설명을 모두 마칩니다.
요약하자면, 오래된 버전의 OS에서 사용하던 99mate-environment 라는 설정 스크립트가 실행되면서 실제와는 다른 GTK_MODULES 환경변수가 등록되어서 발생한 문제입니다.
99mate-environment 파일을 삭제하는 것으로 깔끔하게 문제를 해결할 수 있었습니다.
'SW개발 > 우분투 리눅스' 카테고리의 다른 글
Could not resolve host: github.com 해결 방법 (0) | 2022.05.28 |
---|---|
crontab이 제대로 실행되지 않는다면 crontab에서 지원하지 않는 명령일 수 있습니다. (pushd, popd 명령 사용 불가) (0) | 2022.05.26 |
우분투 리눅스에서 키보드 입력이 느린 문제 해결 방법 (USB 3.0 문제일 수 있습니다.) (0) | 2022.05.23 |
ssh 연결시 "Bad owner or permissions on /home/user/.ssh/config" 발생시 해결 방법 (0) | 2022.05.20 |
Ubuntu Linux 전체 언어 지원을 설치하지 못했습니다. 패키지 의존성을 해결할 수 없습니다. thunderbird-locale-en (0) | 2022.05.10 |
라즈베리파이 Ubuntu Linux 그림판 프로그램 설치 방법(KolourPaint) (0) | 2022.03.17 |
[Ubuntu] 수동 프록시 설정 방법 (git, docker, apt 등) (0) | 2022.03.14 |
라즈베리파이 우분투 리눅스에 구글 크롬(chrome) 설치 방법 + 크로미움(chromium) 설치 방법 (0) | 2022.03.10 |