GNU/Linux >> Belajar Linux >  >> Cent OS

Cara memulihkan dari database RPM yang rusak (membangun kembali database RPM)

Mengapa basis data rpm rusak

Ada beberapa alasan yang dapat menyebabkan korupsi basis data rpm. Seseorang tidak dapat secara tepat menentukan satu RCA untuk itu karena keterbatasan, tidak ada mekanisme untuk memantau korupsi basis data rpm.

– database rpm akan ditanyakan setiap kali Administrator/beberapa proses menjalankan perintah rpm apa pun.
– Bahkan selama transaksi yum, database rpm sangat berubah.
– Sebuah pointer kecil juga dapat menyebabkan kerusakan seperti itu.
– Jika LD_LIBRARY_PATH diatur ke beberapa nilai, bahkan basis data rpm akan rusak.
– Jika ada paket pihak ketiga yang diinstal yang menyebabkan perubahan yang tidak perlu dalam basis data rpm.
– Transaksi yang tidak lengkap juga dapat menyebabkan kerusakan tersebut.
– Jika partisi /var terletak pada volume SAN.

Jadi secara total, banyak faktor yang dapat dipertimbangkan untuk korupsi database rpm tersebut. Jika basis data rpm sering rusak, disarankan untuk sering mencadangkan basis data RPM melalui cron.

Perbaiki basis data RPM

Alat RPM menggunakan implementasi database kustomnya sendiri untuk memuat informasinya. Terkadang database itu bisa rusak; gejala termasuk klaim bahwa paket RPM yang diinstal hilang; atau upaya untuk memperbarui RPM hanya hang. Upaya query (rpm -q) beberapa paket mungkin gagal dengan kesalahan di bawah ini.

rpmdb: /var/lib/rpm/Packages: unexpected file type or format  
error: cannot open Packages index using db3 - Invalid argument (22)

Jika basis data RPM Anda macet atau rusak, Anda dapat mencoba memperbaikinya dengan perintah ini. Harap diperhatikan:Proses ini tidak dijamin berhasil. Anda harus masuk dengan hak pengguna super (alias "root") untuk langkah-langkah ini. Perintah dapat disalin dan ditempelkan langsung ke jendela terminal root.

1. Pastikan tidak ada proses RPM yang berjalan di sistem Anda. Gunakan perintah ps untuk mengidentifikasi mereka. Gunakan perintah kill untuk menghentikan proses "rpm" yang Anda temukan; "kill -9" mungkin diperlukan.

# ps -ef | grep-i rpm

2. Hapus file kunci yang digunakan RPM:

# rm -f /var/lib/rpm/__db*
# /usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

3. Jika Anda mengalami perintah “rpm” yang menggantung, coba lagi. Jika berhasil, Anda selesai. Jika tidak, lakukan Langkah #1 dan #2 lagi. Kemudian lanjutkan ke langkah berikutnya.

4. Buat cadangan basis data RPM Anda:

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Bangun kembali basis data RPM Anda:

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Coba verifikasi database rpm lagi.

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages
Catatan :Jika langkah pemulihan di atas gagal atau menimbulkan kesalahan, memulihkan direktori /var/lib/rpm dari cadangan sistem terbaru mungkin merupakan pilihan terbaik Anda. Ingatlah untuk tidak menimpa cadangan tar karena mungkin masih berharga.

6. Coba lagi perintah RPM Anda yang gagal.

Contoh perintah RPM untuk menanyakan, menginstal, menghapus, dan meningkatkan paket


Cent OS
  1. Bagaimana Cara Memulihkan Pekerjaan Latar Belakang Dari Shell Sebelumnya??

  2. Cara Menghubungkan ke Database MySQL dari Jarak Jauh Dari Komputer

  3. Membangun kembali database RPM yang rusak

  1. Cara Membuat Database di PostgreSQL

  2. Cara Menghapus Pengguna Dari Database MySQL di cPanel

  3. Cara Memulihkan File Paket rpm yang Dihapus (perpustakaan, file konfigurasi) di CentOS/RHEL 7

  1. Cara Mencadangkan Basis Data MySQL Tunggal dari Baris Perintah

  2. Cara Membuat Paket RPM dari Tarball

  3. Bagaimana Mengembalikan Database MySQL dari phpMyAdmin?