Debian: получить имя пакета для установленного файла

Debian: получить имя пакета для установленного файла

Я подключен через SSH к ПК под управлением ядра Linux 3.11.1:

root@alix:~# uname -r
3.11.1

как узнать, какой пакет установил этот конкретный файл или версию ядра?

Я пытался

root@alix:/boot# dpkg -S vmlinuz-3.11.1 
dpkg-query: no path found matching pattern *vmlinuz-3.11.1*

Другие установленные версии ядра можно найти с помощьюdpkg-S:

root@alix:/boot# dpkg -S vmlinuz-3.2.23
linux-image-3.2.23-ath5kmod: /boot/vmlinuz-3.2.23-ath5kmod

Моя цель: я хотел бы установить соответствующие заголовочные файлы Linux для версии 3.11.1, чтобы скомпилировать для нее модуль ядра.apt-cache поиск linux-headersперечислены 15 различных версий заголовков, но не версия для 3.11.1.

Большое спасибо.

решение1

Вы можете вывести список всех установленных пакетов dpkg -lи отфильтровать результаты по grepпакетам ядра

dpkg -l | grep 'linux-image'
dpkg -l | grep 'linux-image' | grep '3.11'

Чтобы найти пакет заголовков ядра для вашего работающего ядра:

apt-cache search linux-headers-`uname -r`

решение2

Моя первоначальная проблема заключалась в том, что для установленного в данный момент ядра Linux (3.11.1) не было подходящих заголовочных файлов ядра.

В конце концов, я решил эту проблему в четыре шага:

  1. Удалил ядра, которые были установлены черезapt-get.
  2. Удалены пользовательские ядра:

    • /boot/vmlinuz*ВЕРСИЯ-ЯДРА*
    • /boot/initrd*ВЕРСИЯ-ЯДРА*
    • /boot/System-map*ВЕРСИЯ-ЯДРА*
    • /boot/config-ВЕРСИЯ ЯДРА
    • /библиотека/модулей/ВЕРСИЯ ЯДРА/
    • Видетьздесьдля подробного описания.
  3. Установленное ядроисоответствующие заголовки, которые поставляются по умолчанию менеджером пакетовapt-get(версия 3.2.0-4-486).

  4. Обновить grub черезобновление-grub.

Теперь я могу скомпилировать и использовать требуемый модуль ядра Linux. Спасибо Creek за то, что указал мне правильное направление. :)

решение3

Использоватьdlocate(1)команда отdlocateупаковка:

$ dlocate /boot/vmlinuz-*
linux-image-4.9.0-6-amd64: /boot/vmlinuz-4.9.0-6-amd64
linux-image-4.9.0-7-amd64: /boot/vmlinuz-4.9.0-7-amd64

dlocateпринимает имя файла в качестве аргумента и возвращает имя пакета, который владеет/предоставляет данный файл.

решение4

apt-get install linux-headersдолжен предоставить вам заголовки для всех установленных ядер

Связанный контент