CentOSのアップデートにはまる2009年09月25日 23時37分21秒

fileとpythonの更新でエラー

いつもは小型のAspireOneを使っているのですが、仕様書を書く必要から、一時的に日立 Flora 210W NL5(ASUS S5200のOEM)を整備中です。Lenovo SL400も持っていて用途的にはこちらの方が適切なのですが、これは作業場所に置きっぱなしにしてあるので仕方なく・・・

このノートPCにはWindowsXPの他にCentOSとVineLinuxをインストールしているのですが、ずいぶん長い間アップデートしていなかったため、つい出来心でアップデートし始めたのが運の尽き。はまりまくって、結局1日つぶしてしまいました。

一番はまったのはCentOSです。 CentOSは単に使えれば良いという位置付けでインストールしているので、特に凝ったことはせずに、ソフトウェアの更新もyumなどは使わずにアップデートマネージャにお任せしています。 そのアップデートマネージャが大量に更新を指示するのですが、エラーが出て、完了しません。地道にアルファベット順に絞ってアップデートを続けて、最後に残ったアップデート対象は以下の2つ。fileとpythonの両方で同じエラーがでます。

エラーログは以下です。

Component: pirut
Summary: TBe8ae967a sqlitesack.py:94:_read_db_obj:TypeError: unsubscriptable object

Traceback (most recent call last):
  File "/usr/sbin/pup", line 407, in _apply
    output = self.applyChanges(self.mainwin)
  File "/usr/lib/python2.4/site-packages/pirut/__init__.py", line 813, in applyChanges
    self.checkDeps(mainwin)
  File "/usr/lib/python2.4/site-packages/pirut/__init__.py", line 550, in checkDeps
    (result, msgs) = self.buildTransaction()
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 647, in buildTransaction
    (rescode, restring) = self.resolveDeps()
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 704, in resolveDeps
    for po, dep in self._checkFileRequires():
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 939, in _checkFileRequires
    if not self.tsInfo.getOldProvides(filename) and not self.tsInfo.getNewProvides(filename):
  File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 414, in getNewProvides
    for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
  File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 300, in getProvides
    return self._computeAggregateDictResult("getProvides", name, flags, version)
  File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 470, in _computeAggregateDictResult
    sackResult = apply(method, args)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 861, in getProvides
    return self._search("provides", name, flags, version)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 837, in _search
    for pkg in self.searchFiles(name, strict=True):
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 586, in searchFiles
    self._sql_pkgKey2po(rep, cur, pkgs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 470, in _sql_pkgKey2po
    pkg = self._packageByKey(repo, ob['pkgKey'])
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 413, in _packageByKey
    po = self.pc(repo, cur.fetchone())
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 68, in __init__
    self._read_db_obj(db_obj)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 94, in _read_db_obj
    setattr(self, item, _share_data(db_obj[item]))
TypeError: unsubscriptable object

Local variables in innermost frame:
item: name
db_obj: None

で、解決方法はこちらと同じでした。情報ありがとうございました。但し、pythonというかDBのエラーは出なくなりましたが結局pythonの更新はダウンロード関連で解決しないまま。これは放置ですね。