web-dev-qa-db-ja.com

異なるLinuxディストリビューションがパッケージにパッチを適用する必要があるのはなぜですか?

異なるディストリビューションがそれぞれのリポジトリで利用可能なパッケージにパッチを当てていることは知っていますが、なぜそうする必要があるのか​​理解できません。誰かがオンラインで関連ドキュメントを説明したり指摘したりできるとありがたいです。ありがとう。

6
siphr

何度か試してみましたが、あなたが今何を求めているのか理解できたと思います。

パッケージ化の前に特定のソフトウェアにパッチを適用するための配布には、いくつかの理由が考えられます。私は非排他的なリストを提供してみます。他の理由が考えられます。

この説明の目的上、「上流」とは、ソフトウェアの公式開発者によるオリジナルのソースコードを指します。

  1. 上流にあるパッチは、何らかの理由でメインブランチに組み込まれていない(またはまだ組み込まれていない)。通常、そのパッケージのディストリビューションのパッケージメンテナーは、上記のパッチに価値があると考えているか、またはディストリビューションの継続性を維持するために必要であるためです(Webサーバーがあり、phpへの定期的な更新後にいくつかの関数があるとします頼りにしていることはもう機能しない、または古いスタイルから設定ファイルを読み取ることができない)

  2. ディストリビューションは、/etc/のファイルシステム階層の標準化されたパターンを好む傾向があります。すべてのソフトウェア開発者は、適切な標準を構成するものについて独自のアイデアを持っている場合と持っていない場合があります。したがって、配布パッケージのメンテナが最初に行う傾向があることの1つは、ビルドスクリプトにパッチを適用して、残りの配布に対応する階層パターンで構成ファイルを構成および予期することです。

  3. 構成のトピックを続けると、最初の「パッチ」の1つは、いわば「箱から出して」ディストリビューションの残りで機能する一連のデフォルト構成ファイルである傾向があり、エンドユーザーはすぐに開始できますインストール後に手動で作業構成を整理する必要はありません。

それは私の頭の上にあります。他にもたくさんあるかもしれませんが、これがあなたにいくつかのアイデアを与えることを願っています。

17
Shadur

私の頭の上から、@ Shadurの答えに加えて:

  • 一部のディストリビューションでは、別のパッケージによって提供される埋め込みライブラリまたはファイルの使用を推奨していません。たとえば、多くのソフトウェアには組み込みJQueryが含まれていますが、Debianにはそれを提供するlibjs-jqueryパッケージがあります。
  • 多くの場合、上流ではセキュリティパッチと下位互換性のない変更が混在しています。新しいライブラリに依存します。より正確な証明書チェックを取得するためだけにディストリビューション全体に広範な変更を加えることを防ぐために、パッケージのメンテナは、セキュリティパッチのみを選択することを選択できます。
  • 上流のソフトウェアは、他のソフトウェアと競合する可能性があります。たとえば、パスが同じで内容が異なるファイルを提供する場合があります。この競合を解決するには、別の場所でファイルを探すためにパッチが必要になる場合があります。
  • アップストリームは、他のソフトウェア構成ファイルに手動で何かを追加する手順を含むコンテンツであることが多く、パッケージのインストールおよびアンインストール時にエラーが発生しやすいため、ディストリビューションは* .dディレクトリのフラグメントファイルを使用することを好むかもしれません。
  • アップストリームの一部はディストリビューションのライセンスと互換性がない可能性があるため、パッケージのメンテナは問題のある部分にパッチを適用することを決定する場合があります。
  • アップストリームは他の特定のソフトウェア(Apacheなど)を想定したパスを使用しますが、メンテナーは汎用のWebサーバーをサポートすることを望んでいます。
  • 時々、上流の開発者はもはや通信せず、ソフトウェアはビットロートするので、それを機能させるにはパッチが必要です。
10
Edheldil

いくつかの理由があります。

  1. 完璧なソフトウェアというものはありません
  2. Linuxには、ユニバーサルパッケージソフトウェアなどはありません。

  3. forking のため

  4. の異なる解釈のため 聖書[〜#〜] fhs [〜#〜]
  5. ego のため
5
Fabby

最も差し迫った理由:ビルドエラー。

  • たぶん、上流がそれを修正するのを待ちたくないだけかもしれません(修正は明白だったと言います)。
  • 明らかにそれが必要であるとしても、上流は何らかの理由であなたの修正を受け入れないでしょう。
  • 多分それは全く維持されていません。
4
user2394284

少なくともDebianの一般的な理由は、パッケージがDebianポリシーに準拠するためです。間違いなく、他のディストリビューションにも、パッケージに満足してほしい同様の基準があります。 Debianポリシーは厳格なマスターであるため、これらのパッチはさまざまな形を取り、次のようなさまざまな目的を果たします。

  • ビルドシステムを変更して、正常またはより柔軟にします。ビルドシステムは、Debianパッケージのビルドを処理するのに十分な柔軟性がない場合があります。または、ポリシーやFHSに準拠した場所にファイルが配置されるようにビルドシステムを変更します。

  • manページを追加する( Debianポリシーでは、各パッケージにmanページが必要です )。

  • 非フリーライセンスまたは明確なライセンスがないファイルを削除する。

そのバージョンのDebianで実際に利用可能なパッケージでビルドできるように、ソフトウェア(おそらくビルドシステムを含む)にパッチを適用します。

アーキテクチャ固有の修正。 Debianはさまざまなアーキテクチャに基づいて構築されており、その一部はソフトウェアの作成者がそれを使ったことがなかったかもしれません。

4
Faheem Mitha