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 中查找文件所屬的包。 感謝閱讀,請提供您的反饋和建議。