Konfiguračný formát: *.conf

Konfiguračný formát: *.conf
« kdy: 30. 07. 2025, 00:32:05 »
Ahojte vo freebsd je pekný, prehľadný a funkciami nabitý formát konfiguračných súborov s koncovkou *.conf (rc.conf, loader.conf, jails.conf atď).
Podľa mňa je tento formát oveľa čitateľnejší ako nejaké toml, ini, yaml, xml atď. Taktiež je výborne štrukurovaný a má bohaté možnosti aké som v iných formátoch nevidel. Ale čo to je vlastne za formát? Má nejakú špecifikáciu? Dá sa k nemu zohnať parser?


tecka

  • ***
  • 171
    • Zobrazit profil
    • E-mail
Re:Konfiguračný formát: *.conf
« Odpověď #1 kdy: 30. 07. 2025, 05:00:08 »
rc.conf je sh skript, loader.conf umí jen přiřazení hodnot se syntaxí kompatibilní se sh, jail.conf je interní formát jailu. Ke všem třem jsou manuálové stránky a ke všemu ve FreeBSD jsou zdrojáky.

Re:Konfiguračný formát: *.conf
« Odpověď #2 kdy: 30. 07. 2025, 11:57:10 »
rc.conf je sh skript, loader.conf umí jen přiřazení hodnot se syntaxí kompatibilní se sh, jail.conf je interní formát jailu. Ke všem třem jsou manuálové stránky a ke všemu ve FreeBSD jsou zdrojáky.

aha tak to je kazde iny format? ja som myslel ze to je jeden univerzalny, len ohnuty pre konkretne potreby kazdej aplikacie. Tak asi sa tymi konfigmi inspirujem a spravim nejaky format ktory bude podporovat veci ktore vidim napriec vacsinou konfigurakov roznych aplikacii. lebo fakt mi ta syntax pride citatelnejsia ako nejake TOML

RDa

  • *****
  • 3 055
    • Zobrazit profil
    • E-mail
Re:Konfiguračný formát: *.conf
« Odpověď #3 kdy: 30. 07. 2025, 12:34:39 »
rc.conf je sh skript, loader.conf umí jen přiřazení hodnot se syntaxí kompatibilní se sh, jail.conf je interní formát jailu. Ke všem třem jsou manuálové stránky a ke všemu ve FreeBSD jsou zdrojáky.

Nekdy ten format dovoluje jeste referencovat ty "promenne", to jsem videl napr v konfiguraku ke postfixu

Re:Konfiguračný formát: *.conf
« Odpověď #4 kdy: 30. 07. 2025, 15:38:35 »
Významná část toho je BSD init. To je podobné jako SystemV init, systemd, OpenRC, RunIt a jánevím jak se všechny jmenují.
Jsou to scripty napsané v shellu. Celé to startuje scriptem /etc/rc, další jsou pak do něj includované, včetně některých konfiguračních souborů..

V zásadě se v těch .conf souborech přiřazují hodnoty shellovým proměnným.
Hezky je to vidět např. na konfiguraci sítě.
ifconfig_em0="inet 192.168.0.1 netmask 255.255.255.0 mtu 1500"
To v uvozovkách jsou parametry pro ifconfig, který se z initu volá.

Formát jednotlivých souborů, resp. jaké proměnné se v tom kterém dají použít a co znamenají, je popsáno v manových stránkách.

Co se týče rc.conf (a dalších), tak v /etc/defaults/ jsou nastavené výchozí hodnoty a dá se tam spousta věcí vyčíst.

Soubory v /boot, typicky loader.conf, patří bootloaderu, nejsou v shellu a s initem nesouvisí. Je to nějaký Forth, zkoušela se i Lua. Ale ten princip přiřazování hodnot proměnným je tam podobný. Podobně jako u initu, i u bootloaderu existuje /boot/defaults/loader.conf

jail.conf čte initscript služby jail, tj. /etc/rc.d/jail. Když se do něj podíváš, uvidíš, co s tím jail.conf dělá.

Pak jsou konfigurační soubory pro jednotlivé programy, např. syslog.conf nebo resolv.conf.

Obecně .conf není jednotný formát, je to spíš takový zvyk, že tak končí jméno konfiguračních souborů. V /usr/local jsou věci, které nejsou součástí operačního systému, tj. programy od třetích stran, a tam je možné naprosto cokoliv. Pokud se instaluje přes BSD porty, tak je zase zažité, že jméno konfiguračních souborů končí na .conf, ale uvnitř nich je to poplatné tomu programu. Což platí např. o tom Postfixu.
« Poslední změna: 30. 07. 2025, 15:40:10 od chan_hfc »