Вопрос или проблема
Я использую Debian testing и следовал этим инструкциям по установке docker на Debian. Однако я получил ошибку во время установки:
$ sudo apt-get install docker-ce
Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты были автоматически установлены и больше не требуются:
gnome-orca libgdbm3 libmpfr4 libplacebo3
Используйте 'sudo apt autoremove', чтобы удалить их.
Следующие дополнительные пакеты будут установлены:
aufs-dkms aufs-tools cgroupfs-mount dkms linux-headers-amd64 linux-kbuild-4.15
Рекомендуемые пакеты:
aufs-dev python3-apport menu
Следующие НОВЫЕ пакеты будут установлены:
aufs-dkms aufs-tools cgroupfs-mount dkms docker-ce linux-headers-amd64 linux-kbuild-4.15
0 обновлено, 7 новых установлено, 0 для удаления и 1 не обновлено.
Необходимо загрузить 30.8 МБ архивов.
После этой операции будет использовано 152 МБ дополнительного дискового пространства.
Хотите продолжить? [Y/n] y
Получение:1 http://mirror.aarnet.edu.au/debian buster/main amd64 dkms all 2.3-3 [74.9 kB]
Получение:2 http://mirror.aarnet.edu.au/debian buster/main amd64 linux-kbuild-4.15 amd64 4.15.4-1 [765 kB]
Получение:3 http://mirror.aarnet.edu.au/debian buster/main amd64 aufs-dkms amd64 4.15+20180219-1 [179 kB]
Получение:4 http://mirror.aarnet.edu.au/debian buster/main amd64 aufs-tools amd64 1:4.9+20170918-1 [104 kB]
Получение:5 http://mirror.aarnet.edu.au/debian buster/main amd64 cgroupfs-mount all 1.4 [6,276 B]
Получение:6 http://mirror.aarnet.edu.au/debian buster/main amd64 linux-headers-amd64 amd64 4.14+89 [6,208 B]
Получение:7 https://download.docker.com/linux/debian buster/stable amd64 docker-ce amd64 17.12.1~ce-0~debian [29.7 MB]
Получено 30.8 МБ за 18с (1,688 кБ/с)
Выбор ранее не выбранного пакета dkms.
(Чтение базы данных ... 127936 файлов и директорий в настоящее время установлено.)
Подготовка к распаковке .../0-dkms_2.3-3_all.deb ...
Распаковка dkms (2.3-3) ...
Выбор ранее не выбранного пакета linux-kbuild-4.15.
Подготовка к распаковке .../1-linux-kbuild-4.15_4.15.4-1_amd64.deb ...
Распаковка linux-kbuild-4.15 (4.15.4-1) ...
Выбор ранее не выбранного пакета aufs-dkms.
Подготовка к распаковке .../2-aufs-dkms_4.15+20180219-1_amd64.deb ...
Распаковка aufs-dkms (4.15+20180219-1) ...
Выбор ранее не выбранного пакета aufs-tools.
Подготовка к распаковке .../3-aufs-tools_1%3a4.9+20170918-1_amd64.deb ...
Распаковка aufs-tools (1:4.9+20170918-1) ...
Выбор ранее не выбранного пакета cgroupfs-mount.
Подготовка к распаковке .../4-cgroupfs-mount_1.4_all.deb ...
Распаковка cgroupfs-mount (1.4) ...
Выбор ранее не выбранного пакета docker-ce.
Подготовка к распаковке .../5-docker-ce_17.12.1~ce-0~debian_amd64.deb ...
Распаковка docker-ce (17.12.1~ce-0~debian) ...
Выбор ранее не выбранного пакета linux-headers-amd64.
Подготовка к распаковке .../6-linux-headers-amd64_4.14+89_amd64.deb ...
Распаковка linux-headers-amd64 (4.14+89) ...
Настройка aufs-tools (1:4.9+20170918-1) ...
Настройка linux-kbuild-4.15 (4.15.4-1) ...
Настройка docker-ce (17.12.1~ce-0~debian) ...
Создан символическая ссылка /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Создан символическая ссылка /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
Настройка linux-headers-amd64 (4.14+89) ...
Настройка cgroupfs-mount (1.4) ...
Настройка dkms (2.3-3) ...
Обработка триггеров для libc-bin (2.27-2) ...
Обработка триггеров для systemd (238-2) ...
Обработка триггеров для man-db (2.8.2-1) ...
Настройка aufs-dkms (4.15+20180219-1) ...
Загрузка новых файлов DKMS aufs-4.15+20180219...
Сборка для 4.14.0-3-amd64
Создание первоначального модуля для 4.14.0-3-amd64
Ошибка! dkms.conf для этого модуля включает директиву BUILD_EXCLUSIVE, которая
не соответствует этому ядру/архитектуре. Это указывает на то, что он не должен быть собран.
Пропущено.
Что я упустил?
Спасибо заранее
Если вы не используете этот модуль (4.14.0-3-amd64), вы можете попробовать удалить его перед выполнением команды apt/apt-get. Или это связано с использованием нестабильного ядра?
Ответ или решение
Ошибка, которую вы получили: “Error! The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which does not match this kernel/arch.” указывает на то, что модуль DKMS (Dynamic Kernel Module Support) пытается построить модуль для ядра, которому этот модуль не соответствует. В данной ситуации конфликт возникает из-за того, что в конфигурационном файле dkms.conf установлен параметр BUILD_EXCLUSIVE
, который не совпадает с вашим текущим ядром.
Причины возникновения проблемы
-
Несоответствие версий ядра и модулей: Вы установили пакеты, которые требуют модули, совместимые с определенной версией ядра (в вашем случае, ядро 4.15.x), а вы используете другое. Как видно из вывода, ваше текущее ядро – это 4.14.0-3-amd64.
-
Неактуальные заголовки ядра: Возможно, при установке Docker вы не установили соответствующие заголовки ядра для вашей используемой версии (например, заголовки для 4.14.x, вместо 4.15.x), что может привести к таким ошибкам.
Шаги по устранению проблемы
-
Проверьте текущее ядро: Убедитесь, что вы действительно используете ядро, для которого собирается модуль. Используйте команду:
uname -r
Это покажет текущее ядро, используемое в системе.
-
Установите правильные заголовки ядра: Если ваше текущее ядро 4.14, вам нужно установить соответствующие заголовки:
sudo apt-get install linux-headers-$(uname -r)
-
Переустановка модуля DKMS: Удалите и заново установите пакеты DKMS и связанные с ними модули:
sudo apt-get remove --purge aufs-dkms sudo apt-get install aufs-dkms
-
Смена ядра (опционально): Если вы хотите использовать новое ядро (например, 4.15), вы можете обновить ядро:
sudo apt-get install linux-image-4.15.0-...
Обратите внимание, что может потребоваться также установка заголовков для новой версии ядра.
-
Очистка неправильно установленных пакетов: После всех манипуляций рекомендуется очистить систему от ненужных пакетов:
sudo apt autoremove
Заключение
Ошибки, подобные данной, часто встречаются при установке программного обеспечения, которое зависит от специфичных версий модулей ядра. Убедитесь, что соответствующие заголовки ядра установлены и согласованы с установленным в системе ядром. Если вы продолжаете сталкиваться с проблемами, проверьте совместимость используемых версий системного ПО и модулей DKMS. Рассмотрите возможность использования кернелей из репозиториев, которые соответствуют версиям модулей DKMS, что обеспечит лучшую совместимость.