dpkg - проблемы и решения.

Изображение пользователя Chibiko.

У меня очень старенький винт, потихоньку сыплется. Поэтому часто бывают всякие "неожиданности". Но это не всё. Часто при обновлениях случается чт-то от вас не зависящее, и не всегда этому виной кривые руки. Бывает, что dpkg спотыкается обо что-либо, и дальше всё.. ничего обновить в системе, установить или удалить вы через aptitude (apt-get) вы не сможете... Как вариант, можно посмотреть список зависимостей, и удалять всё ручками, но я считаю что это не айс - удалять каждый файлик, править конфиги... Может это и true linux way, но увы, сейчас уже третье тысячелетие, и я отказался от такого извращения. Поэтому мы просто попытаемся починить dpkg.

Итак, приступим:

dpkg — это программное обеспечение, являющееся основой системы управления пакетами в Debian. dpkg используется для установки, удаления, и получения информации о .deb пакетах.
Подробнее смотрите в Wiki, я лишь опишу некоторые проблемы, встречающиеся при обработке пакетов.

1) Что поможет в 80% случаев:

Зачастую достаточно просто запросить из хранилища(репозитория) новый список пакетов:

sudo aptitude update

sudo aptitude install -f

И установить обновления:

sudo aptitude safe-upgrade

Бывает что проблема - это плохо сконфигурированный пакет. Поэтому мы просто её ещё раз переконфигурируем:

sudo dpkg --configure -a

2) Остальные "сложные" случаи:

Для остальных случаев придётся переконфигурировать всё:
sudo dpkg-reconfigure -a
Осторожно, может занять много времени 8)

Или именно этот пакет:
sudo dpkg-reconfigure --default-priority %pack_name%

Ну бывает что нужно переконфигурировать его, даже если он поломан или неисправен:

sudo dpkg-reconfigure --force %pack_name%

!ВНИМАНИЕ! Использовать осторожно!

Если и это не помогает, то смотрим что именно произошло, не боимся гуглить и так далее, например у меня было вот что:

3) Конкретные случаи:

1) Падение dpkg - /var/lib/dpkg/available: Input/output error.

E: Sub-process /usr/bin/dpkg returned an error code (2)
dpkg: при работе функции buffer_read(fd) произошла ошибка: копирование файла информации /var/lib/dpkg/available: Input/output error

Дааааа... Как всегда косяки, ну ничего, где-то мы такое видали. Минутный поиск по форуму сообщества и на глаза вылазит лекарство:

sudo dpkg --configure -a
либо
sudo apt-get install -f && sudo dpkg --configure -a

К сожалению никаких результатов в моем случае это не дало.
Ищем дальше. Гугл толком ничего не даёт, найдены пару вариантов с англоязычного форума линукс. К сожалению не помогает. Ну ладно значит будем думать головой...
Идём по адресу /var/lib/dpkg/ находим файл available, пытаемся открыть - filed. Осматриваемся в папке,и видим интересный файл под названием available_old.
Значит, при обновлении пакетов была сделана резервная копия этого файла со старым содержимым. Открываем, копируем содержимое , удаляем available и создаём на его месте новый файл с тем же названием. Вставляем содержимое из available_old.
Проверяем обновления

sudo apt-get update

есть. Запускаем

sudo apt-get upgrade

и о чудо, всё работает. Теперь можно и продолжать настройку системы. Также возможен другой вариант лечения dpkg.
sudo dpkg --clear-avail #удалить информацию о доступных пакетах.

далее

sudo apt-get update #обновление информации о пакетах.

но это при условии, что ваш файл не окажется битым, как в моём случае.

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

apt-get remove scim

Взято с тыц'а


2) Удалил пакет руками - теперь aptitude ругается, что делать?

dpkg: не удалось обработать параметр %pack_name% (--configure):
подпроцесс post-installation script возвратил код ошибки 1
При обработке следующих пакетов произошли ошибки:
%pack_name%
E: Sub-process /usr/bin/dpkg returned an error code (1)

В таком случае можно удалить пакет через dpkg:

dpkg --purge %pack_name% #удалит всё что о нём было известно вместе с ним 8)

3) в списке файлов пакета %pack_name% отсутствует завершающий символ новой строки

aptitude install -f
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Чтение информации о расширенных состояниях
Инициализация состояний пакетов... Готово
(Чтение базы данных ... dpkg: невосстановимая ошибка, прекращение работы:
в списке файлов пакета %pack_name% отсутствует завершающий символ новой строки
E: Sub-process /usr/bin/dpkg returned an error code (2)
Не удалось установить пакет.  Попытка восстановить:
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Чтение информации о расширенных состояниях
Инициализация состояний пакетов... Готово

Я гуглил много, оказалось решение очень простое:
sudo kate /var/lib/dpkg/status

После чего Ctrl+F - вводим в поиск %pack_name% и удаляем всё что с ним связано, после чего делаем пункт 1) и вуаля, dpkg вернулся из мёртвых, Ressurect III lvl окрыляет!

ПОДРОБНАЯ ИНФОРМАЦИЯ о dpkg на русском можно глянуть тут: тыц

Если нада, можно сюда скопипастить, но не думаю что нужно...

Проапгрейдил, исправил бОльшинство орфографических ошибок, привёл всё к единому формату. Любые дополнения приветствуются. В данный момент ищутся любые другие ошибки в dpkg, которые решаются способами, которых тут ещё нет.

Ну и спасибо баламутику за баламутивание 8)

Комментарии (12)

0
fox4 - 5 Ноябрь, 2009 - 16:39
Изображение пользователя fox4.

Ну это нужно в первую очередь тебе самому - инфу на винте можно случайно убить записи на бумажке потерять а блог это электронный дневник который всегда сохранят заботливые админы плюс описывая свои проблемы и их решения на этом ресурсе ты помогаешь новичкам осваивать эту замечательную ОС ведь намного проще глянуть решение той или иной проблемы на этом ресурсе чем пол дня гуглить по всему инету да и не у всех траффик безлимитный особенно в глубинке так что даже и не сумлевайся. А при наборе хорошего и провереного материала по этой проблеме я думаю dm с balamutikom эту статью и в подшивку внесут например в раздел "Установка и восстановление" или ещё куда...

0
balamutick - 11 Ноябрь, 2009 - 14:52
Изображение пользователя balamutick.

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

Вот, что улучшить, что-то в голову не прийдёт...

0
Chibiko - 12 Ноябрь, 2009 - 09:48
Изображение пользователя Chibiko.

ам.... Как только скажите что - будем пилить и пилить ипилить до конца.. Пока исправил все орфографические ошибки русского языка что увидел и привёл статью к единому формату 8)

0
Гость - 6 Апрель, 2010 - 18:00

Помогло при реальной поломке...)) Спасибо большое!

0
Жюстина - 7 Апрель, 2010 - 16:48
Изображение пользователя Жюстина.

А у меня вопрос, я вот удалила файлы базы данных пакетов установленных (експерементировать сильно люблю), в результате ничего не могла потом установить, замкнутый круг зависимостей получился в результате, это можно как то починить? (я это починила переустановкой кубунты :D приурочив к нему ещё и эксперимент с ядром... )

И вот ещё, у меня в янти aptitude постоянно пытается обновлять пакеты, при чём версии которые уже стоят в системе, и те на которые он хочет обновить одни и те же, был бы интернет хороший я бы может и не заметила, но когда каждый день по 50-100мб хочет обновляться... С этим можно что-то сделать?

0
DarkneSS - 8 Апрель, 2010 - 15:52
Изображение пользователя DarkneSS.

У меня была похожая ситуация, когда ветка proposed была включена в репозиториях: сначала появляется в ней тестируемая версия обновления, несколько раз допиливается, а потом попадает в security... Я так ядро одной версии раза 4 ставил =)
Если проблема такая же, то можно просто подправить сорс-лист.

0
Жюстина - 8 Апрель, 2010 - 18:58
Изображение пользователя Жюстина.

Нет нет такой ветки у меня, но обновляться с одинаковыми версиями хочет именно ядро постоянно и опен-ява.

Проверяла версии по скачанным версиям, там даже имена файлов абсолютно одинаковые те, что есть уже в кеше апта и те, которые хотят качаться.

Вот и что тут подправить?

0
dyug - 8 Апрель, 2010 - 19:45

что то я с таким поведением не сталкивался, но все же...

sudo aptitude reinstall название кернела...
может поможет...
на всякий случай скачать отдельно и и сравнить md5sum
может битые пакеты приходят...
или на зеркале оказались битые...

0
DarkneSS - 8 Апрель, 2010 - 22:04
Изображение пользователя DarkneSS.

В сорс-листе всё ок. Включены только стабильные ветки.

0
Гость - 8 Апрель, 2010 - 15:06

Огромное спасибо!

0
PostaL - 12 Ноябрь, 2010 - 20:17
Изображение пользователя PostaL.

Хорошая тема , помогла мне
+1

0
Гость - 13 Июль, 2012 - 13:08

Очень помогла статья. Автору спасибо.