Sur quelles distributions Linux puis-je compter sur la présence de / etc / os-release?

17

J'essaie de trouver un moyen de déterminer le nom et la version de la distribution Linux qui fonctionneraient sur la plupart (ou idéalement, toutes) les distributions modernes. J'ai remarqué qu'il /etc/os-releasecontient les informations dont j'ai besoin sur les distributions que j'ai essayées (CentOS, Debian), mais dans quelle mesure est-il sûr de s'appuyer sur sa présence? Les commandes telles que uname -ane contiennent pas vraiment les mêmes informations et ne lsb_releasesont apparemment pas présentes, par exemple, sur CentOS minimal.

Existe-t-il un moyen rapide de savoir exactement avec quelles distributions sont livrées /etc/os-release? De plus, est /etc/os-releasegaranti à contenir NAME, VERSIONet les PRETTY_NAMEchamps?

w128
la source
1
Ubuntu, Debian, Arch à coup sûr. Quoi qu'il en soit, j'omettre de détecter la distribution de cette façon. La dernière fois que j'ai besoin de distinguer les distributions, je vérifiais la présence de gestionnaires de paquets particuliers (ie pacman -> Arch, apt-get & no pacman -> Ubuntu ou Debian). C'est une tâche un peu délicate et j'aimerais aussi savoir s'il existe une meilleure solution.
ddnomad
1
On se demande pourquoi avez-vous besoin de connaître le nom de la distribution. Cela ressemble à un cas de détection de navigateur alors que vous devriez faire la détection de fonctionnalités .
xDaizu
@xDaizu J'exécute des scripts sur des hôtes distants pour extraire diverses informations à leur sujet.
w128
@ w128 dans ce cas, ne pouvez-vous pas vérifier si la "fonctionnalité" (/ etc / os-release) existe (et recourir à d'autres méthodes sinon) au lieu de vous fier à une liste statique de distributions où elle fonctionne?
xDaizu
1
@xDaizu se rabattre sur "d'autres méthodes" peut impliquer un travail supplémentaire qui peut s'avérer inutile si je peux garantir que la solution simple proposée dans la question est fiable sur les nombreuses distributions principales que je dois prendre en charge, donc une liste modifiable de distributions prises en charge est très bien dans ce cas.
w128 du

Réponses:

14

Tout système exécutant systemd devrait avoir /etc/os-release, qui est spécifié dans le cadre de systemd. Certains systèmes sans systemd peuvent l'avoir aussi ( par exemple Debian 8 où systemd est facultatif mais /etc/os-releaseest installé dans tous les cas).

Selon la spécification, tous les champs sont facultatifs et certains ont des valeurs par défaut ("Linux" pour NAMEet PRETTY_NAME).

Vous trouverez plus d'informations dans l' /etc/os-releaseannonce .

Stephen Kitt
la source