빌드가 Debian 기반인지 어떻게 알 수 있나요?

빌드가 Debian 기반인지 어떻게 알 수 있나요?

나는 그 위에 맞춤형 (소형) Linux가 구축된 상자로 시작했습니다. 이것이 Debian 기반 빌드인지 Red Hat 기반 빌드인지 어떻게 알 수 있나요?

내가 지금까지 알고 있는 것은 다음과 같습니다.

$ cat /proc/version
Linux version 2.6.31-2.5 (build@build-desktop) (gcc version 4.4.3 (Broadcom stbgcc-4.4.3-1.2) ) #7

$ apt-get
-sh: apt-get: command not found

$ yum
-sh: yum: command not found

答え1

Debian 시스템에서 테스트하려면 시스템이 존재하는지 확인할 수 있습니다 /etc/debian_version.

if [ -f "/etc/debian_version" ]; then
   # do stuff
fi

이는 Debian 및 이를 기반으로 하는 시스템(Ubuntu 및 그 파생물 포함)에 포함되어야 하지만 일부에는 포함되어 있지 않을 수도 있습니다. 이 경우 모든  /etc/*release파일을 확인할 수 있습니다:

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   # do stuff
fi

debian|buntu|mint찾을 배포 이름 목록을 찾을 수 있는 위치 (대소문자 구분 안 함) - 몇 가지 일반적인 파생 항목에 대해 알아볼 수 있습니다.여기, 우분투와 같은 데비안 파생물이기는 하지만 자체 파생상품 보유.


RedHat 기반 시스템의 경우 파생물은 더 넓은 범위의 파일을 사용하므로 lsb-release아직 설치되지 않았을 수 있으므로 다음을 적용할 수 있습니다.

  • 버전 이름 가져오기

     lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • 파일에서 DISTRIB-ID를 확인하세요 lsb-release. 이는 대체이며 최신 시스템에서는 필요하지 않을 수 있으며, 파일은 Fedora에서 누락된 것으로 보이며 OpenSUSE에서는 DISTRIB_ID를 포함하지 않습니다.

  • 다음 중 일부가 있는지 확인하십시오.

    • /etc/fedora-release및/또는  /etc/redhat-release 각각 Fedora 또는 RedHat용
    • /etc/SuSE-release수 셀렌을 위해
    • /etc/mandriva-release만드리바/마기아
  • 후자의 데비안에도 비슷한 접근 방식을 사용하세요:

     if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
     ...
    

처음 3가지 사항은 Google Chrome의 업데이트 cron에서 가져온 내용이므로 이를 확인하여 자세히 알아볼 수 있습니다(패키지 관리자도 결정함).


더 넓은 범위의 운영 체제를 위해,"Bash 스크립트에서 운영 체제를 감지하는 방법은 무엇입니까?" 도움이 될 것입니다.

答え2

실행하면 uname -a시스템에 대한 몇 가지 일반 정보가 제공됩니다. 또한 apropos "package manager"패키지 관리자에 대한 자세한 정보를 찾기 위해 유사한 키워드를 사용하여 또는 를 실행할 수 있습니다. /etc실행 중인 배포판에 관계없이 where 라는 이름의 파일을 찾으세요 .xyz-releasexyz

答え3

출력을 확인하십시오.

lsb_release -a

그리고:

cat /etc/issue

rpmRedHat 및 Debian에 대한 더 많은 하위 수준 패키지 명령을 확인할 수도 있습니다 dpkg.

答え4

uname -a그리고 cat /proc/version(슈퍼유저 읽기 전용)가 이 질문에 대한 유일한 정답이라고 생각합니다. 나머지는 - 예를 들어 or - 모든 시스템에서 사용 가능/사용 가능하지 않기 때문입니다 lsb_release( /etc/issue공식 cat /proc/sys/kernel/version데비안 배포판도 아님). 변경될 수 /etc/*releases있으므로 번거롭게 사용하지 마세요 . /etc/*version후자는 모든 데비안 배포판에서 사용할 수 없습니다.

다른 옵션은 다음과 같습니다(권장 사항은 아님).

  • 연결되어 있는지 확인하거나 dash확인하십시오 (스크립트 실행을 위한 기본값이어야 함).shdash
  • 다음을 실행하여 패키지 관리자를 확인하세요.>/dev/null 2>&1 dpkg --version && { ... }

関連情報