linux下查找某个文件或者命令属于哪个软件包
linux下查看某个文件或者命令属于哪个软件包
centos/redhat下查看某个文件或命令属于哪个rpm包
可以使用rpm或者yum来查询:
1 2 3 4 5 6 7 8 | [root@test /]# which stress /usr/bin/stress [root@test /]# rpm -qf /usr/bin/stress stress-1.0.4-16.el7.x86_64 -- 或者 yum provides /etc/passwd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 查询某个命令或者文件来自哪个软件包的方法 yum whatprovides "*platform-python*" yum whatprovides "*libpython3.6m.so*" yum whatprovides "libmp3lame.so.0()(64bit)" yum whatprovides "libspeex.so.1()(64bit)" -- 确认某个命令或服务来自哪个RPM包 yum provides XX yum provides "*/crond" yum provides nslookup yum provides showmount yum provides /etc/passwd -- showmount命令来自nfs-utils,通常一起安装yum -y install nfs-utils rpcbind |
ubuntu及衍生版:
1 2 3 | dpkg -S whereis sudo dpkg -S /usr/bin/whereis sudo dpkg-query -S /usr/bin/whereis |
过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | root@lhrubuntu2004:/# dpkg -S /etc/passwd dpkg-query: no path found matching pattern /etc/passwd root@lhrubuntu2004:/# dpkg -S /usr/bin/whereis util-linux: /usr/bin/whereis root@lhrubuntu2004:/# root@lhrubuntu2004:/# dpkg -S whereis util-linux: /usr/share/man/man1/whereis.1.gz util-linux: /usr/share/bash-completion/completions/whereis util-linux: /usr/bin/whereis root@lhrubuntu2004:/# root@lhrubuntu2004:/# sudo dpkg-query -S /usr/bin/whereis util-linux: /usr/bin/whereis root@lhrubuntu2004:/# root@lhrubuntu2004:/# |
具体参考ubuntu wiki skills页面 ,不过该命令不如rpm -qf强大,如/etc/passwd就查不出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | adams@adams-VirtualBox:~$ dpkg --help 用法:dpkg [<选项> ...] <命令> 命令: -i|--install <.deb 文件名> ... | -R|--recursive <目录> ... --unpack <.deb 文件名> ... | -R|--recursive <目录> ... -A|--record-avail <.deb 文件名> ... | -R|--recursive <目录> ... --configure <软件包名> ... | -a|--pending --triggers-only <软件包名> ... | -a|--pending -r|--remove <软件包名> ... | -a|--pending -P|--purge <软件包名> ... | -a|--pending -V|--verify <软件包名> ... 检查包的完整性。 --get-selections [<表达式> ...] 把已选中的软件包列表打印到标准输出。 --set-selections 从标准输入里读出要选择的软件。 --clear-selections 取消选中所有不必要的软件包。 --update-avail <软件包文件> 替换现有可安装的软件包信息。 --merge-avail <软件包文件> 把文件中的信息合并到系统中。 --clear-avail 清除现有的软件包信息。 --forget-old-unavail 忘却已被卸载的不可安装的软件包。 -s|--status <软件包名> ... 显示指定软件包的详细状态。 -p|--print-avail <软件包名> ... 显示可供安装的软件版本。 -L|--listfiles <软件包名> ... 列出属于指定软件包的文件。 -l|--list [<表达式> ...] 简明地列出软件包的状态。 -S|--search <表达式> ... 搜索含有指定文件的软件包。 -C|--audit [<表达式> ...] 检查是否有软件包残损。 --yet-to-unpack 列出标记为待解压的软件包。 --predep-package 列出待解压的预依赖。 --add-architecture <体系结构> 添加 <体系结构> 到体系结构列表。 --remove-architecture <体系结构> 从架构列表中移除 <体系结构>。 --print-architecture 显示 dpkg 体系结构。 --print-foreign-architectures 显示已启用的异质体系结构。 --assert-<特性> 对指定特性启用断言支持。 --validate-<属性> <字符串> 验证一个 <属性>的 <字符串>。 --compare-vesions <a> <关系> <b> 比较版本号 - 见下。 --force-help 显示本强制选项的帮助信息。 -Dh|--debug=help 显示有关出错调试的帮助信息。 -?, --help 显示本帮助信息。 --version 显示版本信息。 Assert 特性: support-predepends, working-epoch, long-filenames, multi-conrep, multi-arch, versioned-provides. 可验证的属性:pkgname, archname, trigname, version. 调用 dpkg 并带参数 -b, --build, -c, --contents, -e, --control, -I, --info, -f, --field, -x, --extract, -X, --vextract, --ctrl-tarfile, --fsys-tarfile 是针对归档文件的。 (输入 dpkg-deb --help 获取帮助) 选项: --admindir=<目录> 使用 <目录> 而非 /var/lib/dpkg。 --root=<目录> 安装到另一个根目录下。 --instdir=<目录> 改变安装目录的同时保持管理目录不变。 --path-exclude=<表达式> 不要安装符合Shell表达式的路径。 --path-include=<表达式> 在排除模式后再包含一个模式。 -O|--selected-only 忽略没有被选中安装或升级的软件包。 -E|--skip-same-version 忽略版本与已安装软件版本相同的软件包。 -G|--refuse-downgrade 忽略版本早于已安装软件版本的的软件包。 -B|--auto-deconfigure 就算会影响其他软件包,也要安装。 --[no-]triggers 跳过或强制随之发生的触发器处理。 --verify-format=<格式> 检查输出格式('rpm'被支持)。 --no-debsig 不去尝试验证软件包的签名。 --no-act|--dry-run|--simulate 仅报告要执行的操作 - 但是不执行。 -D|--debug=<八进制数> 开启调试(参见 -Dhelp 或者 --debug=help)。 --status-fd <n> 发送状态更新到文件描述符<n>。 --status-logger=<命令> 发送状态更新到 <命令> 的标准输入。 --log=<文件名> 将状态更新和操作信息到 <文件名>。 --ignore-depends=<软件包>,... 忽略关于 <软件包> 的所有依赖关系。 --force-... 忽视遇到的问题(参见 --force-help)。 --no-force-...|--refuse-... 当遇到问题时中止运行。 --abort-after <n> 累计遇到 <n> 个错误后中止。 可供--compare-version 使用的比较运算符有: lt le eq ne ge gt (如果版本号为空,那么就认为它先于任意版本号); lt-nl le-nl ge-nl gt-nl (如果版本号为空,那么就认为它后于任意版本号); < << <= = >= >> > (仅仅是为了与主控文件的语法兼容)。 'apt' 和 'aptitude' 提供了更为便利的软件包管理。 adams@adams-VirtualBox:~$ |
gentoo及衍生版
1 2 3 4 5 | #未安装的文件 e-file qmake #已安装的文件查看 equery b <filename> 或qfile <filename> |