如何在 Linux 中查找文件属于哪个包?
Linux 包是一个压缩文件存档,其中包含属于特定应用程序的所有文件,在某些情况下,您可能需要查找属于某个文件的包名。
在本教程中,我们将学习如何在 Linux 系统中查找文件属于或拥有的包。
哪个软件包在 Ubuntu/Debian 系统上提供文件
要查找在 Ubuntu/Debian 系统上提供文件的软件包,我们有一些方法。
使用 dpkg
您可以使用 dpkg 和 dpkg-query 命令来查找提供文件的包。此命令从已安装的包中搜索文件名。
语法:
dpkg -S filename
dpkg-query -S filename
例如,要查找 /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 的系统上提供文件
这在 Linux 发行版上受支持,例如 Redhat、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'
例如,如果要查找二进制文件的包,请使用以下命令。
$ dnf provides *bin/ls
使用 RPM 和 Yum 命令
您可以使用rpm 命令查找提供特定文件的软件包。
语法:
rpm -rf filename
rpm -q --whatprovides filename
这将找到已安装包文件的包名
例如,如果要查找提供 /bin/ls 文件的 rpm 包,请使用以下命令。
$ rpm -qf /bin/ls
您还可以使用以下 rpm 命令:
$ rpm -q --whatprovides /etc/nginx/nginx.conf
使用 yum 命令,您可以执行以下相同操作:
$ yum whatprovides netstat
您还可以使用特定的库文件来搜索它所属的包
搜索未安装在 Debian/Ubuntu 上的文件
您可以访问Debian 软件包和Ubuntu 软件包搜索并搜索该文件。结果将显示包名称,然后你可以使用你的 apt 命令来安装相应的包。
- 点赞
- 收藏
- 关注作者
评论(0)