12

パッケージング システムがなければ、(B) バイナリ コードに変換/コンパイルできる (A) ソース コードがあります。

debian/ubuntu パッケージの場合、(1) ソース コード、(2) ソース パッケージ - dscファイル、(3) バイナリ パッケージ - debファイルがあります。(1)と(3)に関連する(2)のソースパッケージはどうですか?なぜそれが必要なのですか?そして、最も重要な質問: (1) から (2) と (3) を生成するワークフローは何ですか?

4

2 に答える 2

13

ワークフローは通常、おおよそ次のようになります。

  1. Debian と関係のない人がソース コードを書き、それをパッケージとして Web に投稿します (例: splint-3.1.2.tar.gz)。
  2. Debian の誰かがソース コードをダウンロードし、

    1. ソースを Debian でビルドし、Debian ガイドラインに準拠させるためのパッチ ファイルのセット。走る

      curl -s 'http://archive.ubuntu.com/ubuntu/pool/universe/s/splint/splint_3.1.2.dfsg1-2.diff.gz' | gunzip -dc | less
      

      サンプルパッケージについてこれを確認します。

    2. パッケージを説明するテキストメタデータ ファイル.dsc— これはファイルとdebian/controlファイルです。「DSC」は Debian Source Control の頭字語です。
  3. バイナリ.debパッケージは、Debian 固有のパッチが適用された元のアップストリーム ソース コードから各アーキテクチャ用にビルドされます。以下はそのようなファイルの 1 つですDebian Binary Package Building HOWTOでは、これらのファイルの形式と検査方法について説明しています。

この.dscファイルはビルド ロジックには使用されず、メタデータに使用されます。ただし、途中で多くのツールがそれを必要とします。たとえば、Build-Depends:フィールドは必要なビルドの依存関係をインストールするために使用されます。

于 2012-11-22T17:29:16.673 に答える
2

実際にはそれよりもはるかに複雑です。Debian パッケージの背後にある考え方は、ページを構築するために必要なすべての情報が含まれているということです。通常、ソースは、そのパッケージと対話する他のパッケージの依存関係を記述しdebianたファイルを含むディレクトリを含むように変更されます (たとえば、仮想パッケージの分割、置換、提供)。controlファイルには、パッケージのビルドとインストールのrules方法が説明されています。単一のソース パッケージが多数のバイナリ パッケージになる可能性があるため、パッケージ化の方法についても説明します (例: 、foo-utilslibfoo0) libfoo-devdebuild実際にこの情報を読み取り、コンパイルを行い、バイナリ パッケージを生成します。微妙な点:fooを使用しlibbar-devている場合、実際にはどのバージョンのlibbar私が使用するバイナリパッケージ。pbuilderクリーンな環境で実行debuildされるため、明示的に指定していないものに対してコンパイルする可能性はありません。

詳細については、Debian New Maintainers' Guideを参照してください。

于 2012-11-22T15:45:40.823 に答える