Come posso sapere se una build è basata su Debian?


9

Sto iniziando a lavorare con una scatola che ha un Linux personalizzato (piccolo) su di esso. Come posso sapere se si tratta di una build basata su Debian o Red Hat?

Questo è quello che so finora:

$ 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

perchè lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-?? Basta eseguirelsb_release -si

Risposte:


2

L'esecuzione uname -adovrebbe fornire alcune informazioni generali sul sistema. Inoltre, puoi eseguire apropos "package manager"o con parole chiave simili per sperare di saperne di più sul gestore dei pacchetti. Cerca /etcun file chiamato xyz-releasedove xyzdovrebbe essere la distro in esecuzione.


Questo è quello che ottengo quando eseguo uname -a: $ uname -a Linux 10.0.1.46 2.6.31-2.5 # 7 gio 15 dic 19:57:09 CST 2011 mips GNU / Linux
Sparky1

@ Sparky1 Quindi, sembra che tu abbia ottenuto una distribuzione Linux-MIPS .

7

Per i test per i sistemi Debian, puoi verificare se /etc/debian_versionesiste:

if [ -f "/etc/debian_version" ]; then
   # do stuff
fi

Dovrebbero essere inclusi Debian e sistemi basati su di esso (incluso Ubuntu e i suoi derivati), anche se alcuni potrebbero non averlo - in questo caso è possibile controllare i /etc/*releasefile:

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   # do stuff
fi

Dov'è debian|buntu|mintun elenco di nomi di distribuzioni da cercare (non sensibili al caso) - puoi avere un'idea di alcuni derivati ​​comuni da qui , sebbene i derivati ​​debian come Ubuntu abbiano i loro derivati .


Per i sistemi basati su RedHat, i derivati ​​utilizzano una gamma più ampia di file e potrebbero non essere installati lsb-release, quindi è possibile applicare i seguenti metodi:

  • ottenere il nome della versione da

    lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • Controlla l'ID DISTRIB nel lsb-releasefile - un "metodo di fallback che probabilmente non è necessario sui sistemi moderni", inoltre il file apparentemente manca su Fedora e non contiene DISTRIB_ID su OpenSUSE

  • verificare l'esistenza di alcuni dei seguenti

    • /etc/fedora-releasee / o /etc/redhat-releaseper RedHat o Fedora
    • /etc/SuSE-release per SuSe
    • /etc/mandriva-release per mandriva / mageia
  • usare un metodo simile a quest'ultimo debian:

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

I primi 3 punti che ho ricavato dall'aggiornamento cron di Google Chrome, quindi puoi esaminarlo per saperne di più (determina anche i gestori di pacchetti)


Per una gamma più ampia di sistemi operativi, leggere questo post su SO dovrebbe aiutare.


2

Controlla l'output di:

lsb_release -a

e:

cat /etc/issue

Puoi anche controllare altri comandi di pacchetti a bassa leva rpmper RedHat e dpkgDebian.


Comando $ dpkg non trovato $ rpm (mostra le opzioni per il comando rpm). Sembra una build basata su cappello rosso. Grazie per l'aiuto!
Sparky1

2
puoi anche controllare il file / etc / debian_version , che esiste in tutta la distribuzione linux basata su debian
Coren

Installalo anche usando apt-get install lsb-releasese non è installato.
Massood Khaari,

1

Se si tratta di un dispositivo incorporato (ad esempio un router SoHo), probabilmente non si tratterà di nessuna delle distro "desktop / server". Proverei a consultare il manuale del dispositivo, il sito Web del produttore (dovrebbe avere origine al codice con licenza GPL) e il Web in generale.


0

uname -ae cat /proc/version( sola lettura per i superutenti ), secondo la mia onesta opinione, sono le uniche risposte corrette a questa domanda in quanto gli altri - come lsb_release, /etc/issueo cat /proc/sys/kernel/version- non sono disponibili / non utilizzabili su tutti i sistemi (nemmeno le distribuzioni Debian ufficiali). Inoltre, non preoccuparti di usare /etc/*releases, /etc/*versionpoiché possono essere modificati. Quest'ultimo non è disponibile su tutte le distribuzioni Debian.

Altre opzioni potrebbero essere (non la mia raccomandazione):

  • Controlla dasho verifica se shè collegato dash(dovrebbe essere l'impostazione predefinita per l'esecuzione degli script)
  • Controllare il gestore pacchetti eseguendo >/dev/null 2>&1 dpkg --version && { ... }
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.