Буває, що після оновлення система поводиться дивно: ламаються залежності, зникає функціонал або щось взагалі не стартує. Не панікуйте 🧯 Я, Kernelka, покажу, як діагностувати проблему, відкочувати пакети у Debian/Ubuntu, відновлювати систему через apt/dpkg і блокувати версії, щоб помилки не повторювались. Усе — крок за кроком і людською мовою.
Що робити спочатку: діагностика
Наш план: дізнатися, що саме оновилося, які версії доступні, і чи були помилки Linux під час встановлення. Для цього потрібні лише apt команди і трішки терпіння.
1) Подивіться історію оновлень
Логи APT підкажуть, які пакети змінились останніми. Відкрийте в термінал Linux:
grep -E "(Upgrade|Install|Remove)" /var/log/apt/history.log | tail -n 50
Якщо у вас кілька файлів історії (через ротацію), перевірте всі:
zgrep -hE "(Upgrade|Install|Remove)" /var/log/apt/history.log* | tail -n 80
2) Перевірте доступні версії підозрілого пакета
Знайшли «винуватця»? Подивіться, які версії доступні та з якого репозиторію вони прийшли:
apt policy <package-name>
Тут ви побачите поточну (Installed), кандидатну (Candidate) і всі доступні версії з репозиторіїв.
3) Переконайтеся, що немає «поламаних» залежностей
sudo apt -f install
sudo dpkg --configure -a
Ці apt команди намагаються виправити незавершені налаштування пакетів та відсутні залежності.
Основний How‑to: відкат пакета і блокування версії
Коли знайшли проблемний пакет і доступну стабільну версію — час діяти. Тут все просто й відтворювано.
Крок 1. Відкотіть до попередньої версії
Вкажіть потрібну версію прямо в команді встановлення:
sudo apt install <package-name>=<version>
Приклад:
sudo apt install libfoo=1.2.3-1
Якщо APT каже, що потрібних залежностей не вистачає, спочатку відкотіть їх таким же способом або дозвольте APT підібрати коректні версії.
Крок 2. Зафіксуйте версію (hold)
Щоб наступні оновлення Linux не підняли пакет до «битої» версії, поставте hold:
sudo apt-mark hold <package-name>
apt-mark showhold
Зняти блокування можна так:
sudo apt-mark unhold <package-name>
Крок 3. Перевірка системи
Переконайтеся, що пакет у правильній версії і система в цілому чиста:
apt policy <package-name>
sudo apt -f install
sudo journalctl -p err -b | tail -n 50
Альтернативні способи
1) Відкат із локального кешу .deb
Часто попередня версія лежить у кеші APT:
ls /var/cache/apt/archives | grep <package-name>
sudo dpkg -i /var/cache/apt/archives/<package>_<version>_amd64.deb
sudo apt -f install
Якщо у кеші немає — завантажте потрібну версію:
apt download <package-name>=<version>
sudo dpkg -i <package>_<version>_amd64.deb
sudo apt -f install
2) APT pinning (Preferences)
Щоб примусово тримати конкретну версію з пріоритетом, створіть файл у /etc/apt/preferences.d/:
sudo nano /etc/apt/preferences.d/pin-foo
Вставте щось на кшталт:
Package: libfoo
Pin: version 1.2.3-1
Pin-Priority: 1001
Тепер навіть без apt-mark hold APT віддаватиме перевагу цій версії. Скасовується видаленням або зміною цього файлу і sudo apt update.
3) Масовий відкат за історією
Якщо оновилась пачка пакетів і все зламалося, з історії можна скласти список і відкотити їх точково. Для початку просто випишіть потрібні назви і версії, а далі встановлюйте по одній або одразу кілька:
sudo apt install pkgA=1.0-1 pkgB=2.3-2 pkgC=4.5-1
GUI-спосіб
Якщо вам звичніше працювати мишею, спробуйте Synaptic (класичний менеджер пакетів для Debian/Ubuntu).
Synaptic
- Встановіть Synaptic:
sudo apt install synaptic - Відкрийте Synaptic → знайдіть потрібний пакет.
- Меню Package → Force Version → виберіть стабільну попередню версію → Apply.
- Щоб заблокувати версію: Package → Lock Version.
У GNOME Software / Discover зазвичай немає зручного «Force Version», тому для точного відкату краще Synaptic або термінал Linux.
FAQ
Що робити, якщо потрібної версії немає в репозиторіях?
Використайте офіційні архіви: Debian Snapshot (snapshot.debian.org) або Ubuntu Packages (packages.ubuntu.com — секція «Downloadable files» за релізом). Завантажте .deb і встановіть через dpkg -i. Не змішуйте репозиторії різних релізів без pinning — це ризик конфліктів.
APT каже «held broken packages» або «unmet dependencies»
Спробуйте в такому порядку:
sudo apt -f install
sudo dpkg --configure -a
sudo apt install <dep>=<version>
Якщо заважає hold, тимчасово зніміть його: sudo apt-mark unhold <package>, виконайте відкат залежностей і поверніть hold назад.
Як відкотити ядро?
Перезавантажтесь у GRUB → Advanced options → виберіть попереднє ядро. У системі зафіксуйте робоче ядро:
apt policy 'linux-image*'
sudo apt install linux-image-<version>
sudo apt-mark hold linux-image-<version> linux-headers-<version>
Не видаляйте всі ядра, залишайте хоча б одне резервне.
Як скасувати блокування версій?
sudo apt-mark unhold <package>
# Якщо використовували pinning
sudo rm /etc/apt/preferences.d/pin-foo
sudo apt update
Чи безпечно тримати hold довго?
Краще ні. Hold — тимчасова міра, поки розробники виправляють баг. Перевіряйте оновлення періодично, читайте changelog: apt changelog <package>, знімайте hold, коли фікс готовий.
Після відкату програма все одно ламається
Можливо, конфіг змінено або кеш зіпсований. Спробуйте:
sudo apt --reinstall install <package>
sudo rm -rf ~/.cache/<app>
# обережно з видаленням користувацьких налаштувань
Також загляньте в журнали: journalctl -xe, dmesg.
Порада від Kernelka
Перед великими апдейтами робіть знімок системи (Timeshift/Btrfs snapshots) — це чарівна кнопка «Undo» для ОС 🛟 А ще корисно оновлюватись не в перший день релізу пакета: дайте часу спливти критичним багрепортам, читайте зміни через apt list --upgradable і apt changelog. І, звісно, тримайте під рукою цей гайд — він економить нерви.
Підсумок
- Знайдіть, що оновилось: логи у
/var/log/apt/history.log. - Перевірте доступні версії:
apt policy <package>. - Відкотіть:
sudo apt install <package>=<version>. - Зафіксуйте версію:
sudo apt-mark hold <package>або APT pinning. - Виправте залежності:
sudo apt -f install,sudo dpkg --configure -a. - Для GUI скористайтесь Synaptic: Force Version + Lock.
- Слідкуйте за апдейтами і знімайте hold після виправлень.
Все, ви знову на стабільній версії — і контроль оновлень тепер у ваших руках. Якщо щось не виходить, залишайте питання — я поруч і допоможу!

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.