Чому / etc / fstab не використовує XML або JSON?


22

Це більше схоже на загальне запитання щодо Linux / програмування, але я певний час програмував, і я звик використовувати такий формат, як XML або JSON, для будь-якого файлу, який використовується для налаштування.

Будучи новим у Linux, я зрозумів, що перший файл конфігурації, який я натрапив на ( /etc/fstab), використовує якийсь формат таблиці. То чому б не XML чи JSON?


7
Що буде, якби, скажімо, у нас була бібліотека для розбору XML в окремому розділі /usr/lib/libxml.soта /usrна ньому? Для того, щоб проаналізувати /etc/fstabсистему, слід було б змонтувати /usrz in order to load libxml , but to do so it would have to parse / etc / fstab`, щоб знати, у яку файлову систему потрібно встановити. Щоб уникнути цього, XML-аналізатор, ймовірно, повинен бути частиною ядра, що не здається фантастичною ідеєю.
el.pescado

4
@ V0R73X, якщо ви вважаєте, що це питання є більш загальним питанням Linux, є ще один сайт Stack, який називається UNIX & Linux Stack Exchangeunix.stackexchange.com. І з тим, ймовірно, буде гаразд, і тут вже є відповіді, але просто викидаю це на майбутнє.
трис

8
XML тощо - це не завжди кращий формат. Таблиця - це таблиця, і її слід зберігати як таку. Насправді деякі люди думають , що XML не придатний plus.google.com/+LinusTorvalds/posts/X2XVf9Q7MfV
alfC

2
JSON не слід використовувати для файлів конфігурації. Він не підтримує коментарів, які є важливими для пояснення параметрів конфігурації та для випробування речей, коментуючи частини конфігурації.
artbristol

2
XML - це формат транспорту документа, а не формат файлу конфігурації.
Метью Іфе

Відповіді:


82

/etc/fstab набагато старший за XML та JSON, і оскільки досить багато програм використовують його, зміна його формату була б кошмаром.

Крім того, це /etc/fstabпотрібно проаналізувати, перш ніж з'явиться функціональна система, оскільки вона використовується для монтажу всіх необхідних файлових систем. Отже, формат /etc/fstabповинен бути максимально простим, оскільки аналізатор не повинен залежати від зовнішніх ліфтів.

Проаналізувати XML досить складно, і вам дуже хочеться цього уникнути, якщо ви не можете ретранслюватися на зовнішні лаби. JSON трохи простіше, але все-таки досить складно.

Семантика /etc/fstabдосить проста, вони не включають будь-які деревоподібні структури даних або будь-які інші химерні речі. Все, що вам потрібно, це записи, що складаються з шести значень.

Значення, розділені з білого простору, для цього досить хороші, і їх легко проаналізувати, навіть якщо все, що у вас є, це стандартні літери C.

Тож просто немає причин використовувати JSON, XML чи щось подібне.


білих розділених полів достатньо для того, що потрібно зробити fstab. не хочуть ускладнювати речі просто заради цього.
Майкл Мартінес

CSV був би ще простішим і простішим
Sled

3
@ArtB чому ви думаєте, що зміна роздільника змінить складність розбору файлу?
Ден Нелі

Залежно від правил котирування, втечі тощо. CSV може бути трохи простішим для розбору, оскільки роздільник завжди є одним знаком замість використовуваного в даний час роздільника змінної довжини. Але сучасний формат дозволяє покращити читабельність людини, що також є важливою цінністю.
Флоріан Дієш

32

Ви дійсно повинні прочитати десь Еріка Реймонда «Мистецтво програмування Unix» . Здається, ви робите припущення, що дизайнери Unix використовували б XML, /etc/fstabякби вони про це знали. Навпаки, хоча XML спеціально не був винайдений, вони були цілком обізнані з його аналогічними попередниками і навмисно відхиляли їх за такими файлами конфігурації /etc/fstab.

Цитуючи його підрозділ на XML :

XML добре підходить для складних форматів даних (таких речей, для яких традиція старої школи Unix використовує формат строфи типу RFC-822), але надмірний рівень для більш простих. Особливо це підходить для форматів, які мають складну вкладену або рекурсивну структуру такого типу, з якою метаформат RFC 822 не справляється добре.

і далі вниз:

Найсерйозніша проблема XML полягає в тому, що він не дуже добре грає з традиційними інструментами Unix. Програмному забезпеченню, яке хоче прочитати формат XML, потрібен XML-аналізатор; це означає громіздкі, складні програми. Крім того, XML сам по собі досить об'ємний; може бути важко побачити дані серед усієї розмітки.

Філософія Unix полягає в тому, щоб зробити конфігурацію легко читаючою та зрозумілою для людей, де це можливо. Ви повинні мати можливість обробляти конфігураційні файли з такими інструментами, як awk, grep, sed, tr та cut, та легко розбирати їх у мовах сценаріїв без об'ємних бібліотек. Це величезна причина успіху Unix, і його не можна недооцінювати.

Хоча Ерік Реймонд хвалить XML за його здатність обробляти "формати, які мають складну вкладену або рекурсивну структуру", в них, /etc/fstabзвичайно, немає потреби, і тому для нього було обрано найпростіший можливий формат файлу.

Отже, хоча XML, безумовно, має своє використання, ви можете подумати, що деякі найрозумніші програмісти на планеті, які піонерували поле, могли б знати, що вони роблять. Можливо, XML не завжди найкраще підходить для ваших власних файлів конфігурації.


18

Основна причина, над якою я зараз можу подумати:


4
Ця відповідь насправді не показує, що fstabфайл / формат давній mount, що ви, мабуть, лише маєте на увазі. Відповідно man fstab, " Прародитель цього формату файлів fstab з'явився в 4.0BSD. " ( BSDs це слово " Формат файлу fstab з'явився в 4.0BSD. "). 4.0BSD вийшов у 1980 році .
Даніель Бек

@DanielBeck Отже, я здогадувався, на щастя, правда, до 1985 року.
Radu Rădeanu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.