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