버전이나 설치를 확인하는 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관리자는 필요한 종속성을 확인하고, 소프트웨어 설치 여부를 선택하고, 업데이트를 모두 편리한 방식으로 한 번에 관리할 수 있습니다. 패키지가 필요하지 않은 경우 권장 종속성과 같은 선택적 종속성을 선언할 수 있습니다.

apache2예를 들어 시스템에 바이너리가 존재하는지 알아야 하는 경우 POSIX에서 묻는 방법은 입니다 command -v apache2. 이는 이식 가능하고 시스템 전반에서 작동하며 바이너리를 호출하지 않습니다.

특정 패키지가 Debian 또는 Ubuntu 시스템에 설치되어 있는지 알고 싶다면 올바른 명령(이 경우 dpkg)은 다음과 같습니다.

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

패키지가 설치되어 있으면 0을 반환하고 그렇지 않으면 1을 반환합니다.

관련 정보