SSブログ

sidでapt-get dist-upgradeしたら/usr/bin/Xがなくなった [プログラム]

私のようなバカなことをする人はいないと思いますが(またかよ)...

バカなこと、はじまりはじまり。

debianも新しくwheezyがディストリビュートされましたので、sid(unstable)を使っている私も、古いまま保持されているパッケージが増えてきたので、そろそろfull upgradeしたほうがよいかと思って、
apt-get dist-upgrade
してしまいました。しかし、それは悪魔の囁きでした。

システムをrebootしたら、Xが立ち上がりません。したがって、ブラウザはおろか、メールすら読めない状況です。大変困りました。
ただ、linux自体は立ち上がっていますので、ssh -Xでリモートでログインしてみたところ、Xのアプリケーションやブラウザ、メールなどは立ち上がり、リモートのXサーバで表示されることがわかりました。

となると、apt-getしてXサーバがおかしくなったことがわかります。どうしてXが立ち上がらないのでしょう... わかりました。/usr/bin/Xが「ありません」。なんだと!?

apt-getで再度dist-upgradeしてみると、確かに何かエラーを報告してきます。もしかしたら、明日になれば直っているかもしれません。ちょっと待ってみましょう。

2日目。
まだ直っていません。
で、私がやった今回最大の失敗は、「aptを使って自力でなんとかしよう」としたことです。素直に1週間くらいのの不便を受け入れればよかったのです。あれこれと試した挙句、aptで回復できないくらい「壊して」しまいました。
  • KDEを入れたら、依存関係でXもインストールされるんじゃないだろうか?
  • GNOMEを削除して入れ直してみたら?
  • Xを入れ直してみればいいんじゃないだろうか?
などなど。ともかく、短時間では直せなくなってしまったので、2日目の修復(破壊?)作業はここまでにせざるをえませんでした。

3日目。昨日のあの状況からの続きです。
Xアプリケーションをインストールして復旧しました。でもXサーバはだめです。ですので、別のマシンからリモートログインして、別のマシンへ表示している状況です。look and feelとか日本語の入力とか応答性など、大変問題があるのですが、ともかく最小限は動きますので、それでしのぎつつ復旧を進めています。

まずaptやaptitude、dpkg、dselectなどのひととおりのことはやりました。でもだめです。
再度入れ直してみても、やっぱりだめです。

エラーメッセージをよく読んで、パッケージのバージョンと依存関係を調べてみたら、
xserver-xorg
xserver-xorg-core
xserver-xorg-input-all
xserver-xorg-video-all
で問題が生じていました。
一番の問題は、xserver-xorg-coreのアップデートで、これが、xserver-xorg-input-allとABIがあわないようになっていました。最新のxserver-xorg-coreは、xserver-xorg-input-evdevなどいくつかのそれにあったABIのものと使わなければなりません。しかし、依存関係の記述の問題で、最新の xserver-xorg-coreがxserver-xorg-input-evdevか、xserver-xorg-input-allを要求し、xserver-xorg-input-allがxserver-xorg-coreの古いものを要求するため、おかしなことになっているようです。
これを直す方法がわかりません。

少なくともXサーバの復旧ではaptが使えなさそうなので、dpkgを使うことにします。
debianには、過去にリリースされたパッケージが保存されているサイトがあります。debianのsnapshotサイトです。
そこから、過去のバージョンを探して、上記バージョンの問題が起こらないものをインストールしましょう。

debianのsnapshotサイトへ行き、左側のパッケージの頭文字xから、xserver-xorg-coreを見つけます。ここにはすべてのバージョンの.debが残っています。で、最新バージョンからどこまで戻ればいいのか順に(あるいは2分法で)試していきます。
基本的に、wgetして、dpkg -iです。うまく入るようなら、バージョンの問題は起こっていないということで、OKです。
xserver-xorg-coreは去年のバージョンまで戻ったように思います。
xserver-xorg            1:7.5+8
xserver-xorg-core        2:1.7.7-12
xserver-xorg-input-all    1:7.6+2
xserver-xorg-video-all    1:7.6+2
それに対応するinputは
xserver-xorg-input-evdev    1:7.6+2
xserver-xorg-input-synaptics    1.2.2-2
ともかく、最新版ではないにしろ、これでXサーバ(xserver-xorg-core)がインストールできました。
で、これとコンフリクトしていた、xserver-xorg-input-allなどをdpkgで入れます。
適当なところで、apt-get updateとupgradeしました。

しかし、Xは立ち上がりませんでした。ハングアップするか、エラーで戻ってくるかです。
エラーが.xsession-errorsに書き込まれています(実は、これがわかるまでさらに1日かかったのですが...)。

と言うわけで4日目です。
.xsession-errorsには、共有ライブラリがないんだけど、とか、コマンドがないよん、などのエラーがでていました。ですので、
xinitして.xsession-errorsをみて、不足のライブラリやコマンドをサーチして、intstallする
というのを何回も何回も行います(apt-getよりもaptitudeを使った方がよさそうです)。そのうち、Xサーバは立ち上がるようになりました。
しかし、デスクトップがでません。とりあえず、twmをaptで入れると、twmウィンドウマネージャが使えるようになりました。ですので、Xサーバはちゃんと動いているようです。デスクトップシステムが壊れているようですが、どう復旧したらいいのかわかりません。
例によって、gnomeをインストールや再インストールした程度では動きません。

で、dpkg -lでインストール済みのパッケージを順次再インストールをかけていきます。
つまり、
dpkg -l | grep GNOME | grep '^ii' | while read i j k; do echo $j; aptitude install $j; aptitude reinstall $j; done
そうしたら、
gnome-menus

とそれに依存しているパッケージがエラーとなってでてきました。
他にも再インストールの可能性がありますので、スクリプトにしておきましょう。

reinstall-from-dpkg.sh:

grep '^ii' | while read i j k; do echo $j; aptitude reinstall $j; aptitude install $j; done
やはり再インストールすべきものがありました。libxcb-* です。
dpkg -l | grep libxcb | ./reinstall-from-dpkg.sh
さて、面倒になってきたので、.xsession-errorsから不足ライブラリをインストールさせましょう。
grep shared .xsession-errors | sed 's/^.*loading//' | sed 's/^.*libraries: //' | sed 's/\.so\..*$//' | sort | uniq | sed 's/-\([0-9][0-9]*\)$/\1/' | while read i;do dpkg -l | grep $i | ./reinstall-from-dpkg.sh; done
さらにアプレットも。
dgpk -l | grep gnome | grep appl | ./reinstall-from-kpkg.sh
エラーが減ってきました。ついに背景とパネルがでてきました。パネルからアプリが起動できます。
が、twmに相当する、いわゆるwindow managerがなさそうです。左上に全部のウィンドウが開き、タイトルバーが出ていません。
そういやgnomeのwindow managerって何なのでしょう? debian のgonme-sessionパッケージのdepからすると、以下のいずれかでした。
  • metacity
  • mutter
  • sawfish
これをdpkgでインストールされているものを調べるとmetacityでした。これを再インストールしました。
aptitude reinstall metacity-common metacity-themes python-metacity compiz-gtk gnome-themes-more libmetacity-private0
これで何とかタイトルバー付きのウィンドウがでてきました。ブラウザやメールなど確認して、今日の復旧は終わりです。

5日目。
さらに、.xsession-errorsのエラーをチェックして、不足ライブラリをインストールしていきました。まだ、エラーは残っています(設定ファイルの内容がおかしいなど)が、ともかく使える状態になったようです。
が、まだgwenviewの表示がダメダメで、動作しません。まだ先は長いようです。

以上、バカなことでした。
冒頭にも言いましたが、本当は、単に待てばよかったのです。素直に1週間くらいのの不便を受け入れればよかったのです。

ところで、「sid dist-upgrade xserver」でググると私と同じように、Xが完全に消えてるんだけど...というのもチラホラ。ただ、私のように「なんとかしようとして破壊」してしまうレベルのバカなことをやったのは、おそらく私だけのではないでしょうか。


共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。