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>
工具等等。这些工具是您应该尽可能使用的工具 - 无论是安装还是搜索可用/已安装的软件- 他们在系统上的主要工作是维护有关您的官方软件的所有信息。存储库中不可用的软件也可以通过其自己的特定安装脚本进行安装。系统管理工具不会自动发现此类软件 - 这可能会导致各种问题。要查找此类程序的组件,您只能使用
locate
、find
或which
等工具whereis
。您还可以构建一个程序,“手动”放置它并调整您的环境(如
PATH
)以使其可用。从用户和系统的角度来看,与之前的方法相比,它可能有很大不同、略有不同或根本没有不同。
对于你的情况,你应该区分找到一个二进制文件和确定是否某个包裹已安装。对于查找二进制文件的实际部分,您可以仅使用which
or whereis
。注意PATH
root 和非 root 的环境变量可以不同用户。如果您想确定是否包裹安装后(使用该词的第一个解释),请使用您的发行版的包管理软件。