apt каже, що пакети були збережені назад, що робити?


23

Вихід apt-get upgrade:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

Що це означає? Чи варто вжити заходів? Якщо так, то що?

Відповіді:


37

Швидке та просте рішення:

У мене було кілька разів те саме питання. НЕ робіть sudo apt-get dist-upgradeспочатку. Дуже важливо. **** ПРИМІТКА. Це рішення призначене для машин на базі Debian, але не працюватиме на KDE Neon . Щоб оновити KDE Neon, потрібно використовувати sudo pkcon update. ****

Чому?

Це може зробити вашу систему дуже нестабільною, програми можуть вийти з ладу, і ви можете втратити багато функціональних можливостей вашої ОС.

Ви ОБОВ'ЯЗКОВО встановите кожен пакет окремо, ТАКОЖ , під час цього процесу інші залежності також будуть встановлені автоматично, і Ваша проблема буде вирішена всього за кілька хвилин.

У мене не було проблем із наступним рішенням. Це досить швидко і просто.


Спочатку зробіть це:

apt list --upgradable

  • Це покаже список пакетів, які можна оновити.

Далі зробіть це:

  • Почніть з початку списку з першого пакету та введіть:

sudo apt-get install package-name-here

  • Це буде проходити через процес встановлення та витягувати / встановлювати залежності.

Після цього процес виконайте це:

apt list --upgradable

  • Це знову покаже, які пакети можна оновити. Ваш список пакетів тепер повинен зменшуватися. Дотримуйтесь списку пакунків та введіть їх apt list --upgradableпісля встановлення кожного пакета. Це займе лише пару хвилин.

Нарешті:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

Якщо це рішення спрацювало для вас, будь ласка, не забудьте оновити його таким чином, щоб правильне рішення було доступне для інших та опинилося вгорі списку відповідей.

Якщо з якихось причин це рішення не працює для вас, дивіться відповідь користувача GAD3R нижче. Це також хороше рішення.

Спасибі.


1
Для мене пакет був ubuntu-мінімальний. Ваші інструкції спрацювали прекрасно.
ДінМ

Не використовуйте це рішення, якщо ви користуєтеся KDE Neon.
Григорій

11

Що це означає?

The following packages have been kept back:

Відповідь тут

Це означає, що існують нові версії цих пакетів, які не будуть встановлені з якихось причин. Можливі причини - це зламані залежності (пакет, від якого залежить, не має версії для завантаження) або нові залежності (пакет став залежати від нових пакетів з останньої версії).

Чи варто вжити заходів?

Вам потрібно використовувати dist-upgradeдля встановлення нових залежностей та оновлення пакетів:

sudo apt-get dist-upgrade

Проблему можна вирішити, dist-upgradeякщо не потрібно:

Виправити зламані залежності

sudo apt-get -f install 

Видаліть кілька пакунків, які більше не встановлені у вашій системі:

sudo apt-get autoclean

Покладіть потрібний пакет на утримання:

echo "<package_name> hold" | dpkg --set-selections

Переконфігуруйте названий пакет:

dpkg-reconfigure <package_name>

3

З цієї відповіді Unix SE :

По-перше, як було сказано вище, будь ласка, НЕ перешкоджайте модернізації жодної виробничої системи! Незважаючи на те, що оновлення оновлень "вирішить" пакети, що зберігаються, це точно не вирішить цю проблему і, швидше за все, спричинить у вас більше горя, ніж користі, якщо ви запускаєте її, не знаючи наслідків для вашої системи.

Якщо для оновлення пакета потрібна установка додаткових пакетів, він буде підтримуватися під час запуску sudo apt-get upgrade.

Як згадувалося вище, ви можете встановити ці "збережені назад" пакети вручну шляхом явного запуску, sudo apt-get install [paste kept back packages here]але це позначить ці пакети як "встановлені вручну", що часто не є тим, що ми хочемо.

Для автоматичного встановлення будь-яких додаткових пакетів, необхідних для оновлення пакетів, що "підтримуються", не позначаючи пакети ", що підтримуються", як встановлені вручну, просто запустіть sudo apt-get --with-new-pkgs upgrade.


Більше про --with-new-pkgsта побічні ефекти інших альтернатив тут .
Пабло А

2

Цю відповідь я включив у свій блог. Якщо ви хочете побачити, що ви можете зайти туди за цим посиланням .

Вищевказана помилка дуже часто зустрічається в терміналі Ubuntu при спробі оновлення ( apt-get upgrade). Зазвичай це відбувається тому, що залежність одного встановленого пакету змінилася. Для оновлення вам потрібно спочатку оновити їх. Тому вирішити це дуже просто. Ви зможете побачити ті пакунки, які зберігалися під цим повідомленням про помилку. як приклад я можу побачити наступні пакети у списку:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Не просто набирайте sudo apt-get dist-upgradeце дуже небезпечно, оскільки він встановлює всі очікувані оновлення. Це може привести ваше робоче середовище до дуже нестабільного стану.

Тому моя думка - використовувати відомий

sudo apt-get install [package]

Ви можете замінити [package]будь-яким пакетом у повідомленні про помилку. Також ви можете розмістити їх як список (просто скопіюйте та вставте його). Як приклад в моєму випадку я можу навести

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Якщо ви хочете зробити

sudo apt-get dist-upgrade

чомусь просто переконайтесь, що перегляньте список пакунків, використовуючи параметр імітації -s( sudo apt-get -s dist-upgrade), або без -sопції ви можете припинити виконання перед прийняттям. (ви завжди можете вибрати варіант "ні")


2

Нещодавно оновлення безпеки Debian представило кілька нових залежностей. У цьому випадку linux-imageпакет почав вимагати linux-firmware, серед кількох інших. Тож їх стримували та не встановлювали unattended-upgrade. Після тестування та підтвердження я зміг вибірково встановити лише ці пакунки, не торкаючись інших оновлених оновлень:

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')


1

У цій статті добре узагальнено, чому це відбувається:

Якщо залежності були змінені на одному з встановлених вами пакетів, так що для оновлення повинен бути встановлений новий пакет, який буде вказаний як "зберігається назад".

Рішенням цього є встановлення їх явно за допомогою

sudo apt install [packages]

Ви, мабуть, хочете позначити ці пакунки автоматично встановленими, якщо ви самі не піклуєтеся про них, а не лише для задоволення залежностей.

sudo apt-mark auto [packages]

Щоб цього не сталося в першу чергу, рекомендую використовувати

sudo apt --with-new-pkgs upgrade

в майбутньому оновити пакети, що дозволяє встановлювати нові пакети для задоволення змін залежностей.


Два великих пальця --with-new-pkgs! І дозвольте мені ще раз наголосити на тому, що " НЕ перешкоджайте модернізації жодної виробничої системи! Хоча dist-модернізація" вирішить "збережені назад пакети, це, безумовно, не є вирішенням цього питання, і, швидше за все, ви принесете більше горя, ніж користі, якщо ви запустіть його, не знаючи наслідків для вашої системи. "
xpt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.