Saya mulai bekerja dengan sebuah kotak yang memiliki custom Linux (kecil) di atasnya. Bagaimana saya bisa tahu apakah ini bangunan berbasis Debian atau Red Hat?
Inilah yang saya tahu sejauh ini:
$ 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-
?? Jalankan sajalsb_release -si
Jawaban:
Menjalankan
uname -a
harus memberi Anda beberapa informasi umum tentang sistem. Selain itu, Anda dapat menjalankanapropos "package manager"
atau dengan kata kunci serupa untuk mudah-mudahan mengetahui lebih lanjut tentang pengelola paket. Cari di/etc
file bernama dixyz-release
manaxyz
seharusnya distro berjalan.sumber
Untuk pengujian untuk sistem Debian, Anda dapat memeriksa apakah
/etc/debian_version
ada:Itu harus dimasukkan Debian dan sistem berdasarkan itu (termasuk Ubuntu dan turunannya), meskipun beberapa mungkin tidak memilikinya - dalam hal ini Anda dapat memeriksa
/etc/*release
file:Di mana
debian|buntu|mint
ada daftar nama distribusi yang harus dicari (bukan huruf besar-kecil) - Anda dapat mengetahui beberapa turunan umum dari sini , meskipun turunan debian seperti Ubuntu memiliki deriatifnya sendiri .Untuk sistem berbasis RedHat, turunannya menggunakan rentang file yang lebih besar, dan mungkin tidak menginstal lsb-release - sehingga Anda dapat menerapkan metode berikut:
dapatkan nama rilisnya
Periksa DISTRIB-ID dalam
lsb-release
file - 'metode mundur yang mungkin tidak perlu pada sistem modern', juga file tersebut tampaknya hilang pada Fedora, dan tidak mengandung DISTRIB_ID di OpenSUSEperiksa keberadaan beberapa berikut ini
/etc/fedora-release
dan / atau/etc/redhat-release
untuk RedHat atau Fedora/etc/SuSE-release
untuk SuSe/etc/mandriva-release
untuk mandriva / mageiagunakan metode yang mirip dengan debian yang terakhir:
3 poin pertama yang saya dapatkan dari cron pembaruan Google Chrome, jadi Anda bisa memeriksanya untuk mengetahui lebih lanjut (itu juga menentukan manajer paket)
Untuk rentang OS yang lebih luas, membaca posting ini di SO akan membantu.
sumber
Periksa output dari:
dan:
Anda juga dapat memeriksa lebih banyak perintah paket tuas rendah
rpm
untuk RedHat dandpkg
untuk Debian.sumber
apt-get install lsb-release
jika itu tidak diinstal.Jika itu adalah perangkat yang disematkan (mis. Router SoHo), itu mungkin bukan salah satu dari distro "desktop / server". Saya akan mencoba melihat manual perangkat, situs web produsen (harus memiliki sumber untuk kode berlisensi GPL), dan Web pada umumnya.
sumber
uname -a
dancat /proc/version
( hanya baca untuk pengguna super ), menurut pendapat jujur saya, adalah satu-satunya jawaban yang benar untuk pertanyaan ini karena sisanya - sepertilsb_release
,/etc/issue
ataucat /proc/sys/kernel/version
- tidak tersedia / tidak dapat digunakan pada setiap sistem (bahkan distro Debian resmi). Juga jangan repot-repot menggunakan/etc/*releases
,/etc/*version
karena mereka dapat diubah. Yang terakhir tidak tersedia di semua distro Debian.Pilihan lain dapat (bukan rekomendasi saya):
dash
atau verifikasi apakahsh
ditautkan kedash
(itu harus menjadi default untuk menjalankan skrip)>/dev/null 2>&1 dpkg --version && { ... }
sumber