APT заклинило невідповідність версії ядра


18

Apt, здається, не в змозі зробити для мене нічого корисного, повторно даючи повідомлення такої форми:

dpkg: dependency problems prevent configuration of linux-server:
 linux-server depends on linux-image-server (= 3.2.0.37.44); however:
  Version of linux-image-server on system is 3.2.0.37.45.
 linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
  Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
 dependency problems - leaving unconfigured

Це в основному та сама проблема, що я не можу встановити жоден пакет (linux-image-server, помилки залежностей Linux-сервера), який закрив дублікат на відповідь, абсолютно непридатна для даної ситуації. Жодна порада в цій дуже загальній відповіді про залежності не допомагає.

Явно:

sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update

всі не мають ефекту. Поки

sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get -u dist-upgrade
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

всі надають певну форму повідомлення про помилку вище.

Відповіді:


20

Ви бігли sudo apt-get update, і проблема все-таки трапляється. Таким чином, ви, мабуть, просто маєте новішу версію linux-image-serverта, linux-headers-serverніж будь-який linux-serverпакет, доступний із налаштованих джерел програмного забезпечення .

Це може виникнути дуже короткий час, навіть якщо ви використовуєте центральний сервер (або довший час, якщо виникли проблеми з його оновленням). Я розумію, що це може відбуватися протягом більш тривалого періоду часу, якщо ви використовуєте дзеркало. Це не означає, що не слід використовувати дзеркало - центральний сервер ( http://archive.ubuntu.com) зазвичай дуже повільний, а національні, регіональні чи інші дзеркала набагато швидші.

Пошук пакета показує , що версія 3.2.0.37.45 обох linux-image-serverі linux-serverіснують для Ubuntu 12.04. Так що це, мабуть, пов’язано з вашим дзеркалом.

Ось кілька альтернатив:

Ігноруйте це

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

Це не проблема, щоб не мати останнього linux-serverпакету, оскільки це метапакет , який не забезпечує реального програмного забезпечення. Він існує лише для того, щоб він міг перелічити три пакети як залежності , забезпечуючи, що вони залишаються встановленими:

У вас вже є останні версії linux-headers-serverта linux-image-server. Я здогадуюсь, що це 64-бітна система, через що жодного повідомлення про це не linux-generic-paeбуло. Здається, все добре.

Однак:

  • Якщо проблема перешкоджає оновленню та встановленню інших пакетів роботи (на відміну від того, щоб просто показувати ці повідомлення, коли ви це робите, але не заважаючи їм), тоді слід застосувати інше рішення.
  • Ви також можете це зробити, якщо вам просто не подобається постійно бачити ці повідомлення і хочете їх позбутися.
  • Це трохи дивно, що ви не отримуєте цей пакет, навіть якщо ви використовуєте дзеркало, яке трохи відстає від основного сервера завантаження, оскільки цей пакет також надається компанією http://security.ubuntu.com. Цей сервер завжди повинен бути включений у /etc/apt/sources.list. Тому я рекомендую перевірити, щоб переконатися, що це ввімкнено. Ви можете створити резервну копію, sources.listперш ніж редагувати її ( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old). Проблема також може бути наслідком кешування веб-проксі (якщо ви використовуєте) із несвіжими даними. (Рішення нижче будуть також обходити це.)

Перехід на інший сервер завантаження

Я думаю, що у вас працює система Ubuntu Server і, ймовірно, не встановлений графічний інтерфейс. Отже, дивіться:

Змінивши дзеркало, запустіть:

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

Якщо вам подобається, ви можете змінити свій сервер назад після linux-serverоновлення.

Завантажте та встановіть .debфайл упаковки вручну

Ви можете завантажити та встановити .debфайл вручну для останньої версії linux-serverметапакету в Ubuntu 12.04.

cd туди, куди ви хочете завантажити пакет.

Якщо це 64-бітна система, запустіть:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_amd64.deb

Якщо це 32-бітна система, запустіть це замість цього:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb

(Я отримав обидва ці посилання на сторінці Launchpad для linux-metaвихідного пакету в Ubuntu .)

Тепер (як для 64-розрядної, так і для 32-розрядної) запустіть цю команду, щоб встановити пакет:

sudo dpkg -i linux-server_3.2.0.23.25_*.deb

(Або просто почніть вводити назву пакета та використовуйте його Tabдля завершення.)

Вийміть пакет

Оскільки це програмне забезпечення, що надає метапакет, у вас вже є пакет, ви можете вилучити пакунок. Тоді ви більше не отримаєте помилку. Ви можете встановити його знову пізніше, якщо вам подобається (ви можете періодично запускати, apt-get update && apt-cache policy linux-serverщоб побачити, чи доступна нова версія).

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

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

1. Видаліть linux-server.

Щоб видалити linux-server, просто запустіть:

sudo apt-get remove linux-server

2. Позначте її залежності як встановлені вручну

Щоб повідомити APT (менеджеру пакунків) про пакети, які ви маєте намір встановити, навіть якщо нічого не залишається, що оголошує їх залежність, позначте їх як встановлені вручну.

Для цього запустіть цю команду, якщо це 64-бітна система:

sudo apt-mark manual linux-image-server linux-headers-server

Якщо це 32-бітна система, запустіть це замість цього:

sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae

(Ви повинні мати, apt-markале якщо ви не можете і не можете встановити програмне забезпечення, ви можете використовувати apt-get installзамість apt-mark manual--визначення пакета вручну для встановлення, він позначає його як встановлений вручну, навіть якщо він уже встановлений.)

Джерело: Позначте пакет дебюту як використаний, тому він не пропонується для автоматичного підтвердження
(зокрема, відповідь Лекенштейна .)


3
Дякуємо за детальну відповідь. Зміна дзеркал зовсім не змінила ситуацію. Але вручну встановити нову версію linux-сервера ( linux-server_3.2.0.37.45) виправили проблему.
Леопд

2
У моєму випадку я не міг використовувати apt-get ні для чого. Я завжди отримував невиправдану помилку залежності для linux-сервера. Надихнувшись вашою порадою, я спробував таке, що спрацювало і було набагато простіше:sudo apt-get remove linux-server && sudo apt-get install linux-server
Ендрю Енслі,

4

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

Я не міг отримати сприятливий спосіб зробити щось, тому традиційні поради щодо повного завантаження не спрацювали. Я вручну видалив старі дані ядра. Не видаляйте поточне запущене ядро, встановіть позначку "uname -a". Я видалив 'sudo rm / boot / -3.2.0- {23,24,25,26} - .

Тоді мені довелося запустити «sudo apt-get remove linux-server» та «sudo apt-get install linux-server», щоб виправити безлад з 1/2 встановленої проблеми ядра. Зрештою, я, нарешті, міг би «судо влучно отримати оновлення» і знову рухатись.

Для гарної міри, я кинув 'sudo update-grub' та 'sudo apt-get autoremove', щоб переконатися, що меню завантаження було точним та інші пакети були очищені.


Я написав трохи більше про цей процес тут: askubuntu.com/a/430944/47461 Як підрядник, я часто стикаюся з цією проблемою.
мерехтіння

0

У ситуації з Ubuntu 12.04, потрібно було як вручну встановити linux-headers-server, так і linux-сервер (як було запропоновано вище - я б прокоментував там, але ще не маю цього привілею), а потім apt-get remove linux-headers-virtual, який, здається, не існує як 64-бітний пакет за 12.04.

sudo wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-headers-server_3.2.0.64.76_amd64.deb

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.