Bagaimana saya bisa secara program menentukan apakah suatu sistem adalah desktop atau server?

12

Apakah ada cara untuk membedakan antara Ubuntu Server dan Ubuntu Desktop?

Saya memiliki skrip Bash ( plug shameless ) yang saya gunakan untuk mengatur server web yang ringan, dan saya perhatikan bahwa ketika saya menjalankan skrip ini di komputer saya sendiri, instal Ubuntu (Desktop) saya menjadi kacau - saya cukup yakin pelakunya adalah baris kode berikut:

echo -e "\e[1;32mDave, I'm removing the bloatware.\e[0m"

for halBox_package in apache2 bind9 nscd php portmap rsyslog samba sendmail; do
    if [[ -f /etc/init.d/$halBox_package ]]; then
        ( service $halBox_package stop ) > /dev/null
    fi

    ( apt-get -qq -y remove --purge "$halBox_package*" ) > /dev/null 2>&1
done

Apa yang ingin saya lakukan adalah mendeteksi apakah skrip sedang dijalankan dalam Server flavor atau tidak, jadi saya dapat memutuskan apakah akan menghapus paket-paket itu atau tidak. Jika tidak mungkin membedakan rasa, bisakah Anda memberi tahu saya paket mana yang diperlukan agar Desktop Ubuntu berfungsi dengan baik?

Alix Axel
sumber
@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Tidak ada yang dapat saya gunakan untuk mengetahui apakah itu Server atau Desktop.
Alix Axel
Secara mendasar, ada sedikit perbedaan antara Ubuntu Server dan Ubuntu. Perbedaannya adalah fakta bahwa versi Desktop dilengkapi dengan GUI, tetapi Anda dapat menginstal GUI ke server ubuntu CLI. Anda juga dapat menginstal paket server ke versi GUI Desktop Ubuntu. Saya tidak yakin ada cara yang pasti, bersih untuk menentukan media instalasi Desktop vs. Server.
Thomas Ward
@Rinzwind: Ini adalah pemasangan server. Saya juga memiliki 3 VPS lain di 2 penyedia berbeda dengan edisi server dan tidak ada satupun yang menunjukkan string "server". Saya kira membaca lsb_releasesaja tidak cukup dapat diandalkan.
Alix Axel
@ TheLordofTime: Ya, saya tahu mereka hampir sama. Tapi saya pikir mungkin ada setidaknya satu paket penting yang akan membedakan keduanya.
Alix Axel
Sebagai catatan tindak lanjut, masalahnya adalah ekspresi reguler paket, mengubahnya untuk ( apt-get -qq -y remove --purge "^$halBox_package*" )bekerja pada kedua rasa Server dan Desktop.
Alix Axel

Jawaban:

9

Perintah

dpkg -l ubuntu-desktop 

Hasil:

Diinginkan = Tidak Dikenal / Instal / Hapus / Bersihkan / Tahan
| Status = Tidak / Inst / Conf-files / Unpacked / halF-conf / Half-inst / trig-aWait / Trig-pend
| / Err? = (Tidak ada) / Diperlukan kembali (Status, Err: huruf besar = buruk)
|| / Deskripsi Versi Arsitektur Deskripsi
+++ - ============== - ============ - ============ - ===== ============================
ii ubuntu-desktop 1.287 i386 Sistem desktop Ubuntu

 - Daftar barang

Gua-at

Ini tidak akan berfungsi jika seseorang menginstal desktop tanpa menggunakan ubuntu-desktop. Tetapi siapa yang melakukan itu?

Dokumentasi

  • Sebelum 12,04, server Ubuntu menginstal kernel yang dioptimalkan oleh server secara default. Sejak 12,04, tidak ada perbedaan dalam kernel antara Ubuntu Desktop dan Ubuntu Server karena linux-image-server digabungkan menjadi linux-image-generic.
Rinzwind
sumber
BTW, $?akan menjadi 1jika dpkg -lgagal mendaftar apa pun, 0jika tidak. Mengenai grep desktophal itu akan selalu cocok, baik paket atau pesan yang mengatakan itu belum ditemukan.
Alix Axel
1
Oke ini edit terakhir saya, saya harap! Bisakah Anda membersihkan komentar juga? >: D
Rinzwind
Saya hanya membaca dpkghalaman manual, tetapi tampaknya ini berhasil. Jika seseorang menginstal desktop tanpa ubuntu-desktop, mereka harus cukup pintar untuk memperbaiki masalah yang disebabkan oleh skrip saya, jadi semuanya baik-baik saja! : P
Alix Axel
( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1bekerja dengan baik, terima kasih!
Alix Axel