Поскольку мой статус-старый был слишком проблематичным даже с apt-get update,
Это работало довольно хорошо для меня:
(как root)
cd /var/lib/dpkg
cp -avf status status.corrupt
tr -cd '\11\12\15\40-\176' < status.corrupt > status
Эта команда использует команды -c и -d для команды tr, чтобы удалить все символы из входного потока, отличные от восьмизначных значений ASCII, которые показаны между одинарными кавычками. Эта команда специально позволяет пропускать следующие символы через этот фильтр Unix: восьмеричный 11: tab восьмеричный 12: linefeed восьмеричный 15: возврат каретки октал 40 через восьмеричный 176: все «хорошие» символы клавиатуры Все остальные двоичные символы - «мусор» «символы в вашем файле - удаляются во время этого процесса перевода. КРЕДИТ: http://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix
Любопытно, что изменилось или где будет ущерб: (возможно, длинный)
diff /var/lib/dpkg/{status-old,status} |less
Вы должны пометить ядра, которые хотите использовать как hold, используя apt-mark.
sudo apt-mark hold kernel-version
Например:
sudo apt-mark hold linux-headers-4.4.0-77-generic
Из man apt-mark: [!d2 ] hold используется для маркировки пакета как сдержанного, что предотвратит автоматическую установку, обновление или удаление пакета.
Вы должны пометить ядра, которые хотите использовать как hold, используя apt-mark.
sudo apt-mark hold kernel-version
Например:
sudo apt-mark hold linux-headers-4.4.0-77-generic
Из man apt-mark:
hold используется для маркировки пакета как сдержанного, что предотвратит автоматическую установку, обновление или удаление пакета.Вы должны пометить ядра, которые хотите использовать как hold, используя apt-mark.
sudo apt-mark hold kernel-version
Например:
sudo apt-mark hold linux-headers-4.4.0-77-generic
Из man apt-mark:
hold используется для маркировки пакета как сдержанного, что предотвратит автоматическую установку, обновление или удаление пакета.