CentOS에서 가끔 yum을 사용하다가 갑지가 yum이 이상하게 사용중에 에러가
발생할 때가 있다. yum은 rpm 패키지를 관리하는데 이 때 rpm 패키지에 관련된 정보를 사용하는 데이터베이스에 이상이 생겨서 발생하는
문제라는 것을 CentOS 커뮤니티에서 찾아볼 수 있었다. 다음 링크에가면 이 문제애 대한 thread를 확인할 수 있다. http://www.centos.org/modules/newbb/viewtopic.php?topic_id=20237
해결 방법은 기존의 rpm 데이터베이스를 삭제하고 다시 rebuild 해주면 되는 것이다. 아래 순서대로 yum clean을 하고 rpm 데이터베이스 삭제후 rpm 데이터베이스를 리빌드하고 마지막으로 yum update를 해주면 다시 yum을 이용해서 정상적으로 패키지 관리를 할 수 있게 된다.
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 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
해결 방법은 기존의 rpm 데이터베이스를 삭제하고 다시 rebuild 해주면 되는 것이다. 아래 순서대로 yum clean을 하고 rpm 데이터베이스 삭제후 rpm 데이터베이스를 리빌드하고 마지막으로 yum update를 해주면 다시 yum을 이용해서 정상적으로 패키지 관리를 할 수 있게 된다.
yum
clean all
rm
-rf /var/lib/rpm/__db*
rpm
--rebuilddb
yum
update
'Linux > CentOS' 카테고리의 다른 글
Gmail for CentOS (0) | 2012.04.03 |
---|---|
DNS 설정 (0) | 2012.03.30 |
Install Clam AntiVirus to protect from virus (0) | 2012.03.09 |
Linux용 백신관리자 (0) | 2012.03.09 |
웹 DDOS 공격 방어(mod_evasive) (0) | 2012.03.09 |