如何在 Linux 中查找文件屬於哪個包

Linux 包是一個壓縮文件存檔,其中包含屬於特定應用程序的所有文件。 在某些情況下,您可能需要查找屬於某個文件的包名。

在本教程中,我們將學習如何 查找文件屬於或擁有哪個包 在Linux系統中。

哪個軟件包在 Ubuntu/Debian 系統上提供文件

要查找在 Ubuntu/Debian 系統上提供文件的軟件包,我們有一些方法。

使用 dpkg

您可以使用 dpkg 和 dpkg-query 命令來查找提供文件的包。 此命令從已安裝的包中搜索文件名。

句法:

dpkg -S filename
dpkg-query -S filename

為了 example,要查找 /bin/ls 文件屬於哪個包,請使用以下命令。

$ dpkg -S /bin/ls

使用 dpkg 查詢

您還可以使用 dpkg-query 命令查找已安裝文件的包名稱。

$ dpkg-query -S /bin/ls
$ dpkg-query -S '/bin/ls'
$ dpkg-query -S 'passwd*'

使用 apt 文件

您可以使用 apt-file 在系統上的 DEB 包中查找文件,以及未安裝在 Debian 系統上但可通過存儲庫獲得的包。

默認情況下不安裝 apt-file 包。 要在 Ubuntu 和其他基於 Debian 的 Linux 發行版上安裝 apt-file,請鍵入:

$ sudo apt install apt-file 

確保更新數據庫緩存,鍵入:

$ sudo apt-file update

現在讓我們搜索提供路由命令的包,使用以下命令。

$ apt-file search 'bin/route'

在左側,您可以看到屬於 route 命令的包名。

哪個軟件包在基於 RHEL 的系統上提供文件

這在 Redhat 等 Linux 發行版上受支持, Fedora、AlmaLinux、Rocky Linux、CentOS Stream 和 Oracle Linux。

使用 DNF 命令

您可以使用 provides 選項與 DNF 一起在基於 RHEL 的系統中查找文件的包,例如 Fedora. 它與任何可用包的所有文件提供匹配。

句法:

dnf provides filename
dnf provides *filename
dpkg-query --search '/path/to/file'

為了 example,如果要查找二進製文件的包,請使用以下命令。

$ dnf provides *bin/ls

使用 RPM 和 Yum 命令

您可以使用 rpm 命令查找提供特定文件的軟件包。

句法:

rpm -rf filename
rpm -q --whatprovides filename

這將找到已安裝包文件的包名

為了 example,如果要查找提供/bin/ls文件的rpm包,使用以下命令。

$ rpm -qf /bin/ls

您還可以使用以下 rpm 命令:

$ rpm -q --whatprovides /etc/nginx/nginx.conf

使用 yum 命令,您可以執行以下相同操作:

$ yum whatprovides netstat

您還可以使用特定的庫文件來搜索它所屬的包

搜索未安裝在 Debian/Ubuntu 上的文件

您可以訪問 Debian 軟件包Ubuntu 軟件包搜索 並蒐索文件。 結果將顯示包名稱。 然後你可以使用你的 apt 命令來安裝相應的包。

結論

在本教程中,我們學習瞭如何在 Linux 中查找文件所屬的包。 感謝閱讀,請提供您的反饋和建議。