Su quali distribuzioni Linux posso fare affidamento sulla presenza di / etc / os-release?


17

Sto cercando di trovare un modo per determinare il nome e la versione della distribuzione Linux che funzionerebbe sulla maggior parte (o idealmente, su tutte) le distribuzioni moderne. Ho notato che /etc/os-releasecontiene le informazioni di cui ho bisogno sulle distribuzioni che ho provato (CentOS, Debian), ma quanto è sicuro fare affidamento sulla sua presenza? Comandi come uname -anon contengono realmente le stesse informazioni e lsb_releaseapparentemente non sono presenti su CentOS minimo.

Esiste un modo rapido per scoprire esattamente quali sono le distro /etc/os-release? Inoltre, è /etc/os-releasegarantito per contenere NAME, VERSIONe PRETTY_NAMEcampi?


1
Ubuntu, Debian, Arch di sicuro. Ad ogni modo, ometterei di rilevare la distribuzione in quel modo. L'ultima volta che ho bisogno di distinguere le distro stavo verificando la presenza di particolari gestori di pacchetti (ad es. Pacman -> Arch, apt-get & no pacman -> Ubuntu o Debian). È un compito piuttosto complicato e vorrei anche sapere se esiste una soluzione migliore.
ddnomad,

1
Ci si chiede perché è necessario conoscere il nome della distribuzione. Sembra un caso di rilevamento del browser quando dovresti eseguire il rilevamento delle funzionalità .
xDaizu

@xDaizu Sto eseguendo degli script su host remoti per estrarre varie informazioni su di essi.
w128,

@ w128 in quel caso, non riesci a controllare se la "caratteristica" (/ etc / os-release) esiste (e fallback in altri metodi se non) invece di fare affidamento in un elenco statico mutabile di distribuzioni dove funziona?
xDaizu

1
@xDaizu ricadendo su "altri metodi" può comportare un lavoro extra che potrebbe rivelarsi superfluo se posso garantire che la semplice soluzione proposta nella domanda sia affidabile sulle varie distro principali che devo supportare, quindi un elenco mutevole di distro supportate va bene in questo caso.
w128,

Risposte:


14

Qualsiasi sistema che esegue systemd dovrebbe avere /etc/os-release, che è specificato come parte di systemd. Anche alcuni sistemi senza systemd potrebbero averlo ( ad esempio Debian 8 dove systemd è opzionale ma /etc/os-releaseè installato in tutti i casi).

Secondo le specifiche, tutti i campi sono opzionali e alcuni hanno impostazioni predefinite ("Linux" per NAMEe PRETTY_NAME).

Troverete più di fondo nel /etc/os-releasebando .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.