GNOMEが起動しない


GNOMEが正しく起動しない。

tkp_JM6tqjqcaII.png

ある日突然再起動したらGNOMEが正しく起動しなくなった。下記のような感じ。

環境

ログの調査

journalctlでgnomeに関係するログを確認した所、下記のエラーを確認。

# journalctl | grep gnome
(一部抜粋)
Mar 07 14:00:01 localhost gnome-session-binary[10083]: GLib-CRITICAL: PCRE library is compiled without UTF8 support
Mar 07 14:00:01 localhost gnome-session[10083]: gnome-session-binary[10083]: GLib-CRITICAL: PCRE library is compiled without UTF8 support
Mar 07 14:00:01 localhost gnome-session[10083]: gnome-session-binary[10083]: GLib-CRITICAL: PCRE library is compiled without UTF8 properties support
Mar 07 14:00:01 localhost gnome-session-binary[10083]: GLib-CRITICAL: PCRE library is compiled without UTF8 properties support

Mar 07 14:00:02 localhost gnome-shell[10265]: PCRE library is compiled without UTF8 support
Mar 07 14:00:02 localhost gnome-shell[10265]: PCRE library is compiled without UTF8 properties support
Mar 07 14:00:02 localhost gnome-shell[10265]: PCRE library is compiled with incompatible options
Mar 07 14:00:02 localhost gnome-shell[10265]: PCRE library is compiled with incompatible options
Mar 07 14:00:02 localhost gnome-shell[10265]: JS ERROR: Error: Argument 'id' (type utf8) may not be null
                                                _getLocaleLayout@resource:///org/gnome/shell/misc/keyboardManager.js:137:42
                                                wrapper@resource:///org/gnome/gjs/modules/_legacy.js:82:22
                                                _init@resource:///org/gnome/shell/misc/keyboardManager.js:53:34
                                                wrapper@resource:///org/gnome/gjs/modules/_legacy.js:82:22
                                               _Base.prototype._construct@resource:///org/gnome/gjs/modules/_legacy.js:18:5
                                               Class.prototype._construct/newClass@resource:///org/gnome/gjs/modules/_legacy.js:114:32
                                               getKeyboardManager@resource:///org/gnome/shell/misc/keyboardManager.js:26:28
                                               _init@resource:///org/gnome/shell/ui/status/keyboard.js:345:33
                                               wrapper@resource:///org/gnome/gjs/modules/_legacy.js:82:22
                                               _Base.prototype._construct@resource:///org/gnome/gjs/modules/_legacy.js:18:5
                                               Class.prototype._construct/newClass@resource:///org/gnome/gjs/modules/_legacy.js:114:32
                                               getInputSourceManager@resource:///org/gnome/shell/ui/status/keyboard.js:786:31
                                               _init@resource:///org/gnome/shell/misc/inputMethod.js:23:36
                                               wrapper@resource:///org/gnome/gjs/modules/_legacy.js:82:22
                                               _initializeUI@resource:///org/gnome/shell/ui/main.js:180:19
                                               start@resource:///org/gnome/shell/ui/main.js:133:5

今回の場合運良くsyslogにログがありました。

「GLib-CRITICAL: PCRE library is compiled without UTF8 support」と言っており、なぜかPCREライブラリ(libpcre)がUTF8サポート無しでコンパイルされているという。

ちょっとlddでgnome-shellのリンク状況を確認。

# ldd /usr/bin/gnome-shell | grep pcre
	libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x00007f3fda6eb000) #<--★

/usr/local/lib/libpcre.so.1を参照していた。

原因

実はこの環境ではpcreをコンパイルでインストールされており、その際にUTF8 Supportのオプションを入れていなかった…というのが原因だった。

更にインストールされた際にldconfigコマンドを実施しなかった為、ldキャッシュが更新されずインストール直後は/usr/lib64以下にあるシステム標準のlibpcreを参照していて問題が発生しなかった。しかし再起動を行った際にldキャッシュが更新されてしまい、今回の問題が表面化した。その為原因となる操作から問題が発生するまで時間差があった。

対処方法

システムが用意したライブラリは/usr/localには配置されないので、とりあえず/usr/local/lib以下のlibpcre関連は削除しましょう。ただし後からインストールしたソフトウェアが使えなくなる可能性もあるので、要注意。

# rm /usr/local/lib/libpcre*