Как я могу определить, является ли сборка на основе Debian?


9

Я начинаю работать с коробкой, в которой есть пользовательская (маленькая) сборка 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

Ответы:


2

Запуск uname -aдолжен дать вам некоторую общую информацию о системе. Кроме того, вы можете запустить apropos "package manager"или с похожими ключевыми словами, чтобы, надеюсь, узнать больше о менеджере пакетов. Найдите /etcфайл с именем xyz-releaseгде xyzдолжен быть установлен дистрибутив.


Это то, что я получаю, когда запускаю uname -a: $ uname -a Linux 10.0.1.46 2.6.31-2.5 # 7 чт 15 дек. 19:57:09 CST 2011 mips GNU / Linux
Sparky1

@ Sparky1 Тогда, похоже, вы приобрели дистрибутив Linux-MIPS .

7

Для тестирования систем 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находится список имен дистрибутивов, которые нужно искать (без учета регистра) - отсюда вы можете составить представление о некоторых распространенных производных , хотя производные Debian, такие как Ubuntu, имеют свои собственные производные .


Для систем на основе RedHat производные используют больший диапазон файлов и могут не иметь установленного lsb-release, поэтому вы можете применить следующие методы:

  • получить название релиза от

    lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • Проверьте DISTRIB-ID в lsb-releaseфайле - «метод резервирования, который, вероятно, не нужен в современных системах», также файл явно отсутствует в Fedora и не содержит DISTRIB_ID в OpenSUSE

  • проверить наличие некоторых из следующих

    • /etc/fedora-releaseи / или /etc/redhat-releaseдля RedHat или Fedora
    • /etc/SuSE-release для SuSe
    • /etc/mandriva-release для мандривы / магии
  • используйте метод, аналогичный последнему в Debian:

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

Первые 3 пункта я получил из cron обновления Google Chrome, чтобы вы могли изучить это, чтобы узнать больше (это также определяет менеджеров пакетов)


Для более широкого диапазона ОС чтение этого поста на SO должно помочь.


2

Проверьте вывод:

lsb_release -a

а также:

cat /etc/issue

Вы также можете проверить дополнительные команды пакета rpmдля RedHat и dpkgDebian.


Команда $ dpkg не найдена $ rpm (показывает опции для команды rpm). Похоже, это сборка на основе красной шляпы. Спасибо за помощь!
Sparky1

2
Вы также можете проверить файл / etc / debian_version , который существует во всех дистрибутивах Linux на основе Debian
Coren

Также установите его, используя, apt-get install lsb-releaseесли он не установлен.
Массуд Хаари

1

Если это встроенное устройство (например, маршрутизатор SoHo), то, вероятно, это не будет дистрибутив «настольный компьютер / сервер». Я бы попробовал заглянуть в руководство по устройству, на сайт производителя (должен иметь исходный код, лицензированный по лицензии GPL) и в Интернете в целом.


0

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 && { ... }
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.