CentOS 5.3 yum upgrade TypeError: unsubscriptable object

image_pdfimage_print

วันนี้ผมได้ตรวจสอบเครื่องเซิร์ฟเวอร์ที่เป็นงานประจำ ตามปกติ และได้ทำการอัพเกรดเครื่อง เซิร์ฟเวอร์ ซึ่งรันระบบปฏิบัติการ CentOS 5.3 64 bit โดยใช้คำสั่ง yum upgrade เมื่อโหลดไปซักพักปรากฏว่าเกิด Error ขึ้นดังนี้ครับ

[root@centos ~]# yum -y upgrade
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosn3.centos.org
* updates: centosk3.centos.org
* addons: centosk3.centos.org
* extras: centosh3.centos.org
Setting up Upgrade Process
Resolving Dependencies
–> Running transaction check
—> Package perl-DBD-Pg.x86_64 0:1.49-2.el5_3.1 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 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():
TypeError: unsubscriptable object
[root@centos ~]#

สาเหตุน่ามาจาก การอัพเกรดเวอร์ชั่นก่อนหน้านี้ ที่เป็น CentOS 5.2 และ yum คงจำค่าคอนฟิกเดิม ดังนั้น เมื่ออัพมาเป็น CentOS 5.3 แล้ว จึงทำให้ yum ทำงานผิดพลาด

ทางแก้ก็คือ การทำความสะอาดให้กับ yum ครับ ดังนี้

[root@centos ~]# yum clean metadata
Loaded plugins: fastestmirror
29 metadata files removed
12 sqlite files removed
0 metadata files removed

หรือใช้คำสั่ง

[root@centos ~]# yum clean all

ก็จะได้ผลลัพธ์เดียวกันครับ

หลังจากนั้นให้ใช้คำสั่ง

[root@centos ~]# yum -y upgrade

ก็จะอัพเกรดได้ตามปกติแล้วครับ

Leave a Reply