首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux脚本检查版本或安装

问Linux脚本检查版本或安装
EN

Unix & Linux用户
提问于 2020-12-23 23:33:39
回答 1查看 127关注 0票数 0

我正在用mysql、phpmyadmin等构建一些应用程序来设置apache服务器。因此,我需要一个comand来检查是否存在安装,例如apache2:

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

我没有Linux方面的专家,但到目前为止我有以下几点:

代码语言:javascript
复制
apache2 -v || {
        sudo apt install apache2 && {
            echo 'INSTALL_SUCCESS'
            exit -1
        }
    }
    echo 'NOT FOUND'

但老实说,我不知道这里发生了什么,但我知道它一直在运行安装,而且可能有更好的方法来实现hadle。

EN

回答 1

Unix & Linux用户

发布于 2020-12-24 02:48:11

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

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

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

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

代码语言:javascript
复制
$ dpkg-query -W -f '${db:Status-Abbrev}\n' dpkg | grep -qsE '^.i'

如果安装了软件包,它将返回0,如果没有,则返回1。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/625918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档