我正在用mysql、phpmyadmin等构建一些应用程序来设置apache服务器。因此,我需要一个comand来检查是否存在安装,例如apache2:
我没有Linux方面的专家,但到目前为止我有以下几点:
apache2 -v || {
sudo apt install apache2 && {
echo 'INSTALL_SUCCESS'
exit -1
}
}
echo 'NOT FOUND'但老实说,我不知道这里发生了什么,但我知道它一直在运行安装,而且可能有更好的方法来实现hadle。
发布于 2020-12-24 02:48:11
一般来说,不经用户明确同意就在用户系统上安装软件并不是一个好主意,自动升级软件也不是一个好主意,因为有时管理员会出于一个好的和有价值的原因而将软件固定在特定的版本上。此外,可能需要在某些安静的时间进行更新,以避免过多的停机时间。
如果您的程序需要依赖项,那么您应该将其打包成系统包格式(在本例中,可能是DEB),然后声明对软件所需软件的依赖关系。例如,如果需要配置Apache,则声明依赖于apache2。然后管理员可以看到所需的依赖项,选择是否安装您的软件,并一次以方便的方式管理更新。如果不需要包,则可以声明可选依赖项,例如建议依赖项。
如果您需要知道系统上是否存在二进制(例如,apache2),那么POSIX的方法就是command -v apache2。这是可移植的,跨系统工作,并且不调用二进制文件。
如果您想知道Debian或Ubuntu系统上是否安装了包,那么正确的命令(在本例中是dpkg)是:
$ dpkg-query -W -f '${db:Status-Abbrev}\n' dpkg | grep -qsE '^.i'如果安装了软件包,它将返回0,如果没有,则返回1。
https://unix.stackexchange.com/questions/625918
复制相似问题