Linuxで使用される「標準」構成パーサーライブラリは何ですか?

Linuxで使用される「標準」構成パーサーライブラリは何ですか?

Linuxアプリケーションでは、「独自の」構成パーサーを使用したくなく、すでに使用可能な構成パーサーを使用したいと思います(そうすればよいですか?)。シンプルで、アプリケーション構成のメンテナンスを単純にし、追加のライブラリを追加しません。

ベストアンサー1

実際、「標準」構成パーサーライブラリはありません。注意深く読むと、/etc次の組み合わせを見つけることができます。

  • XMLの構成
  • Windows INI スタイルの構成
  • デフォルトのKEY = VALUE設定
  • JSON(主にWebアプリケーションで見つかります)。
  • YAML(主に最新のアイテム、特にPythonで書かれたアイテムで見ることができます)
  • JSON、YAML、またはXMLのように見えますが、そうでないもの(たとえば、Nginxの構成(JSONのように見えますがそうではありません)、Apache(XMLのように見えますがそうではありません)、およびUnbound(YAMLのように見える)を参照)、しかし)。
  • さまざまなシェル言語。
  • シェル言語のように見えますが、技術的にはそうではありません。
  • さまざまなスクリプト言語のソースコードの断片。
  • 私が考えていない他のことがあるかもしれません。

あなたのアプリケーションが何を使用しているかについて:

  • 神聖なものすべてを愛するには、XMLを避けてください。不必要に冗長で解析するのは非常に複雑で(時間がかかり、メモリも必要です)、多くのセキュリティ問題が発生します。要素と属性との間の適切なバランスを維持することも重要であり、一般的に、後である時点でこれに対する選択を後悔することになる。ここで唯一の利点は、どのシステムでも動作するXMLパーサーがほぼ保証されることです。
  • WindowsスタイルのINIファイルは構成構造の複雑さを制限しますが、一般的に安全な選択です。これには多くのライブラリがあり、システムにはすでに1つ以上のライブラリがあります。 Linuxではあまり人気がありませんが(従来の構成ファイルは伝統的にセクションヘッダーのないKEY = VALUEペアです)、それでも広く使用され理解するのは簡単です。
  • デフォルトのKEY = VALUEペア(理想的には1行に1つ)は解析が非常に簡単で、ライブラリを必要としませんが、その機能は非常に制限されています。
  • JSONは安全で解析が簡単で広くサポートされています(現在、ほとんどすべての主要言語に1つ以上のパーサーがある)、構成構造のランダムな入れ子をサポートします。ただし、コメントはサポートされていません(一部のパーサーはサポートされていますが、結果は相互運用できません)。これは、テキストエディタで編集するように設計されたファイルには適していません。
  • YAMLは私が個人的に一番好きなものです。かなり安全で解析しやすく、ほとんどの人にとって非常に自然に見え、コメントをサポートし、オーバーヘッドがほとんどありません。ここで重要なのはインデントです。本物これは構文の約80%を占め、YAMLにインデントするためのスペース(タブなし)が必要であるという事実と組み合わせて、良いエディタがなければ使用するのが少し面倒になる可能性があるため重要です。
  • スクリプト言語を使用する場合は、構成にソースコードフラグメントを使用することを検討できますが、非常に注意してください。非常に慎重に解析しないと、ユーザーは内部ロジックに対して必要なほとんどすべての操作を実行できます。これはカスタマーサポートにとって悪夢です。〜する結局のところ、人々はあなたが変更したコアプログラムの中に何かを含む構成を壊したと文句を言います。

おすすめ記事