Comment récupérer le répertoire «dpkg» supprimé?

30

Malheureusement, j'ai supprimé le répertoire dpkg lors de la suppression du verrou. Par erreur j'ai tapé

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

Maintenant, lorsque j'essaie d'installer / désinstaller des packages, il me montre l'erreur suivante.

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

Qu'est-ce que je devrais faire maintenant?

Sambit
la source
Avez-vous essayé de copier (essayez de ne pas les supprimer) les fichiers d'un CD Ubuntu Live dans le système lui-même en tant que superutilisateur ??
Dominic Hayes

Réponses:

60

racine + rm+ -r= catastrophe

Alors, qu'avez-vous condamné à la perdition?

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

Vous avez supprimé 5 répertoires, le fichier d'état, etc. Essayons donc de corriger le problème. Créez d'abord le répertoire:

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

Récupérez quelques sauvegardes:

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

Voyons maintenant si votre dpkg fonctionne (commencez à prier):

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

Si tout est "ok", réparez également vos fichiers de base:

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

Essayez maintenant de mettre à jour votre liste de paquets, etc.:

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

Maintenant, respirons profondément. Phew. Faites ls -l /var/lib/dpkget comparez avec la liste ci-dessus. Si un -oldfichier n'est pas présent, ne vous inquiétez pas, il sera là demain.

Braiam
la source
1
Merci pour la réponse. J'ai suivi les étapes comme vous l'avez mentionné ici, mais lors de l'exécution de sudo dpkg -i dpkg * .deb , j'obtiens une erreur en tant que dpkg: error: impossible d'ouvrir le fichier d'informations sur le package `/ usr / local / var / lib / dpkg / status 'à lire: Aucun fichier ou répertoire de ce type
Sambit
@Sambit Impossible. Pouvez-vous modifier votre question et ajouter la sortie complète?
Braiam
@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directoryest la seule chose que je reçois. /usr/localn'est pas l'endroit pour installer les fichiers dpkg.
Braiam
Même problème ici, Ubuntu essayant d'installer dans /usr/local/au lieu de dans /var/lib/dpkg. Comment le signaler /var/lib/dpkg?
bagustris
@bagustris télécharge le package à partir des référentiels Ubuntu.
Braiam
2

Eh bien dpkg(le système de gestion de paquets Debian) fournit l'infrastructure de bas niveau pour gérer l'installation et la suppression des paquets logiciels Debian.

Téléchargement du fichier en utilisant wget:

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

Extrayez-le dans le dossier xxx.

cd xxx
./configure
make
sudo make install

espérons que cela fonctionnera.

Sukupa91
la source
J'ai suivi ces étapes et installé avec succès. mais encore une fois, je reçois le même problème.
Sambit
est-ce que ./configure a échoué ou a réussi ??
Sukupa91
Déjà redémarré et j'obtiens la même erreur que celle mentionnée dans ma question. Les logiciels intégrés comme "Ubuntu Software Center", "Update Manager" ne fonctionnent pas non plus.
Sambit
hey j'ai mis à jour les premières commandes wget, essayez la même procédure commencez avec la commande wget
Sukupa91
1
obtenir une erreur, cp: ne peut pas stat `/ var / lib / dpkg / status-old ': Aucun fichier ou répertoire de ce type . Je suis confronté à ces problèmes car le répertoire "dpkg" n'existe pas sur mon système.
Sambit
1

Récupérez votre système à partir d'une sauvegarde. Vous avez bien fait des sauvegardes? La sauvegarde de votre système et de vos données est essentielle pour faire face à des situations inattendues telles que celle-ci (erreur utilisateur) et une défaillance matérielle. Si vous n'avez pas réussi à créer des sauvegardes telles que celles décrites ici, vous pouvez tenter la récupération de données.

À l'avenir, je vous suggère de sauvegarder régulièrement pour éviter la perte catastrophique de données. Et je doute que vous oublierez que, comme @Braiam l'a dit " root + rm + -r = catastrophe "

Elder Geek
la source
-2

Suivez simplement les étapes ci-dessous, sûr que vous pouvez récupérer les fichiers, au moins apt-getou dpkgfonctionnerait.

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

Après ce test, cela fonctionnerait-il ou non?

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

J'espère que cela a fonctionné. Sinon, commentez ci-dessous. Gardez à l'esprit, soyez extrêmement prudent lorsque vous jouez avec sudo + rm -rf.

Srudeep PA
la source