2017-03-23 9 views
1

私は、いくつかの追加のソースファイル(アップストリームアーカイブには含まれていない)を追加し、いくつかのパッチを適用することによってDebianソースパッケージをカスタマイズして再構築しようとしています。具体的には、カスタムプラグインを追加してUbuntu "ppp"パッケージをカスタマイズしようとしています。私は、次の操作を行いますDebianパッケージをカスタマイズして再構築するときに、追加のソースファイルを追加するにはどうしたらいいですか?

1)私はダウンロードして、「apt-getのソースPPP」

2)私は、「PPP-XXX」サブツリーに入ると、「はdpkg-buildpackageできれいにパッケージを再構築してソースパッケージを展開します-uc "を実行して、ソースパッケージですべてが正常であることを確認します。 (そして、実際はすべてが今は大丈夫です)。

3)私は自分のカスタムパッチを "debian"サブツリーの "debian/patches"サブフォルダに入れます。それから私はそれらを "debian/patches/series"ファイルで参照します。また、私のカスタムソースファイルをすべて1つのフォルダに入れて、 "tacacs"と言い、このフォルダを "debian/extra"サブフォルダに置きます。私はそれらを正確にそこに置くべきであると確信していませんが、私はそれらのための適切な場所をもう見ません。

4) "dpkg-buildpackage -uc"をもう一度実行して、カスタムパッケージを作成しようとしました。そして、私は以下を参照してください。

  • 「のdpkg-buildpackage/dpkgのソース/キルトは、」私のカスタム・ソースへの私のカスタム パッチを適用しようとすると、それらを見つけることができません。だから失敗し、 ビルドに失敗しました。
  • ビルドに失敗して停止すると、ビルドツリーのカスタムプラグイン( "tacacs")サブフォルダが表示されますが、空です。 パッチが失敗したことは驚きではありません。

私は自分のカスタムソースファイルをどこに置くべきですか? "dpkg-source -b"にそれらを見せてビルドツリーに挿入するにはどうすればよいですか?

+0

IIRCでは、それらを 'debian/files'などで列挙する必要があります。 – tripleee

+0

@ tripleeeありがとうございますが、私はあなたが間違っていると思っています。このファイルにはビルドで生成された出力ファイルのリストが含まれています。 'debian'ディレクトリにリストを含んでいる他のファイルがたくさんあります。私はそれらを試してみる必要があります。 –

+0

たぶん私はそれを 'debian/install'と混ぜています。クイック・グーグル・グーグルは、これがどこかにインストールしたい非標準ファイルを列挙する場所であることを示唆しています。 – tripleee

答えて

1

私は私の問題を解決するには、2つの方法を見つけました:

  1. 最初のものは、より適切かつ慣用的で​​あるように思われます。 「 の名前」(man dpkg-sourceに記載されているように)を追加して、元のオリジナルタールボールの後に という名前の「補足オリジナルタールボール」に追加のソースを配置することです。補助タールボール はビルド前にメインのtarball上に展開され、追加の コードがビルドツリーに追加され、そこでパッチを適用してコンパイルすることができます。 実際に私の追加コードはすでにアーカイブに入っていたので、アーカイブの名前を変更するだけでした。補足tarファイルからのコード のみビルドツリーのルートに注入することができる、とのpppdプラグインのコード がpppd/pluginsサブディレクトリに配置する必要がありますので、

    残念ながら、この方法は、私のために動作しませんでした。そして、 サブディレクトリ内のコードへのシンボリックリンクを作成する方法を見つけることができませんでしたdpkg-source/quilt。その後、私はdpkg-source --commitを適用

  2. 私はdpkg-source -x(またはapt-get source)で作成したクリーンなソースツリー内の適切な場所に直接追加のソースコードを解凍し

    • は、だから私は、第二の方法を使用していましたソースディレクトリにあり、debian/patchesサブディレクトリにパッチがあり、新しく作成されたパッチを参照する適切なseriesファイルがあります。このパッチには、追加のソースがソースツリーに配置されたときに発生したすべての変更が含まれています。したがって、このパッチを適用することで、追加のソースを適切な場所に再作成することができます。

    • 新しく作成したパッチとseriesファイルを一時的な場所に保存し、ソースツリーを削除しました。
    • クリーンソースツリーをdpkg-source -xと再作成しました。
    • 保存したパッチとseriesファイルをソースツリーのdebian/patchesフォルダに再度配置しました。また、debian\changelogdebian\controlを編集して、新しいバージョンのパッケージをビルドし、新しいパッケージを元のパッケージと混乱させないように指示しました。
    • dpkg-buildpackage -uc -usでパッケージの新しいバージョンをビルドできました。これは私のカスタムパッチが含まれていないので、まだ最終版ではありませんでしたが、すでにカスタムソースが含まれていました。最後に

    • 私はもう一度dpkg-buildpackageを走ったと私は取得したいパッケージを持って、debian/patches/seriesファイルにそれらへの参照を追加し、debian/patchesディレクトリに私のカスタムパッチを追加しました。

この方法は、ソースツリー内の任意の所望の場所にソースコード注射で動作するが、それは追加のソースは、手動で展開元のコードと混合し、パッチに変換しなければならないという欠点を有しています。このすべての操作は、この追加コードが更新されるたびに繰り返されなければなりません。最初の方法では、補完的なtarballを新しいバージョンに置き換え、後続のすべてのパッチがうまく適用されることを確認するだけで十分です。

関連する問題