¿Por qué / etc / fstab no usa XML o JSON?

22

Esto es más como una pregunta general de Linux / programación, pero he estado programando por un tiempo, y estoy acostumbrado a usar un formato como XML o JSON en cualquier archivo que se use con fines de configuración.

Al ser nuevo en Linux, me di cuenta de que el primer archivo de configuración que encontré ( /etc/fstab) usa algún tipo de formato de tabla. Entonces, ¿por qué no XML o JSON?

jzeus
fuente
77
¿Qué pasaría si, por ejemplo, tuviéramos una biblioteca de análisis XML dentro /usr/lib/libxml.soy /usren una partición separada? Para analizar el /etc/fstabsistema tendría que montar /usrz in order to load libxml , but to do so it would have to parse / etc / fstab` para saber qué sistema de archivos montar. Para evitar esto, el analizador XML probablemente debería ser parte del núcleo, lo que no parece una idea fantástica.
el.pescado
44
@ V0R73X, si cree que esta pregunta es una pregunta más general sobre Linux, hay otro sitio de Stack llamado UNIX & Linux Stack Exchange, unix.stackexchange.com. Ambos probablemente estarían bien, y ya hay respuestas aquí, pero solo lo descartamos para el futuro.
trysis
8
XML y similares no siempre son el mejor formato. Una tabla es una tabla y debe almacenarse como tal. De hecho, algunas personas piensan que XML no sirve para nada más. Google.com/+LinusTorvalds/posts/X2XVf9Q7MfV
alfC
2
JSON no debe usarse para archivos de configuración. No admite comentarios, que son esenciales para explicar las opciones de configuración y para probar cosas al comentar partes de la configuración.
artbristol
2
XML es un formato de transporte de documentos, no un formato de archivo de configuración.
Matthew Ife

Respuestas:

82

/etc/fstab es mucho más antiguo que XML y JSON, y como muchos programas lo usan, cambiar su formato sería una pesadilla.

Además, esto /etc/fstabdebe analizarse antes de que haya un sistema funcional, ya que se utiliza para montar todos los sistemas de archivos esenciales. Por lo tanto, el formato de /etc/fstabdebe ser lo más simple posible ya que el analizador no debe depender de ninguna biblioteca externa.

Analizar XML es bastante difícil y realmente quieres evitarlo si no puedes transmitir en libs externas. JSON es un poco más fácil pero aún bastante difícil.

La semántica de /etc/fstabes bastante simple, no incluye ninguna estructura de datos en forma de árbol ni ninguna otra cosa elegante. Todo lo que necesita son registros que constan de seis valores.

Los valores separados por espacios en blanco son lo suficientemente buenos para eso, y son fáciles de analizar incluso si todo lo que tiene son las bibliotecas estándar de C.

Entonces, no hay razón para usar JSON, XML o algo similar.

Florian Diesch
fuente
los campos separados en blanco son suficientes para lo que debe hacer fstab. no quiero complicar las cosas simplemente por hacerlo.
Michael Martinez
un CSV sería aún más simple y más fácil
Trineo
3
@ArtB, ¿por qué crees que cambiar el delimitador cambiaría la complejidad de analizar el archivo?
Dan Neely
Dependiendo de las reglas para citar, escapar, etc. CSV podría ser un poco más fácil de analizar ya que el delimitador siempre es un carácter en lugar del delimitador de longitud variable utilizado actualmente. Pero el formato actual permite una mejor legibilidad humana, que también es un valor importante.
Florian Diesch
32

Realmente deberías leer The Art of Unix Programming de Eric Raymond alguna vez. Parece que está asumiendo que los diseñadores de Unix habrían usado XML /etc/fstabsi lo hubieran sabido. Por el contrario, aunque XML no se había inventado específicamente, eran muy conscientes de sus predecesores similares y los rechazaron deliberadamente para archivos de configuración como /etc/fstab.

Citando de su subsección en XML :

XML es muy adecuado para formatos de datos complejos (el tipo de cosas para las que la tradición de Unix de la vieja escuela usaría un formato de estrofa tipo RFC-822) aunque exagerado para los más simples. Es especialmente apropiado para formatos que tienen una estructura compleja anidada o recursiva del tipo que el metaformato RFC 822 no maneja bien.

y más abajo

El problema más grave con XML es que no funciona bien con las herramientas tradicionales de Unix. El software que quiere leer un formato XML necesita un analizador XML; Esto significa programas voluminosos y complicados. Además, XML es bastante voluminoso; Puede ser difícil ver los datos en medio de todo el marcado.

La filosofía de Unix es hacer que la configuración sea fácilmente programable y legible por humanos siempre que sea posible. Debería poder procesar archivos de configuración con herramientas como awk, grep, sed, tr y cut, y analizarlos fácilmente en lenguajes de script sin bibliotecas voluminosas. Esta es una gran razón detrás del éxito de Unix y no debe subestimarse.

Aunque Eric Raymond elogia a XML por su capacidad para manejar "formatos que tienen una estructura compleja anidada o recursiva", /etc/fstabciertamente no los necesita y, por lo tanto, se eligió el formato de archivo más simple posible.

Entonces, aunque XML ciertamente tiene sus usos, es posible que desee considerar que algunos de los programadores más inteligentes del planeta que fueron pioneros en el campo podrían haber sabido lo que estaban haciendo. Quizás XML no sea siempre el mejor para sus propios archivos de configuración.

Karl Bielefeldt
fuente
18

La razón principal por la que puedo pensar ahora es:

Radu Rădeanu
fuente
44
Esta respuesta en realidad no muestra que el fstabarchivo / formato sea tan antiguo como mountparece, lo que parece implicar solo. Según man fstab, " El antepasado de este formato de archivo fstab apareció en 4.0BSD " (la frase de BSD dice " El formato de archivo fstab apareció en 4.0BSD "). 4.0BSD fue lanzado en 1980 .
Daniel Beck
@DanielBeck Entonces, mi suposición era afortunadamente cierta, antes de 1985.
Radu Rădeanu