Как проверить, является ли ОС производной от Debian (Python) - PullRequest
0 голосов
/ 28 августа 2018

Какой хороший способ определить, является ли ОС производной от Debian (а также в будущем мне понадобятся те же функции для Fedora, FreeBSD и т. Д.) Из сценария Python?

Мне нужно это, чтобы выбрать, использовать ли команду dpkg -s, чтобы определить, какое программное обеспечение установлено, или я вернусь к проверке, есть ли команда в PATH.

Например, чтобы определить, установлен ли пакет xsltproc (и его версию, если это возможно), я использую dpkg -s xsltproc, если это Debian или производная система, или проверяю, есть ли xsltproc в PATH в противном случае .

1 Ответ

0 голосов
/ 28 августа 2018

Некоторые люди могут рекомендовать вам поискать функцию, которую вы хотите использовать, а не дистрибутив, а затем сделать вывод о том, что вы должны использовать, основываясь на этом. Например, если вы хотите использовать dpkg, убедитесь, что он существует, а затем используйте его, если можете.

Однако это не отвечает на ваш конкретный вопрос ... Как вы на самом деле можете сказать, на каком дистрибутиве вы работаете? В зависимости от того, какую версию Python вы используете, есть несколько вариантов:

  1. Используйте platform.linux_distribution(). Как задокументировано здесь , он вернет кортеж (distro name, version, id). Однако в Python 3 он устарел и будет удален 3.8.
  2. Используйте пакет distro. Как задокументировано здесь , вы получаете нечто удивительно похожее, устанавливая этот пакет и затем вызывая distro.linux_distribution(). В заметках о выпуске сказано, что это будет работать на 2.7 и 3.4 +.

Существуют более старые варианты, чем эти, но они устарели с версии 2.6, поэтому я их здесь не включил.

...