如何查找某个软件(可能*不在*路径中)是否已预安装?

如何查找某个软件(可能*不在*路径中)是否已预安装?
anisha@linux-dopx:~> which qmake
which: no qmake in (/opt/qtcreator-2.0.92/bin/:/opt/qtsdk-2010.05/qt/bin/:/opt/qtcreator-2.0.92/bin/:/opt/qtsdk-2010.05/qt/bin/:/usr/lib64/mpi/gcc/openmpi/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin)

anisha@linux-dopx:~> locate qmake
anisha@linux-dopx:~> 

考虑到该软件当前不在 PATH 中,是否有其他方法可以确认该软件是否已安装?

答案1

尝试whereis。它会查找所有对二进制文件有意义的地方(当-b使用时),即使它们不包含在您的$PATH.例如whereis -b ifconfig返回/sbin/ifconfig,即使/sbin不在我的中$PATH

答案2

问题在于“这个词的唯一定义”已安装”。有多种解释方法。

  • “安装”程序的典型且最正确的方法是使用包管理器工具。这些程序因发行版而异:在 Gentoo 上,还有emerge许多其他有用的程序搬运;在基于 Debian 的系统(如 Ubuntu)上,有apt-<something>工具等等。这些工具是您应该尽可能使用的工具 - 无论是安装还是搜索可用/已安装的软件- 他们在系统上的主要工作是维护有关您的官方软件的所有信息。

  • 存储库中不可用的软件也可以通过其自己的特定安装脚本进行安装。系统管理工具不会自动发现此类软件 - 这可能会导致各种问题。要查找此类程序的组件,您只能使用locatefindwhich等工具whereis

  • 您还可以构建一个程序,“手动”放置它并调整您的环境(如PATH)以使其可用。从用户和系统的角度来看,与之前的方法相比,它可能有很大不同、略有不同或根本没有不同。

对于你的情况,你应该区分找到一个二进制文件确定是否某个包裹已安装。对于查找二进制文件的实际部分,您可以仅使用whichor whereis。注意PATHroot 和非 root 的环境变量可以不同用户。如果您想确定是否包裹安装后(使用该词的第一个解释),请使用您的发行版的包管理软件。

相关内容