2011年11月19日

【Ubuntu11.10 Update】Ubuntuソフトウェアセンター 表示不能を解決

 現在、CentOS6.0が日常の利用OSであるわけだが、CentOS6.0残念なことに企業サーバ用途が中心のRedhat Enterprise Linux6.0のクローンOSの為、端末用途で言うと不満が多い。その点、Ubuntuは、どちらかというと端末用途に強い構成のパッケージングとなっているので、必要によりそちらを使っている。
 以前、Ubuntu10.04を使っていた訳だが、そのまま同じものを使うのも芸がないので、mireが使い慣れたKDEを主環境としたKubuntuを導入していた。動画処理等では重宝している次第だが、11.10へのUpdateに気軽に応じた結果、トンデモない状態になってしまい暫く放置していた。

 その症状は、GNOME CLASICのデスクトップ画面が11.10の最新仕様に上書きされ制御出来なくなってしまい難儀したりしていたのだが、何よりも、表題にある「Ubuntuソフトウェアセンター」が、ソフト表示が読込で止まってしまい一切利用出来なくなったことには、何か見放された様でショックを受けていた。今回、その閉じた蓋をとる気になり、原因を探り解決出来たので、本稿にその手順を記述しておく。


 先ず解決の糸口は、「Ubuntuソフトウェアセンター」のコマンドを見つけることであった。見つけ方は、次の通り。
  1.  メニューの「設定」「Ubuntuソフトウェアセンター」で右クリックし「デスクトップに追加」を選択し、デスクトップ上にショートカットを作成する。
  2.  そのデスクトップ上に作成したショートカットにマウスカーソルを持っていくと現れる「スパナ」マークをクリックし「ubuntu-software-center.desktop アンコンの設定」ダイアログを開く。
  3.  その「ubuntu-software-center.desktop アンコンの設定」ダイアログ上の「アプリケーション」タブを選択し、「コマンド」欄にその記述「/usr/bin/software-center %u」が発見出来る。

 GUIアプリであっても、その起動は所詮この様なものなので、アプリの機能不全を調べるには同様にこの手順をとると良い。ただ、この手順はKDEのデスクトップでの操作なので、GNOME等他のものでは多少異なるので適宜見つけて欲しい。通常は「プロパティ」という項目が探せたらその中に「コマンド」欄を見つけることが出来るはずである。

 さて、次に見つけた「/usr/bin/software-center %u」をどう活かすかだが、試しにこれをコピペし、ターミナル(Konsole等)で実行して試るのである。その結果は次の通りである。



mire@mire-FMVNF75YD:~$ /usr/bin/software-center
2011-11-19 01:54:29,116 - softwarecenter.ui.gtk3.em - INFO - EM's: 0 0 0
2011-11-19 01:54:29,290 - softwarecenter.ui.gtk3.app - ERROR - could not initiate dbus
Traceback (most recent call last):
File "/usr/share/software-center/softwarecenter/ui/gtk3/app.py", line 1116, in setup_dbus_or_bring_other_instance_to_front
bus = dbus.SessionBus()
File "/usr/lib/python2.7/dist-packages/dbus/_dbus.py", line 219, in __new__
mainloop=mainloop)
File "/usr/lib/python2.7/dist-packages/dbus/_dbus.py", line 108, in __new__
bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 125, in __new__
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: //bin/dbus-launch terminated abnormally with the following error: No protocol specified
Autolaunch error: X11 initialization failed.


** (software-center:2984): WARNING **: コマンドライン 'dbus-launch --autolaunch=057fc415b27b8e296a293a5a0000000c --binary-syntax --close-stderr' が非ゼロの終了コード 1 で終了しました: No protocol specified\nAutolaunch error: X11 initialization failed.\n

** (software-center:2984): WARNING **: コマンドライン 'dbus-launch --autolaunch=057fc415b27b8e296a293a5a0000000c --binary-syntax --close-stderr' が非ゼロの終了コード 1 で終了しました: No protocol specified\nAutolaunch error: X11 initialization failed.\n
2011-11-19 01:54:29,961 - softwarecenter.db - ERROR - failed to add apt-xapian-index
Traceback (most recent call last):
File "/usr/share/software-center/softwarecenter/db/database.py", line 158, in _get_new_xapiandb
axi = xapian.Database("/var/lib/apt-xapian-index/index")
File "/usr/lib/python2.7/dist-packages/xapian/__init__.py", line 3408, in __init__
_xapian.Database_swiginit(self,_xapian.new_Database(*args))
DatabaseOpeningError: Couldn't detect type of database
2011-11-19 01:54:29,963 - softwarecenter.ui.gtk3.app - WARNING - database format '6' expected, but got '2'
Traceback (most recent call last):
File "/usr/bin/software-center", line 151, in
app = SoftwareCenterAppGtk3(datadir, xapian_base_path, options, args)
File "/usr/share/software-center/softwarecenter/ui/gtk3/app.py", line 225, in __init__
self._rebuild_and_reopen_local_db(pathname)
File "/usr/share/software-center/softwarecenter/ui/gtk3/app.py", line 381, in _rebuild_and_reopen_local_db
from softwarecenter.db.update import rebuild_database
File "/usr/share/software-center/softwarecenter/db/update.py", line 91, in
cataloged_times = pickle.load(open(CF))
cPickle.UnpicklingError: invalid load key, '#'.
mire@mire-FMVNF75YD:~$ /usr/bin/software-center

 何か意味不明ながら、なんと慣れ親しんだpythonエラーが飛び出した。Linux Distributionの管理ソフトにはPythonで書いているものが少くないので驚くには値しないが、同じエラーとでもmireはとても安心する。

 さて、このエラー情報をどう読むかだが、pythonエラーは、末尾から読むのが鉄則であるので、「cPickle.UnpicklingError: invalid load key, '#'.」では、'#'という値を取ってしまい起きたことが、その上の「 File "/usr/share/software-center/softwarecenter/db/update.py", line 91, in
cataloged_times = pickle.load(open(CF))」では、「 /usr/share/software-center/softwarecenter/db/update.py」の91行目の「cataloged_times = pickle.load(open(CF))」でそれが起きたことが分かる。

 これが判ったら、当然、「/usr/share/software-center/softwarecenter/db/update.py」を閲覧し、その前後を眺めて試る訳だ。

                /usr/share/software-center/softwarecenter/db/update.py


<前略>
CF = "/var/lib/apt-xapian-index/cataloged_times.p"
if os.path.exists(CF):
try:
cataloged_times = pickle.load(open(CF))
except EOFError as e:
LOG.warn("failed to read %s (%s" % (CF, e))
del CF
<後略>

 どう読むかだが、変数CFが表す"/var/lib/apt-xapian-index/cataloged_times.p"が、存在したら、問題の91行目の「cataloged_times = pickle.load(open(CF))」を実行していることがわかる。つまり、cataloged_times = pickle.load(open(CF))は、"/var/lib/apt-xapian-index/cataloged_times.p"を読んで想定外の記述'#'を読んで「cPickle.UnpicklingError: invalid load key, '#'.」を吐いたということが判る。

 後は、勝手な想像ながら、"/var/lib/apt-xapian-index/cataloged_times.p"の記述が新バージョンの「Ubuntuソフトウェアセンター」では内容が変更されているが、それがうまく更新されずに、しかも、その状態例外が、「/usr/share/software-center/softwarecenter/db/update.py」で想定していないものだったという解釈をすることになる。

 後は、対策をどうするかだが、正しい"/var/lib/apt-xapian-index/cataloged_times.p"をどこぞで引張ってこれたら解決なので、「cataloged_times.p」で、Net検索すると近いもの「Software Center doesnt stop to load」があった。

 そのAnswer部分を見ると次の様な答えがあった。



/var/lib/apt-xapian-index/cataloged_times.p seems to be corrupted, it is like to be recreated if you remove it:

sudo rm /var/lib/apt-xapian-index/cataloged_times.p

英語に余り自身はないが、「cataloged_times.pが破損したみたいだね。それを削除したら再生成されるよ。」と言っている様なので現存のcataloged_times.pは消しても問題なさそうなだけど取敢えず、可逆性を保つ為名称変更し、コマンドで起動を試す。



mire@mire-FMVNF75YD:~$ cd /var/lib/apt-xapian-index/
mire@mire-FMVNF75YD:/var/lib/apt-xapian-index$ sudo mv cataloged_times.p backcataloged_times.p
[sudo] password for mire:
mire@mire-FMVNF75YD:/var/lib/apt-xapian-index$ /usr/bin/software-center

 すると、あっさり正常に起動。メニューからの実行もOKであったし、新たにcataloged_times.pも生成された。しかし、cataloged_times.pを比べると全く違う。問題を起こした古い方を参考迄掲載しておく。もし、同じ症状の方が居たら、比べて試て欲しい。
                /var/lib/apt-xapian-index/cataloged_times.p (old file)


# This file contains the mapping between names of numeric values indexed in the
# APT Xapian index and their index
#
# Xapian allows to index numeric values as well as keywords and to use them for
# all sorts of useful querying tricks. However, every numeric value needs to
# have a unique index, and this configuration file is needed to record which
# indices are allocated and to provide a mnemonic name for them.
#
# The format is exactly like /etc/services with name, number and optional
# aliases, with the difference that the second column does not use the
# "/protocol" part, which would be meaningless here.

version 0 # package version
installedsize 1 # installed size
packagesize 2 # package size
app-popcon 3 # app-install .desktop popcon rank
catalogedtime 4 # Cataloged timestamp
display_name 5 # display name
pkgname 6 # Pkgname as value


 解決してしまうと当たり前だが、当初思ったよりも解決は簡単なものであった。多少の手間は掛るし、確信を持つにはNet検索が欠かせないが、大した知識がなくとも自力解決出来てしまう。これがオープンソースの利点である。もし同様のトラブルに見舞われたら、余裕のあるときに同様のことを試してみて欲しい。少なくともNet検索の助けがあれば「教えて君」にならなくても結構解決するものである。
タグ:Ubuntu11.04
posted by Mire at 05:40 | Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/235904703
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
月額見放題1,000円開始キャンペーンバナー(画像ありver)
紺碧の艦隊 ルパン三世 GREAT CHASE クリックプロモーション
<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリ
タグクラウド
ファン
利用中のオープンソース
最近のコメント
最近の記事
過去ログ
QRコード
レガシーなアプリはいかが?
Dell 法人のお客様ページ
  • 【法人様向け】デル、お得なキャンペーン情報
  • 法人のお客様向け ストレージソリューション
  • 法人のお客様向け ネットワークソリューション
  • 【SOHO法人様向け】デル・オンライン広告限定ページ
  • デル-個人のお客様ページ
  • 【個人のお客様向け】デル・オンライン広告限定ページ
  • オンライン広告限定キャンペーンページ
  • ソフトウェア&周辺機器 パソコン工房
    ツートップインターネットショップ(twotop.co.jp) マウスコンピューター/G-Tune
  • ×

    この広告は1年以上新しい記事の投稿がないブログに表示されております。