آیا تا به حال حین آزمایش وب سرور Nginx در ماشین CentOS 7 در حین روند بهروز رسانی سیستم شما خاموش شده است؟ آیا پس از اجرای دستور "yum update" با پیام خطای "Error: rpmdb open failed" روبهرو شدهاید؟
این خطا به صورت زیر نمایش داده میشود:
error: rpmdb: BDB0113 Thread/process 2196/139984719730496 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
Error: rpmdb open failed
در این حالت، به نظر میرسد YUM در سیستم شما خراب شده است؛ بطوریکه دیگر نمیتوان هیچ یک از دستورات yum را اجرا کرد. در این آموزش، چگونگی رفع این مشکل بیان شده است.
این مطلب نیز ممکن است برای شما مفید باشد: دستور YUM برای مدیریت بستههای در سیستمهای RHEL و CentOS
بدین منظور، ابتدا با اجرای دستور زیر به صورت کاربر root، از پایگاه داده rpm یک نسخه پشتیبان تهیه کنید:
# mv /var/lib/rpm/__db* /tmp
سپس، دستور زیر را اجرا نمایید:
# yum clean all
اکنون، مجدداً بهروز رسانی را اجرا کنید:
# yum update
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates
Cleaning up everything
Cleaning up list of fastest mirrors
[root@server ~]# yum update
Loaded plugins: fastestmirror
base | 3.6 kB 00:00
epel/x86_64/metalink | 5.0 kB 00:00
epel | 4.3 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
(1/7): base/7/x86_64/group_gz | 155 kB 00:02
(2/7): epel/x86_64/group_gz | 170 kB 00:04
(3/7): extras/7/x86_64/primary_db | 191 kB 00:12
(4/7): epel/x86_64/updateinfo | 809 kB 00:21
(5/7): base/7/x86_64/primary_db | 5.6 MB 00:26
(6/7): epel/x86_64/primary_db | 4.8 MB 00:46
(7/7): updates/7/x86_64/primary_db | 7.8 MB 00:50
Determining fastest mirrors
* base: mirror.ehost.vn
* epel: repo.ugm.ac.id
* extras: mirror.ehost.vn
* updates: mirror.dhakacom.com
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-19.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-20.el7_3 will be an update
---> Package NetworkManager-adsl.x86_64 1:1.4.0-19.el7_3 will be updated
[...]
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel x86_64 3.10.0-514.26.2.el7 updates 37 M
python2-libcomps x86_64 0.1.8-3.el7 epel 46 k
replacing python-libcomps.x86_64 0.1.6-13.el7
Updating:
NetworkManager x86_64 1:1.4.0-20.el7_3 updates 2.5 M
NetworkManager-adsl x86_64 1:1.4.0-20.el7_3 updates 146 k
NetworkManager-bluetooth x86_64 1:1.4.0-20.el7_3 updates 165 k
NetworkManager-glib x86_64 1:1.4.0-20.el7_3 updates 385 k
NetworkManager-libnm x86_64 1:1.4.0-20.el7_3 updates 443 k
NetworkManager-team x86_64 1:1.4.0-20.el7_3 updates 147 k
python-perf x86_64 3.10.0-514.26.2.el7 updates 4.0 M
sudo x86_64 1.8.6p7-23.el7_3 updates 735 k
systemd x86_64 219-30.el7_3.9 updates 5.2 M
systemd-libs x86_64 219-30.el7_3.9 updates 369 k
systemd-sysv x86_64 219-30.el7_3.9 updates 64 k
tuned noarch 2.7.1-3.el7_3.2 updates 210 k
xfsprogs x86_64 4.5.0-10.el7_3 updates 895 k
Removing:
kernel x86_64 3.10.0-123.el7 @anaconda 127 M
Transaction Summary
================================================================================
Install 2 Packages
Upgrade 46 Packages
Remove 1 Package
Total download size: 84 M
Is this ok [y/d/N]: y
برای ادامه بهروز رسانی، y را تایپ نمایید. بهروز رسانی کامل شد.
اکنون میتوانید با استفاده از دستور زیر، نسخه پشتیبان را پاک کنید:
# rm -i /tmp/__db*
منبع:
ostechnix
تنها وقتی یک دستور به صورت کامل کاملا از کار میوفته که فایل باینری اون وجود نداشته باشه یا دچار آسیب (corrupted) شده باشه.
یک دستور میتونه شامل چندین زیر دستور باشه، مثل همین دستور yum که در این مقاله مورد بحث بوده.
ممکن هست یکی از زیر دستورات در روند کارکرد دچار مشکل بشه، اما زیردستور دیگهای بدون مشکل کار کنه؛ چرا که ممکنه اصلا دستورات ارتباطی با همدیگر نداشته باشند!
مثلا وقتی دستور docker pull کار نکنه، آیا دستور docker images کار نمیکنه؟