Debian:取得已安裝檔案的套件名稱

Debian:取得已安裝檔案的套件名稱

我透過 SSH 連接到運行 Linux 核心 3.11.1 的 PC:

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

我的目的:我想安裝3.11.1版本對應的Linux頭檔來為其編譯核心模組。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/系統映射*核心版本*
    • /啟動/配置-核心版本
    • /lib/模組/核心版本/
    • 這裡詳細說明。
  3. 安裝的內核包管理器預設發送的相應標頭apt-get(版本 3.2.0-4-486)。

  4. 透過更新 grub更新 grub

現在,我可以編譯並使用所需的 Linux 核心模組了。感謝克里克為我指明了正確的方向。 :)

答案3

使用定位(1)命令來自定位包裹:

$ 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應該為您提供所有已安裝核心的標頭

相關內容