วิธีการกู้คืนไดเรกทอรี“ dpkg” ที่ถูกลบไปแล้ว?


30

น่าเสียดายที่ฉันลบไดเรคทอรีdpkgไปแล้วในขณะที่ถอดกุญแจออก ฉันพิมพ์ผิด

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

ตอนนี้เมื่อฉันพยายามติดตั้ง / ถอนการติดตั้งแพ็คเกจมันแสดงให้ฉันเห็นข้อผิดพลาดดังต่อไปนี้

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

สิ่งที่ฉันควรทำตอนนี้?


คุณได้ลองคัดลอก (พยายามที่จะไม่ลบ) ไฟล์จาก Ubuntu Live CD ลงในระบบในฐานะ Superuser หรือไม่?
Dominic Hayes

คำตอบ:


60

root + rm+ -r= ภัยพิบัติ

ดังนั้นคุณคิดว่าอะไรถึงความพินาศ

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

คุณลบ 5 ไดเรกทอรีไฟล์สถานะ ฯลฯ ดังนั้นลองแก้ไขสิ่งต่างๆ ก่อนอื่นให้สร้างไดเรกทอรี:

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

กู้คืนข้อมูลสำรองบางส่วน:

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

ทีนี้มาดูกันว่า dpkg ของคุณใช้งานได้หรือไม่ (เริ่มอธิษฐาน):

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

หากทุกอย่าง "ตกลง" จากนั้นซ่อมแซมไฟล์ฐานของคุณด้วย:

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

ตอนนี้พยายามอัพเดทรายการแพ็คเกจ ฯลฯ :

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

ทีนี้ลองหายใจลึก ๆ วุ้ย. ทำls -l /var/lib/dpkgและเปรียบเทียบกับรายการด้านบน หาก-oldไฟล์บางไฟล์ไม่มีอยู่ไม่ต้องกังวลมันจะอยู่ที่นั่นพรุ่งนี้


1
ขอบคุณสำหรับการตอบสนอง ฉันทำตามขั้นตอนตามที่คุณกล่าวถึงที่นี่ แต่ในขณะที่ดำเนินการsudo dpkg -i dpkg * .debฉันได้รับข้อผิดพลาดเป็นdpkg: ข้อผิดพลาด: ไม่สามารถเปิดไฟล์ข้อมูลแพ็คเกจ `/ usr / local / var / lib / dpkg / status 'for reading: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Sambit

@Sambit Impossible คุณสามารถแก้ไขคำถามและเพิ่มผลลัพธ์ทั้งหมดได้หรือไม่
Braiam

@ambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directoryเป็นสิ่งเดียวที่ฉันได้รับ /usr/localไม่ได้ติดตั้งไฟล์ dpkg
Braiam

ปัญหาเดียวกันที่นี่อูบุนตูพยายามที่จะติดตั้งในแทนใน/usr/local/ /var/lib/dpkgวิธีที่จะทำให้มันชี้ไปที่/var/lib/dpkg?
bagustris

@bagustris ดาวน์โหลดแพคเกจจากที่เก็บ Ubuntu
Braiam

2

dpkgแพคเกจดี(ระบบการจัดการแพคเกจ Debian) ให้โครงสร้างพื้นฐานระดับต่ำสำหรับการจัดการการติดตั้งและการลบซอฟต์แวร์แพคเกจ Debian ดังนั้นการลบมันไม่ใช่ความคิดที่ดีและคุณสามารถกลับได้ -

การดาวน์โหลดไฟล์โดยใช้wget:

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

แยกไว้ในโฟลเดอร์ xxx

cd xxx
./configure
make
sudo make install

หวังว่ามันจะทำงาน


ฉันทำตามขั้นตอนเหล่านั้นแล้วและติดตั้งสำเร็จ แต่อีกครั้งฉันได้รับปัญหาเดียวกัน
Sambit

./configure ล้มเหลวหรือสำเร็จหรือไม่?
Sukupa91

รีสตาร์ทแล้วและฉันได้รับข้อผิดพลาดเดียวกับที่ระบุไว้ในคำถามของฉัน ซอฟต์แวร์ที่มีอยู่ในตัวเช่น "Ubuntu Software Center", "Update Manager" ก็ไม่ทำงานเช่นกัน
Sambit

เฮ้ฉันมีการปรับปรุงคำสั่งแรก wget ลองขั้นตอนเดียวกันเริ่มต้นด้วยคำสั่ง wget
Sukupa91

1
ได้รับข้อผิดพลาดcp: ไม่สามารถ stat `/ var / lib / dpkg / status-old ': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ฉันกำลังประสบปัญหาเหล่านี้เนื่องจากไดเรกทอรี "dpkg" ไม่มีอยู่ในระบบของฉัน
Sambit

1

กู้คืนระบบของคุณจากการสำรองข้อมูล คุณทำการสำรองข้อมูลใช่ไหม การสำรองระบบและข้อมูลของคุณเป็นสิ่งสำคัญในการจัดการกับสถานการณ์ที่ไม่คาดคิดเช่นข้อผิดพลาดผู้ใช้และความล้มเหลวของฮาร์ดแวร์ หากคุณไม่สามารถสร้างข้อมูลสำรองเช่นที่กล่าวถึงที่นี่คุณสามารถลองกู้คืนข้อมูลได้

ในอนาคตฉันแนะนำให้คุณสำรองข้อมูลเป็นประจำเพื่อหลีกเลี่ยงการสูญเสียข้อมูลที่ร้ายแรง และฉันสงสัยว่าคุณจะลืมว่าอย่างที่ @Braiam พูดว่า " root + rm + -r = disaster "


-2

เพียงทำตามขั้นตอนด้านล่างเพื่อให้แน่ใจว่าคุณสามารถกู้คืนไฟล์ได้อย่างน้อยapt-getหรือdpkgจะใช้งานได้

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

หลังจากการทดสอบนี้ว่ามันจะทำงานหรือไม่

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

หวังว่ามันจะทำงาน หากไม่แสดงความคิดเห็นด้านล่าง sudo + rm -rfเก็บไว้ในใจใช้ความระมัดระวังมากขณะที่เล่นกับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.