Я начинаю работать с коробкой, в которой есть пользовательская (маленькая) сборка 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
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
?? Просто бегиlsb_release -si
Ответы:
Запуск
uname -a
должен дать вам некоторую общую информацию о системе. Кроме того, вы можете запуститьapropos "package manager"
или с похожими ключевыми словами, чтобы, надеюсь, узнать больше о менеджере пакетов. Найдите/etc
файл с именемxyz-release
гдеxyz
должен быть установлен дистрибутив.источник
Для тестирования систем Debian вы можете проверить,
/etc/debian_version
существует ли :В него должен быть включен Debian и системы на его основе (включая Ubuntu и его производные), хотя некоторые могут его не иметь - в этом случае вы можете проверить
/etc/*release
файлы:Где
debian|buntu|mint
находится список имен дистрибутивов, которые нужно искать (без учета регистра) - отсюда вы можете составить представление о некоторых распространенных производных , хотя производные Debian, такие как Ubuntu, имеют свои собственные производные .Для систем на основе RedHat производные используют больший диапазон файлов и могут не иметь установленного lsb-release, поэтому вы можете применить следующие методы:
получить название релиза от
Проверьте DISTRIB-ID в
lsb-release
файле - «метод резервирования, который, вероятно, не нужен в современных системах», также файл явно отсутствует в Fedora и не содержит DISTRIB_ID в OpenSUSEпроверить наличие некоторых из следующих
/etc/fedora-release
и / или/etc/redhat-release
для RedHat или Fedora/etc/SuSE-release
для SuSe/etc/mandriva-release
для мандривы / магиииспользуйте метод, аналогичный последнему в Debian:
Первые 3 пункта я получил из cron обновления Google Chrome, чтобы вы могли изучить это, чтобы узнать больше (это также определяет менеджеров пакетов)
Для более широкого диапазона ОС чтение этого поста на SO должно помочь.
источник
Проверьте вывод:
а также:
Вы также можете проверить дополнительные команды пакета
rpm
для RedHat иdpkg
Debian.источник
apt-get install lsb-release
если он не установлен.Если это встроенное устройство (например, маршрутизатор SoHo), то, вероятно, это не будет дистрибутив «настольный компьютер / сервер». Я бы попробовал заглянуть в руководство по устройству, на сайт производителя (должен иметь исходный код, лицензированный по лицензии GPL) и в Интернете в целом.
источник
uname -a
иcat /proc/version
( только для чтения для суперпользователей ), по моему честному мнению, являются единственно правильными ответами на этот вопрос, поскольку остальные - какlsb_release
,/etc/issue
илиcat /proc/sys/kernel/version
- не доступны / не могут использоваться в каждой системе (даже в официальных дистрибутивах Debian). Также не беспокойтесь об использовании/etc/*releases
,/etc/*version
так как они могут быть изменены. Последний доступен не во всех дистрибутивах Debian.Другие варианты могут быть (не моя рекомендация):
dash
или проверить,sh
связан лиdash
он с (это должно быть по умолчанию для запуска сценариев)>/dev/null 2>&1 dpkg --version && { ... }
источник