Bagaimana cara memulihkan direktori "dpkg" yang terhapus?

30

Sayangnya saya sudah menghapus direktori dpkg sambil melepas kunci. Secara tidak sengaja saya mengetik

root@sam:~$ rm -r /var/lib/dpkg

Sekarang ketika saya mencoba untuk menginstal / menghapus paket itu menunjukkan saya kesalahan berikut.

E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory)

Apa yang harus saya lakukan sekarang?

Sambit
sumber
Sudahkah Anda mencoba menyalin (Coba untuk tidak menghapusnya) file-file dari Ubuntu Live CD ke dalam sistem itu sendiri sebagai Superuser ??
Dominic Hayes

Jawaban:

60

root + rm+ -r= bencana

Jadi apa yang Anda kutuk untuk kebinasaan?

ls -l /var/lib/dpkg/
total 9964
drwxr-xr-x 2 root root    4096 nov 28 11:18 alternatives
-rw-r--r-- 1 root root      11 sep 18 14:08 arch
-rw-r--r-- 1 root root 2573807 nov 28 11:18 available
-rw-r--r-- 1 root root 2561322 nov 28 10:25 available-old
-rw-r--r-- 1 root root       8 abr 24  2013 cmethopt
-rw-r--r-- 1 root root     538 sep 25 17:24 diversions
-rw-r--r-- 1 root root     457 sep 25 17:24 diversions-old
drwxr-xr-x 2 root root  483328 nov 28 11:17 info
-rw-r----- 1 root root       0 nov 28 11:18 lock
drwxr-xr-x 2 root root    4096 mar 22  2013 parts
-rw-r--r-- 1 root root     135 abr 24  2013 statoverride
-rw-r--r-- 1 root root 2269113 nov 28 11:18 status
-rw-r--r-- 1 root root 2268870 nov 28 11:18 status-old
drwxr-xr-x 2 root root    4096 nov 28 11:18 triggers
drwxr-xr-x 2 root root    4096 nov 28 11:18 updates

Anda menghapus 5 direktori, file status, dll. Jadi, mari kita coba untuk memperbaikinya. Pertama, buat direktori:

sudo mkdir -p /var/lib/dpkg/{alternatives,info,parts,triggers,updates}

Pulihkan beberapa cadangan:

sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status

Sekarang, mari kita lihat apakah dpkg Anda berfungsi (mulai berdoa):

apt-get download dpkg
sudo dpkg -i dpkg*.deb

Jika semuanya "ok" maka perbaiki juga file base Anda:

apt-get download base-files
sudo dpkg -i base-files*.deb

Sekarang coba perbarui daftar paket Anda, dll .:

dpkg --audit
sudo apt-get update
sudo apt-get check

Sekarang, mari ambil napas dalam-dalam. Fiuh. Lakukan ls -l /var/lib/dpkgdan bandingkan dengan daftar di atas. Jika beberapa -oldfile tidak ada jangan khawatir itu akan ada besok.

Braiam
sumber
1
Terima kasih atas tanggapannya. Saya mengikuti langkah-langkah seperti yang Anda sebutkan di sini, tetapi ketika menjalankan sudo dpkg -i dpkg * .deb , saya mendapatkan kesalahan sebagai dpkg: error: gagal membuka file info paket `/ usr / local / var / lib / dpkg / status 'untuk membaca: Tidak ada file atau direktori seperti itu
Sambit
@Sambit Mustahil. Bisakah Anda mengedit pertanyaan Anda dan menambahkan hasil lengkap?
Braiam
@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directoryadalah satu-satunya yang saya dapatkan. /usr/localbukan tempat untuk menginstal file dpkg.
Braiam
Masalah yang sama di sini, Ubuntu mencoba untuk menginstal /usr/local/alih-alih pada /var/lib/dpkg. Bagaimana cara membuatnya /var/lib/dpkg?
bagustris
@bagustris unduh paket dari repositori Ubuntu.
Braiam
2

Paket Well dpkg(sistem manajemen paket Debian) menyediakan infrastruktur tingkat rendah untuk menangani instalasi dan penghapusan paket perangkat lunak Debian. Jadi menghapusnya bukan ide yang baik, dan Anda dapat mengembalikannya dengan

Mengunduh file dengan menggunakan wget:

wget https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.16.1.2ubuntu7.2.tar.bz2

Ekstrak dalam folder xxx.

cd xxx
./configure
make
sudo make install

berharap ini akan berhasil.

Sukupa91
sumber
Saya telah melalui langkah-langkah itu dan berhasil diinstal. tapi sekali lagi saya mendapatkan masalah yang sama.
Sambit
apakah ./configure gagal atau berhasil ??
Sukupa91
Sudah dimulai ulang dan saya mendapatkan kesalahan yang sama seperti yang disebutkan dalam pertanyaan saya. Juga perangkat lunak bawaan seperti "Ubuntu Software Center", "Update Manager" juga tidak berfungsi.
Sambit
hei saya telah memperbarui perintah pertama wget, coba prosedur yang sama mulai dengan perintah wget
Sukupa91
1
mendapatkan kesalahan, cp: tidak bisa stat `/ var / lib / dpkg / status-old ': Tidak ada file atau direktori tersebut . Saya menghadapi masalah ini karena direktori "dpkg" tidak ada di sistem saya.
Sambit
1

Pulihkan sistem Anda dari cadangan. Anda benar membuat cadangan? Mencadangkan sistem dan data Anda sangat penting untuk menghadapi situasi yang tidak terduga seperti ini (kesalahan pengguna) dan kegagalan perangkat keras. Jika Anda gagal membuat cadangan seperti yang dibahas di sini, Anda dapat mencoba pemulihan data.

Di masa depan saya menyarankan agar Anda membuat cadangan secara teratur untuk menghindari kehilangan data yang sangat besar. Dan saya ragu Anda akan lupa bahwa ketika @Braiam mengatakan " root + rm + -r = disaster "

Penatua Geek
sumber
-2

Cukup ikuti langkah-langkah di bawah ini, yakin Anda dapat memulihkan file, minimal apt-getatau dpkgakan bekerja.

sudo cp /var/backups/dpkg.status.0  /var/lib/dpkg/

sudo mv /var/backups/dpkg.status.0  /var/backups/status

sudo mkdir /var/lib/dpkg/updates

Setelah tes ini apakah akan berhasil atau tidak.

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

Semoga berhasil. Jika tidak berkomentar di bawah ini. Ingat, gunakan sangat hati-hati saat bermain dengan sudo + rm -rf.

Srudeep PA
sumber