2009年8月3日

TypeError: unsubscriptable object

不管用 yum 的啥功能,老跳出 TypeError: unsubscriptable object,真討厭。

[root@api yum.repos.d]# yum install -y openmotif
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* updates: ftp.tcc.edu.tw
* base: ftp.isu.edu.tw
* addons: ftp.isu.edu.tw
* extras: ftp.isu.edu.tw
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package openmotif.x86_64 0:2.3.1-2.el5 set to be updated
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File "/usr/share/yum-cli/yummain.py", line 229, in user_main
errcode = main(args)
File "/usr/share/yum-cli/yummain.py", line 145, in main
(result, resultmsgs) = base.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 696, in resolveDeps
CheckDeps, checkinstalls, checkremoves, missing = self._resolveRequires(errors)
File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 779, in _resolveRequires
thisneeds = self._checkInstall(txmbr)
File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 851, in _checkInstall
provs = self.tsInfo.getProvides(*req)
File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 432, in getProvides
result.update(self.getNewProvides(name, flag, version))
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

參考 http://bugs.centos.org/view.php?id=3481 ,原來只要執行 yum clean metadata 就好。

[root@api yum.repos.d]# yum clean metadata
Loaded plugins: fastestmirror
30 metadata files removed
12 sqlite files removed
0 metadata files removed

沒有留言:

張貼留言