Linux脚本检查版本或安装

Linux脚本检查版本或安装

我正在构建一些应用程序,用于使用 mysql、phpmyadmin 等设置 apache 服务器...所以我需要一个命令来检查安装是否存在,例如apache2

  1. 需要检查软件包是否已安装或是否存在更新
  2. 自动安装新/版本包
  3. 返回是否安装成功。

我没有 Linux 方面的专家,但到目前为止我有这个:

apache2 -v || {
        sudo apt install apache2 && {
            echo 'INSTALL_SUCCESS'
            exit -1
        }
    }
    echo 'NOT FOUND'

但说实话,我不知道这里发生了什么,但我知道它一直在运行安装,并且可能有更好的方法来解决这个问题。

答案1

一般来说,未经用户明确同意就在用户的系统上安装软件并不是一个好主意,自动升级软件也不是一个好主意,因为有时管理员会出于充分且有价值的原因而固定到特定版本。此外,更新可能需要在某些安静时间进行,以避免过多的停机时间。

如果您的程序需要依赖项,那么您应该将其打包为系统包格式(在本例中,可能是 DEB),然后声明您的软件所需的软件的依赖项。例如,如果您需要配置 Apache,则声明对apache2.然后,管理员可以查看所需的依赖项,选择是否安装您的软件,并以方便的方式一次管理更新。如果不需要该包,您可以声明可选依赖项,例如 Recommends 依赖项。

如果您需要知道apache2系统上是否存在二进制文件(例如 ),询问的 POSIX 方式是command -v apache2。这是可移植的,跨系统工作,并且不调用二进制文件。

如果您想知道在 Debian 或 Ubuntu 系统上是否安装了某个软件包,那么正确的命令(在本例中为 for dpkg)是这样的:

$ dpkg-query -W -f '${db:Status-Abbrev}\n' dpkg | grep -qsE '^.i'

如果安装了该软件包,则返回 0;如果未安装,则返回 1。

相关内容