Problème: de nombreux threads tentent de résoudre le problème des packages cassés en utilisant les options ci-dessous. Cependant, mon principal problème est que les DEUX disponibles et les anciens disponibles n'existent pas. Je ne sais pas comment j'ai fini par les supprimer (si ce n'était pas à cause d'un paquet corrompu, à la place)
Sudo dpkg --clear-avail && Sudo apt-get update
Sudo dpkg-reconfigure -a
ekta@superwomen:~$ Sudo apt-get dselect-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
bluez bluez-alsa bluez-cups bluez-gstreamer cython dpkg dpkg-dev firefox
firefox-globalmenu firefox-locale-en flashplugin-installer
gnome-settings-daemon libbluetooth3 libdpkg-Perl liblcms2-2 Thunderbird
Thunderbird-gnome-support Thunderbird-locale-en Thunderbird-locale-en-us
unity-greeter
20 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/72.5 MB of archives.
After this operation, 15.7 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Preconfiguring packages ...
dpkg: error: failed to open package info file `/var/lib/dpkg/available' for reading: No such file or directory
E: Sub-process /usr/bin/dpkg returned an error code (2)
Sudo do-release-upgrade
dpkg: error: failed to open package info file `/var/lib/dpkg/available' for reading: No such file or directory
E: Sub-process /usr/bin/dpkg returned an error code (2)
--- from update manager ---
installArchives() failed: Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_IN.ISO8859-1"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Preconfiguring packages ...
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_IN.ISO8859-1"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Preconfiguring packages ...
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_IN.ISO8859-1"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Preconfiguring packages ...
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_IN.ISO8859-1"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Preconfiguring packages ...
dpkg: error: failed to open package info file `/var/lib/dpkg/available' for reading: No such file or directory
dpkg: erreur: impossible d'ouvrir le fichier d'informations sur le package `/ var/lib/dpkg/available 'pour la lecture: aucun fichier ou répertoire de ce type E: le sous-processus/usr/bin/dpkg a renvoyé un code d'erreur (2)
Je suis sur Ubuntu 12.04 LTS et voici le contenu de/var/lib/dpkg
ekta@superwomen:/var/lib/dpkg$ ls -l
total 9932
drwxr-xr-x 2 root root 4096 Apr 29 15:23 alternatives
drwxr-xr-x 2 root root 372736 May 4 20:08 info
-rw-r--r-- 1 root root 0 May 4 22:31 lock
drwxr-xr-x 2 root root 4096 Apr 13 2012 parts
-rw-r--r-- 1 root root 1975559 May 4 22:32 status
-rw-r--r-- 1 root root 1947927 May 4 21:39 status-bad
-rw-r--r-- 1 root root 1947932 May 4 20:48 status-old
-rw-r--r-- 1 root root 1947932 May 4 21:48 status_ekta
-rw-r--r-- 1 root root 1948728 May 4 20:48 status~
drwxr-xr-x 2 root root 4096 Apr 29 15:23 triggers
drwxr-xr-x 2 root root 4096 May 4 21:39 updates
status_ekta est une sauvegarde créée manuellement et status-bad indique que j'ai effectué cette manipulation dans le fichier d'état "principal" avant d'effectuer la sauvegarde (dans un dossier différent). Le fichier d'état devrait donc être correct.
J'ai également essayé la purge, autoremove - qui a essentiellement supprimé les packages corrompus, mais ne résout pas le problème principal de ne pas avoir la "liste" des packages disponibles.
Ma question:
1. De quoi dispose le fichier disponible? puis-je mettre à jour cela manuellement en utilisant dpkg -l d'une manière ou d'une autre?
2. Comment résoudre ce problème sans réinstallation complète et s'il existe des alternatives stables à apt-get (apt-get est UNIQUEMENT pour dpkg I supposer?) De quoi d'autre devrai-je vivre si je ne résout pas ce problème?
J'ai également désélectionné les dépôts ppa du gestionnaire de mise à jour et sélectionné le "serveur principal", dans le cadre du dépannage canonique ici , mais cela n'a pas aidé.
Voici ce que j'ai dans mon fichier "status" -
ekta@superwomen:/var/lib/dpkg$ cat status | grep "Status:" | sort -u
Status: deinstall ok config-files
Status: install ok installed
Il suffit de démarrer à partir du disque live d'Ubuntu et de copier le /var/lib/dpkg/available
fichier vers son chemin d'accès correspondant dans la partition où Ubuntu est réellement installé.
Démarrez à partir du disque live Ubuntu et cliquez sur l'option Ubuntu au démarrage.
Ouvrez maintenant le terminal en appuyant sur ctrl + Alt + T.
Sudo mount /dev/sdaX /mnt # Where /dev/sdaX is your installed Ubuntu's partition
Sudo cp /var/lib/dpkg/available /mnt/var/lib/dpkg
Après l'opération ci-dessus, démarrez à partir de votre disque dur. Maintenant ça va marcher.