나는 그 위에 맞춤형 (소형) 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-release
xyz
答え3
출력을 확인하십시오.
lsb_release -a
그리고:
cat /etc/issue
rpm
RedHat 및 Debian에 대한 더 많은 하위 수준 패키지 명령을 확인할 수도 있습니다 dpkg
.
答え4
uname -a
그리고 cat /proc/version
(슈퍼유저 읽기 전용)가 이 질문에 대한 유일한 정답이라고 생각합니다. 나머지는 - 예를 들어 or - 모든 시스템에서 사용 가능/사용 가능하지 않기 때문입니다 lsb_release
( /etc/issue
공식 cat /proc/sys/kernel/version
데비안 배포판도 아님). 변경될 수 /etc/*releases
있으므로 번거롭게 사용하지 마세요 . /etc/*version
후자는 모든 데비안 배포판에서 사용할 수 없습니다.
다른 옵션은 다음과 같습니다(권장 사항은 아님).
- 연결되어 있는지 확인하거나
dash
확인하십시오 (스크립트 실행을 위한 기본값이어야 함).sh
dash
- 다음을 실행하여 패키지 관리자를 확인하세요.
>/dev/null 2>&1 dpkg --version && { ... }