
多くの Linux プログラムでは、構成ファイルの場所はディストリビューションに依存するとされています。各ディストリビューションではどのようにこれが行われているのか気になっています。実際にソース コードを変更するのでしょうか? これらの場所を設定するビルド パラメータがあるのでしょうか? これについて検索しましたが、情報が見つかりません。あることは知っていますが、見つけられないようです。これに関する「Linux の方法」とは何でしょうか?
答え1
それはディストリビューションと元の(「上流」)ソースによって異なります。
autoconf および automake を使用するほとんどのパッケージでは、パラメータを使用して構成ファイルを検索するディレクトリを指定できます--sysconfdir
。他のビルド システム (CMake など) にも同様のオプションがあります。ソース パッケージがこれらのビルド システムのいずれかを使用している場合、パッケージ作成者は適切なパラメータを簡単に指定でき、パッチは必要ありません。そうでない場合でも (アップストリーム ソースが自社製のビルド システムを使用している場合など)、アップストリーム ソースにパッチを適用せずに、ビルド構成を指定して構成ファイルを特定の場所に移動することは可能です。
そうでない場合、ディストリビューションは、ソースにパッチを追加して、ファイルを「正しい」場所と見なす場所に移動させる必要があることがよくあります。ほとんどの場合、ディストリビューションのパッケージ作成者は、ソースを上記の意味で構成できるようにするパッチを作成し、そのパッチを上流の保守担当者に送信して、保守/更新を続ける必要がなくなります。これは、構成ファイルの場所だけでなく、bin
/sbin
実行可能ファイル (システム管理者のコマンドの解釈はディストリビューションによって異なります)、ドキュメントを作成する場所など、他の場合にも当てはまります。
補足:フリーソフトウェアを保守している場合は、お願いしますパッケージ作成者があなたと話しやすいようにしてください。そうしないと、特に理由もなくこのようなパッチを保守しなければならなくなります...
答え2
ソース コード ツリーに場所を適応させるパッチが適用されています。
利用可能な「標準」は十分にあるので、各ディストリビューションは(個人の)好みや過去の慣習に基づいて選択することができます。のみ利点があります。これは時々煩わしかったり混乱を招いたりしますが、1 つのディストリビューション内での一貫性が最も重要な目的です。プログラム X の類似のもの (セットアップ/構成ファイルなど) がどこにあるかが既にわかっていれば、混乱が減り、プログラム Y のものがどこにあるかを推測しやすくなります。
パッチ適用例
私のpythonパッケージはruamel.yaml
Debian Sidで利用可能です。以前は に依存しておりruamel.base
、PyPI経由でインストールしたユーザーは、互換性のない古いバージョンの がruamel.base
インストールされている可能性があります。/PyPIの使用はsetup.py
実際のパッケージ管理ではないため、消去依存関係を通じて以前にインストールされたパッケージ。古いパッケージruamel.base
に関連する問題を削除し、その新しいバージョンに依存する新しいバージョンを作成することで、PyPI ユーザーの問題を解決しました。ruamel.base
ruamel.yaml
Sidにとってはこれは問題ではありません。の古いバージョンはruamel.base
インストールされていない(またはパッケージ管理を通じて削除できる)からです。そのため、パッチ、こちらで見つけることができますruamel.yaml
シドの情報ページruamel.yaml
これにより、のへの依存関係が削除されますruamel.base
。
他のディストリビューションにも同様のセットアップがあります。たとえば、ソース RPM ファイル (RedHat/CentOS/SuSE など) を作成するための仕様を見ると、パッケージのオリジナルの tarball と、構成/コンパイル前に適用される 1 つ以上のパッチを組み合わせることがわかります。