Невозможно установить какие-либо обновления через менеджер обновлений / apt-get upgrade

12

Я пользуюсь Ubuntu 12.04 последние несколько недель. Недавно я пытался загрузить и установить некоторые файлы через диспетчер обновлений. Он обнаружил несколько файлов, скачал их, но затем не смог их установить. Это дало ошибку:

installArchives() failed: (Reading database ... 
(Reading database ... 80%
dpkg: unrecoverable fatal error, aborting:
 reading files list for package 'libasn1-8-heimdal': Input/output error

Я пытался использовать, apt-get upgradeно была получена похожая ошибка:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  icedtea-6-jre-cacao icedtea-6-jre-jamvm openjdk-6-jre openjdk-6-jre-headless
  openjdk-6-jre-lib
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/34.6 MB of archives.
After this operation, 1,024 B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 80%
dpkg: unrecoverable fatal error, aborting:
 reading files list for package 'libasn1-8-heimdal': Input/output error
E: Sub-process /usr/bin/dpkg returned an error code (2)

Любая помощь будет принята с благодарностью. Заранее спасибо.

Изменить: Вот некоторая дополнительная информация, которая может быть полезна. Моя первоначальная проблема заключалась в том, что Ubuntu Software Center не открывался. Я обнаружил, что Диспетчер обновлений и Диспетчер пакетов Synaptic также не удалось открыть. Все они дали ошибку в соответствии с:

"installArchives() failed: dpkg: error: reading package info file '/var/lib/dpkg/available': Input/output errorError in function:"

После долгих поисков я решил эту проблему, поскольку менеджеры пакетов снова открылись. Когда я попытался загрузить и установить какие-либо обновления из диспетчера обновлений, я получил сообщение об ошибке в начале этого поста.

user64654
источник
Какие файлы вы скачали? Откуда? При чем тут менеджер обновлений?
независимо
Вы можете попытаться удалить (и позже переустановить) пакет в сообщении. Если это не удастся, вы можете попытаться очистить кеш.
Джон С. Грубер
Я все еще работаю над исправлением этого, у меня просто еще не было шанса. Я собираюсь попробовать инструкции, приведенные здесь: goo.gl/oOKqG, когда у меня будет такая возможность.
user64654
Почему вы решили установить 12.04, а не 14.04? В конце концов, вы сказали, что получили его пару недель назад, а Трасти уже около девяти месяцев.
Джон Скотт

Ответы:

16

Я исправил проблему с этими инструкциями .

Таким образом, решение заключается в следующем:

  1. Зайдите в /var/lib/dpkgкаталог
  2. Сделайте резервную копию statusфайла
  3. Редактировать statusфайл
  4. Поиск пакета, который дал ошибку
  5. Просто удалите строки из этого пакета (но разрешите все другие строки, которые относятся к другим пакетам, даже если они содержат поврежденный пакет в своих полях «Заменяет» или «Зависит»)

    [...]

  6. Сохранить изменения в statusфайле

  7. Бегать: sudo dpkg --configure -a
  8. Принудительно переустановить отсутствующие зависимости (потому что теперь их есть):

    sudo apt-get -f install
    

    Я думаю, что если сломанный пакет не зависит от какого-либо другого пакета (может быть редко), просто переустановите его:

    sudo apt-get install the_package
    
  9. Все нормально, теперь можно обновлять, обновлять или устанавливать новые пакеты!

Следует отметить, что у меня было несколько отличий от решения, приведенного там. Файл статуса был нелегко редактировать (так как это важный файл и никогда не предназначался для редактирования). Любые изменения, сделанные там, должны быть сделаны с осторожностью, и файл должен быть сохранен перед тем, как вы сделаете какие-либо изменения.

Мне пришлось повторить шаги 4-8 три раза (каждый раз ошибка будет одинаковой только с другим пакетом). Наконец, когда все пакеты были удалены, я смог их переустановить, и это исправило мою проблему.

user64654
источник
Как вы узнали, какие пакеты вызвали ошибку?
Seanny123
@ Seanny123 предыдущая попытка apt-get install могла бы показать ошибку. Например, в моем случае у меня есть «список файлов для чтения пакета« manpages-dev »: ошибка ввода-вывода» перед возвратом приглашения. В файле состояния я искал «Package: manpages-dev» и удалил строки до следующей строки «Package:». После этого мне пришлось выполнить руководство «apt-get install manpages-dev», а затем мой предыдущий сбой «apt-get dist-upgrade» завершился без ошибок. (Спасибо user64654!)
Питер Хансен
2

Может случиться так, что диск поврежден inode.

С live CD запустите эту команду

sudo fdisk -l

обратите внимание на диск и раздел, потом его можно /dev/dsb1 починить:

sudo fsck -y /dev/sdb1

Перезагрузитесь и вернитесь в систему

sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade
Гийом
источник
Я сделал fsck через, sudo shutdown -rF nowи, ничего больше, все снова было хорошо.
Клоус