Neden / etc / fstab XML veya JSON kullanmıyor?


22

Bu daha genel bir Linux / programlama sorusu gibidir, fakat bir süredir programlama yapıyorum ve yapılandırma amacıyla kullanılan herhangi bir dosyada XML veya JSON gibi bir format kullanmaya alışkınım .

Linux'ta yeni olduğumda, ilk girdiğim konfigürasyon dosyasının ( /etc/fstab) bir çeşit tablo formatı kullandığını fark ettim . Öyleyse neden XML veya JSON değil?


7
Ayrı bölüm içinde /usr/lib/libxml.sove içinde XML ayrıştırma kütüphanesi olsaydı ne olurdu /usr? /etc/fstabSistemin ayrıştırılması için hangi dosya sisteminin bağlanacağını bilmek için /usrz in order to load libxml , but to do so it would have to parse / etc / fstab` komutunu kullanmak gerekir. Bundan kaçınmak için, XML ayrıştırıcısının muhtemelen fantastik bir fikir gibi görünmeyen çekirdeğin bir parçası olması gerekir.
el.pescado

4
@ V0R73X, bu sorunun daha genel bir Linux sorusu olduğunu düşünüyorsanız UNIX & Linux Stack Exchange, unix.stackexchange.com adında başka bir Yığın sitesi var . Her ikisi de muhtemelen iyi olurdu ve burada zaten cevaplar var, ancak sadece gelecek için atıyorlar.
trysis

8
XML ve benzeri her zaman daha iyi bir format değildir. Bir masa bir tablodur ve böyle saklanmalıdır. Aslında, bazı insanlar XML'in hiçbir şey için iyi olmadığını düşünüyor plus.google.com/+LinusTorvalds/posts/X2XVf9Q7MfV
alfC

2
JSON yapılandırma dosyaları için kullanılmamalıdır. Yapılandırma seçeneklerini açıklamak ve yapılandırma bölümlerini yorumlayarak işleri denemek için gerekli olan yorumları desteklemez.
artbristol

2
XML, bir yapılandırma dosyası biçimi değil, belge taşıma biçimidir.
Matthew Ife

Yanıtlar:


82

/etc/fstab XML ve JSON'dan çok daha eski ve pek çok program kullandığı için formatını değiştirmek kabus gibi görünüyor.

Bunun yanında /etc/fstab, tüm gerekli dosya sistemlerini monte etmek için kullanıldığı için işlevsel bir sistem bulunmadan önce ayrıştırılması gerekir. Bu nedenle, formatı /etc/fstabayrıştırıcının herhangi bir dış kütüphaneye bağlı olmaması gerektiği kadar basit olmalıdır.

XML'in ayrıştırılması oldukça zordur ve eğer harici libleri yayınlayamıyorsanız, bundan gerçekten kaçınmak istersiniz. JSON biraz daha kolay ama yine de oldukça zor.

Anlamları /etc/fstaboldukça basittir, ağaç benzeri veri yapıları veya başka herhangi bir fantezi şeyi içermezler. Tek ihtiyacınız olan altı değerden oluşan kayıtlar.

Whitepace ile ayrılmış değerler bunun için yeterince iyi ve sahip olduğunuz tek C standart kütüphanesi olsa bile ayrıştırılması kolaydır.

Yani JSON, XML veya benzeri bir şey kullanmak için hiçbir neden yoktur.


Beyaz ayrılmış alanlar fstab'ın yapması gerekenler için yeterlidir. Yapmak uğruna işleri daha karmaşık hale getirmek istemiyorum.
Michael Martinez

Bir CSV daha basit ve kolay olurdu
Sled

3
@ArtB neden sınırlayıcıyı değiştirmenin dosyayı ayrıştırmanın karmaşıklığını değiştireceğini düşünüyorsun?
Dan Neely

Alıntılama, kaçma vb. Kurallara bağlı olarak, sınırlayıcı, kullanılan değişken uzunluk sınırlayıcı yerine her zaman bir karakter olduğundan CSV'nin ayrıştırılması biraz daha kolay olabilir. Ancak mevcut format, aynı zamanda önemli bir değer olan daha iyi insan okunabilirliği sağlar.
Florian Diesch

32

Bir ara Eric Raymond'ın The Unix Programlama Sanatı'nı gerçekten okumalısınız . Unix tasarımcılarının, /etc/fstabeğer bilselerdi için XML kullanmış olacağı varsayımını yapıyor gibi görünüyorsunuz . Aksine, XML özellikle icat edilmemiş olmasına rağmen, benzer öncüllerinin oldukça farkındaydılar ve bunları yapılandırma dosyaları için kasten reddetti /etc/fstab.

XML'deki alt bölümünden alıntı :

XML, karmaşık veri formatları (eski okul Unix geleneğinin RFC-822 benzeri bir stanza formatı kullanacağı türler için) için çok uygundur, ancak daha basit olanlar için overpric. RFC 822 metaformatının iyi işlememediği türden karmaşık bir iç içe geçmiş veya özyinelemeli yapıya sahip formatlar için özellikle uygundur.

ve daha aşağı:

XML'in en ciddi sorunu, geleneksel Unix araçlarıyla iyi oynamamasıdır. XML formatını okumak isteyen yazılım için bir XML ayrıştırıcı gerekir; Bu hantal, karmaşık programlar demektir. Ayrıca, XML kendisi oldukça hantaldır; Tüm işaretlemeler arasında verileri görmek zor olabilir.

Unix felsefesi, konfigürasyonu kolayca yazılabilir ve mümkün olan her yerde okunabilir hale getirmektir. Config dosyalarını awk, grep, sed, tr ve cut gibi araçlarla işleyebilmeli ve hacimli kütüphaneleri olmayan betik dillerinde kolayca ayrabilmelisiniz. Bu Unix'in başarısının ardındaki büyük sebep ve hafife alınmaması gerekiyor.

Her ne kadar Eric Raymond, XML'i "karmaşık iç içe geçmiş veya özyinelemeli bir yapıya sahip formatları" işleyebildiği için övüyor olsa da, /etc/fstabkesinlikle bunlara ihtiyaç duymuyor ve bu nedenle mümkün olan en basit dosya formatı seçildi.

Bu nedenle, XML kesinlikle kullanımlarına rağmen, dünyadaki öncülük eden en akıllı programcıların bazılarının ne yaptıklarını bildiklerini düşünmek isteyebilirsiniz. Belki de XML her zaman kendi yapılandırma dosyalarınız için en uygun seçenek değildir.


18

Şimdi düşünebilmemin ana nedeni şudur:


4
Bu cevap aslında fstabdosya / biçimin eski olduğunu gösterir mount, ki bu sadece sizin ima ettiğiniz gibi. Buna göre man fstab, " Bu fstab dosya formatının atası 4.0BSD'de göründü. " (BSD'ler, " fstab dosya formatı 4.0BSD'de ortaya çıktı. " Demiştir ). 4.0BSD, 1980 yılında piyasaya sürüldü .
Daniel Beck

@DanielBeck 1985'ten önce neyse ki tahminim doğruydu.
Radu Rădeanu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.