Это странная проблема, и я не могу найти прямого решения.
Я запустил sudo apt-get update && sudo apt-get upgrade -y
(я никогда не запускал его на этом компьютере, но это Ubuntu Server 12.04, как и все остальные).
Он проходит через обновления и частично проходит через обновление, затем я получаю эту ошибку
(Reading database ... 80%dpkg: unrecoverable fatal error, aborting:
files list file for package 'mysql-common' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)
Теперь я получаю эту же ошибку, когда пытаюсь выполнить любую команду apt-get.
Я пытался:
apt-get clean
apt-get autoremove
apt-get install -f mysql-common
apt-get install --reinstall mysql-common
И, может быть, некоторые другие, о которых я не могу думать сейчас.
Большую часть времени, не всегда, и я могу точно вспомнить, по каким командам это происходит (я уже давно этим занимаюсь), это заканчивается этой ошибкой. Я все еще не могу обновить.
Есть идеи?
Редактировать
Ответ Рехатка привел меня к проверке mysql-common.files на предмет ошибки files list file for package 'mysql-common' is missing final newline
Файл - это просто мусорный текст.
Это как файл шаблона, который является общим для всех систем? Могу ли я просто вставить текст из другой системы?
Перейти к:
cd /var/lib/dpkg/info
Типу
ls -l mysql*
Если появляется файл, такой как «mysql-common.list» "или" mysql-common.md5sums "или что-нибудь еще, сделайте следующее:
sudo mv ./mysql-common.list ~/mysql-common.list
и, если это существует
sudo mv ./mysql-common.md5sum ~/mysql-common.md5sum
Перезагрузите систему. Затем дайте нам знать, каков ваш статус впоследствии (не работает ... работает ... полуработает ...)
Примечание: если они есть в этом каталоге, откройте их и посмотрите, есть ли пустая строка в конце или скрытые символы и т. д. (cat ./mysql-common.md5sum
). Если вы не можете определить, есть ли в этих файлах скрытые символы, которые портят их, выполните следующие действия: он удалит все буквы, цифры и косые черты, которые могут быть в этих файлах:
cat ./mysql-common.list | egrep -v [[:alpha:]]
У меня недавно была та же проблема с другим пакетом (linux-libc-dev).
Вот решение, которое сработало для меня (частично опираясь на ответ RedHatcc):
Убедитесь, что файл списка недействителен
cd /var/lib/dpkg/info
cat linux-libc-dev\:armhf.list` (insert your package name here!)
Неверный файл будет отображаются пустыми или содержат не алфавитно-цифровые символы.
Допустимый список пакетов будет содержать обычные текстовые пути, например:
/.
/usr
/usr/include
/usr/include/sound
/usr/include/sound/asequencer.h
/usr/include/sound/asound.h
/usr/include/sound/sfnt_info.h
Удалить список недопустимых пакетов
sudo rm linux-libc-dev\:armhf.list
(вставить имя пакета здесь!)
Заставить APT переустановить пакет, воссоздав список удаленных пакетов
sudo apt-get install linux-libc-dev --reinstall
(введите имя вашего пакета здесь!)
Убедитесь, что файл списка действителен
В список допустимых пакетов будут включены пути в виде простого текста:
/.
/usr
/usr/include
/usr/include/sound
/usr/include/sound/asequencer.h
/usr/include/sound/asound.h
/usr/include/sound/sfnt_info.h
Недопустимый файл будет выглядеть пустым или содержать не буквенно-цифровые символы.