Mengapa / etc / fstab tidak menggunakan XML atau JSON?

22

Ini lebih seperti pertanyaan umum Linux / pemrograman, tapi saya sudah pemrograman untuk sementara waktu, dan saya terbiasa menggunakan format seperti XML atau JSON pada file apa pun yang digunakan untuk tujuan konfigurasi.

Menjadi orang baru di Linux, saya menyadari bahwa file konfigurasi pertama yang saya temui ( /etc/fstab) menggunakan semacam format tabel. Jadi mengapa tidak XML atau JSON?

jzeus
sumber
7
Apa yang akan terjadi jika, katakanlah, kami memiliki parsing pustaka XML di dalam /usr/lib/libxml.sodan /usrdi partisi terpisah? Untuk mengurai /etc/fstabsistem harus me-mount /usrz in order to load libxml , but to do so it would have to parse / etc / fstab` untuk mengetahui filesystem mana yang akan di-mount. Untuk menghindari hal ini, parser XML mungkin harus menjadi bagian dari kernel yang tidak terdengar seperti ide yang fantastis.
el.pescado
4
@ V0R73X, jika Anda merasa pertanyaan ini adalah pertanyaan Linux yang lebih umum, ada situs Stack lain yang disebut UNIX & Linux Stack Exchange, unix.stackexchange.com. Keduanya mungkin baik-baik saja, dan sudah ada jawaban di sini, tetapi hanya membuangnya untuk masa depan.
trysis
8
XML dan sejenisnya tidak selalu merupakan format yang lebih baik. Tabel adalah tabel dan harus disimpan seperti itu. Bahkan beberapa orang berpikir bahwa XML tidak baik untuk apa pun plus.google.com/+LinusTorvalds/posts/X2XVf9Q7MfV
alfC
2
JSON tidak boleh digunakan untuk file konfigurasi. Itu tidak mendukung komentar, yang penting untuk menjelaskan opsi konfigurasi, dan untuk mencoba hal-hal dengan mengomentari bagian konfigurasi.
artbristol
2
XML adalah format transport dokumen, bukan format file konfigurasi.
Matthew Ife

Jawaban:

82

/etc/fstab jauh lebih tua dari XML dan JSON, dan karena cukup banyak program menggunakannya mengubah formatnya akan menjadi mimpi buruk.

Selain itu ini /etc/fstabperlu diuraikan sebelum ada sistem fungsional karena digunakan untuk me-mount semua sistem file penting. Oleh karena itu format /etc/fstabharus sesederhana mungkin karena pengurai tidak harus bergantung pada lib eksternal.

Parsing XML cukup sulit dan Anda benar-benar ingin menghindarinya jika Anda tidak dapat menyampaikan pada lib eksternal. JSON sedikit lebih mudah tetapi masih cukup sulit.

Semantiknya /etc/fstabcukup sederhana, mereka tidak menyertakan struktur data seperti pohon atau barang mewah lainnya. Yang Anda butuhkan adalah catatan yang terdiri dari enam nilai.

Nilai yang dipisahkan oleh whitepace cukup baik untuk itu, dan mereka mudah diurai bahkan jika yang Anda miliki hanyalah lib standar C.

Jadi tidak ada alasan untuk menggunakan JSON, XML atau yang serupa.

Florian Diesch
sumber
bidang yang dipisahkan putih cukup untuk apa yang perlu dilakukan fstab. tidak ingin membuat segalanya menjadi lebih rumit hanya demi melakukannya.
Michael Martinez
CSV akan lebih sederhana dan lebih mudah
Kereta luncur
3
@ ArtB mengapa menurut Anda mengubah pembatas akan mengubah kompleksitas parsing file?
Dan Neely
Bergantung pada aturan untuk mengutip, melarikan diri, dll. CSV bisa sedikit lebih mudah untuk diuraikan karena pembatas selalu satu karakter daripada pembatas panjang variabel yang saat ini digunakan. Tetapi format saat ini memungkinkan keterbacaan manusia yang lebih baik, yang juga merupakan nilai penting.
Florian Diesch
32

Anda harus benar-benar membaca The Art of Unix Programming karya Eric Raymond suatu saat. Anda tampaknya membuat asumsi bahwa perancang Unix akan menggunakan XML /etc/fstabjika mereka tahu tentang hal itu. Sebaliknya, meskipun XML secara khusus belum ditemukan, mereka cukup menyadari pendahulunya yang serupa, dan sengaja menolaknya untuk file konfigurasi seperti /etc/fstab.

Mengutip dari sub- bagiannya pada XML :

XML sangat cocok untuk format data yang kompleks (hal-hal yang tradisi Unix jadulnya akan menggunakan format bait seperti RFC-822) meskipun berlebihan untuk yang lebih sederhana. Sangat cocok untuk format yang memiliki struktur bersarang atau rekursif yang kompleks dari jenis yang tidak ditangani dengan baik oleh metaformat RFC 822.

dan lebih jauh ke bawah:

Masalah paling serius dengan XML adalah ia tidak bisa digunakan dengan alat Unix tradisional. Perangkat lunak yang ingin membaca format XML membutuhkan parser XML; ini berarti program yang besar dan rumit. Juga, XML itu sendiri agak besar; mungkin sulit untuk melihat data di tengah-tengah semua markup.

Filosofi Unix adalah membuat konfigurasi dengan mudah skrip dan dapat dibaca manusia jika memungkinkan. Anda harus dapat memproses file konfigurasi dengan alat-alat seperti awk, grep, sed, tr, dan cut, dan dengan mudah menguraikannya dalam bahasa scripting tanpa perpustakaan besar. Ini adalah alasan besar di balik kesuksesan Unix dan tidak boleh diremehkan.

Meskipun Eric Raymond memuji XML untuk kemampuannya menangani "format yang memiliki struktur bersarang atau rekursif yang kompleks," /etc/fstabtentu saja tidak perlu untuk itu, dan oleh karena itu format file yang paling sederhana mungkin dipilih untuk itu.

Jadi walaupun XML jelas memiliki kegunaannya, Anda mungkin ingin mempertimbangkan bahwa beberapa programmer paling pintar di planet ini yang memelopori bidang ini mungkin sudah tahu apa yang mereka lakukan. Mungkin XML tidak selalu paling cocok untuk file konfigurasi Anda sendiri.

Karl Bielefeldt
sumber
18

Alasan utama yang bisa saya pikirkan sekarang adalah:

Radu Rădeanu
sumber
4
Jawaban ini tidak benar-benar menunjukkan bahwa fstabfile / format setua mount, yang tampaknya Anda hanya menyiratkan. Menurut man fstab, " Nenek moyang format file fstab ini muncul di 4.0BSD. " (Frasa BSD itu " Format file fstab muncul di 4.0BSD. "). 4.0BSD dirilis pada 1980 .
Daniel Beck
@DanielBeck Jadi, tebakan saya untungnya benar, sebelum tahun 1985.
Radu Rădeanu