APT заклинило несоответствие версии ядра

17

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-server dependencies errors) , который закрылся. Дублируйте ответ, который абсолютно бесполезен для этой ситуации. Ни один из рекомендаций этого очень общего ответа об зависимостях не помогает.

Явное:

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

все дают некоторую форму сообщения об ошибке выше.

    
задан Leopd 09.02.2013 в 23:55
источник

3 ответа

19

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

Это может произойти в течение короткого времени very , даже если вы используете центральный сервер (или в течение более длительного времени, если возникла проблема с его обновлением). Я понимаю, что это может произойти в течение более длительных периодов времени, если вы используете зеркало. Это не значит, что вы не должны использовать зеркало - центральный сервер ( http://archive.ubuntu.com ) обычно очень медленный, а национальные, региональные или другие зеркала намного быстрее.

A поиск пакетов показывает, что версия 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 и, вероятно, не имеете установленного графического интерфейса. Итак, см.

  • Как изменить зеркала в сервере Ubuntu от регионального до основного?

После изменения зеркала запустите:

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 для % исходного кода co_de% в Ubuntu . )

Теперь (для 64-разрядных и 32-разрядных) запустите эту команду, чтобы установить пакет:

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

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

Удалить пакет

Поскольку это программное обеспечение для метапакетов, которое у вас уже есть, вы можете удалить пакет. Тогда вы больше не получите ошибку. Вы можете установить его позже, если хотите (вы можете периодически запускать linux-meta , чтобы узнать, доступна ли новая версия).

Есть два шага, если вы хотите их удалить. Первое - удалить apt-get update && apt-cache policy 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

(У вас должен быть linux-server , но если вы этого не сделаете, и вы не можете установить программное обеспечение, вы можете использовать apt-mark вместо apt-get install - указав пакет вручную для установки, он будет помечен как установленный вручную если он был уже установлен.)

Источник: Отметьте пакет deb как использованный, поэтому он не предлагается для autoremoval
(В частности, ответ Лекенштейна .)

    
ответ дан Eliah Kagan 10.02.2013 в 21:11
источник
4

Если у вас установлена ​​полная загрузка и автоматическая установка обновлений безопасности, вы можете оказаться в той же лодке, что и я.

Я не мог получить apt-get, чтобы сделать что-либо, поэтому традиционный полный / загрузочный совет не сработал. Я вручную удалил старые данные ядра. Не удаляйте текущее запущенное ядро, установите флажок «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 apt-get и снова начать двигаться.

Для хорошей меры я бросил «sudo update-grub» и «sudo apt-get autoremove», чтобы убедиться, что загрузочное меню было точным, а другие пакеты были очищены.

    
ответ дан flickerfly 17.12.2013 в 22:03
0

В ситуации с Ubuntu 12.04 было необходимо как вручную установить linux-headers-server и linux-server (как было предложено выше - я бы там прокомментировал, но еще не имею этой привилегии), а затем apt -get удалить linux-headers-virtual, который больше не существует как 64-разрядный пакет для 12.04.

sudo wget Ссылка

    
ответ дан user291949 09.06.2014 в 16:56