LINUX.ORG.RU

как достоверно определить какой дистрибутив находится на файловой системе?

 , ,


0

2

не на всех системах установлен lsb. на сколько я понял, /etc/os-release там где systemd - он стандартизован. но он же ещё присутствует на системах без systemd и в нём каша.

Есть ли способ видя файловую систему и не зная что там вообще за дистрибутив - определить что там за дистрибутив?

спросить пользователя

Harald ★★★★★ ()

Универсального, очевидно, нет. Можно написать развесистый скрипт, который будет угадывать большую часть распространённых.

function get_distro_name {
    if [[ -r '/etc/lsb-release' ]]; then
        . /etc/lsb-release
        [[ "$DISTRIB_ID" ]] && n="$DISTRIB_ID"
    elif [[ -r '/etc/release' ]]; then
        n=`head -1 /etc/release | sed 's/ *\([[^0-9]]*\) [0-9].*/\1/'`
    elif [[ -r '/etc/arch-release' ]]; then
        n="Arch Linux"
    elif [[ -r '/etc/debian_version' ]]; then
        n='Debian'
    elif [[ -r '/etc/gentoo-release' ]]; then
        n='Gentoo'
    elif [[ -r '/etc/knoppix-version' ]]; then
        n='Knoppix'
    elif [[ -r '/etc/mandrake-release' ]]; then
        n='Mandrake'
    elif [[ -r '/etc/pardus-release' ]]; then
        n='Pardus'
    elif [[ -r '/etc/puppyversion' ]]; then
        n='Puppy Linux'
    elif [[ -r '/etc/redhat-release' ]]; then
        n='Red Hat'
    elif [[ -r '/etc/sabayon-release' ]]; then
        n='Sabayon'
    elif [[ -r '/etc/slackware-version' ]]; then
        n='Slackware'
    elif [[ -r '/etc/SuSE-release' ]]; then
        n='SuSE'
    elif [[ -r '/etc/xandros-desktop-version' ]]; then
        n='Xandros'
    elif [[ -r '/etc/zenwalk-version' ]]; then
        n="Zenwalk"
    fi
    [[ "${n:-}" = '' ]] &&  \echo "ERROR: Could not determine the distro name" >&2 && \exit 1
} # get_distro_name

(c) http://www.linuxquestions.org/questions/linux-newbie-8/user-add-763042/page2....

Ещё можно в /etc/issue смотреть

monk ★★★★★ ()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

да, это взято из os-prober. я подумываю написать это по-нормальному.

powerguy ★★ ()

это как web browser sniffer - угадывать что там за движок. Это позорный подход.

anonymous ()
Ответ на: комментарий от niemand

Ну чего, как вариант. Можно gcc -v подсмотреть.

Dude ()

нет, или очень приблизительный способ. Главное - это ядро. А что и как на него натянуто, это уже не важно

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.