emerge -vauDN @worldした時にxorg関連が更新されてstartxでエラー吐いた時のメモ

startxをすると

Fatal server error:
no screens found

Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.

Server terminated with error (1). Closing log file.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

こんなのが出る
そういやなんかメッセージあったなと思いxorg-serverのebuildを見るとありました

/usr/portage/x11-base/xorg-server-1.12.2.ebuildから引用:

		ewarn "You can generate a list of all installed packages in the x11-drivers"
		ewarn "category using this command:"
		ewarn "	emerge portage-utils; qlist -I -C x11-drivers/"
		ewarn "or using sets from portage-2.2:"
		ewarn "	emerge @x11-module-rebuild"

なんかよくわからんがx11-drivers関連をリビルドすることにした
qlist x11-driversでとりあえず検索すると一番最初に参考になりそうなサイトがあった
https://jintoreedwine.wordpress.com/2008/10/03/gentoo-and-xorg-74/
これを見るに

# emerge portage-utils
# qlist -C -I x11-drivers/ | xargs emerge -v 

これをすれば簡単にx11-driversカテゴリのインストール済みのパッケージがリビルドできるみたいなのでやってみるとstartxした時のメッセージが変わった

awesome: error while loading shared libraries: libxcb-util.so.0: cannot open
shared object file: No such file or directory
xinit: connection to X server lost

waiting for X server to shut down Server terminated successfully (0). Closing
log file.

今度は何やらawesomeがエラーを吐いてる
ようはlibxcb-util.so.0がないらしいのでどれではいるのか調べる

# e-file libxcb-util.so.0

[I] x11-libs/xcb-util
        Available Versions:     0.3.9 0.3.8
        Last Installed Ver:     image-0.3.9(Tue 26 Jun 2012 11:19:53 PM JST)
        Homepage:               http://xcb.freedesktop.org/
        Description:            X C-language Bindings sample implementations
        Matched Files:          /usr/lib64/libxcb-util.so.0; /usr/lib32/libxcb-util.so.0; /usr/lib/libxcb-util.so.0;

どうやらこれで入るみたいだけどインストール済みなのでxcb-utilのログを見ることにした

>>> /usr/lib/libxcb-util.so.1.0.0
(中略)
>>> /usr/lib/libxcb-util.so -> libxcb-util.so.1.0.0
>>> /usr/lib/libxcb-util.so.1 -> libxcb-util.so.1.0.0
(中略)
<<<          obj /usr/lib/libxcb-util.so.0.0.0
<<<          sym /usr/lib/libxcb-util.so.0

するとこんな気になる文を見つけた
どうやらlibxcb-util.so.0が削除されてlibxcb-util.so.1に変わったらしい
それでも何となく

# emerge -va1 x11-libs/xcb-util

をしてみたけども相変わらずlibxcb-util.so.1がインストールされるので

追記後の内容(こちらの方法が一般的です)

もし追記前の方法をとっていたら/usr/lib/libxcb-util.so.0のシンボリックリンクを削除してください
でないとこの方法では引っかかりません

# revdep-rebuild

これを実行するだけです
すると

(上略)
[ 7% ]  *   broken /usr/bin/awesome (requires libxcb-util.so.0)
(下略)

こんなのが出ていればawesomeが勝手にリビルドされてライブラリの問題はなくなると思います

追記前の内容(こちらの方法はライブラリに互換性があって一時的なことなら問題無いと思います)

シンボリックリンクを貼ることにした

% cd /usr/lib
# ln -s libxcb-util.so.1.0.0 libxcb-util.so.0

これでstartxをしてみると無事awesomeが起動しました
今のところ何の問題もないです