OnWorksLinuxおよびWindowsオンラインワークステーション

及び

ワークステーションのオンライン無料ホスティング

<前へ | Contents | 次へ>

パッチの適用‌


私たちのユースケースの XNUMX つでは、 ピリット ソース パッケージを作成し、上流の git リポジトリで見つかったパッチを適用したいと考えています。 これは一般的な操作であり、常に単純である必要があります。 残念ながら、パッチは、ソース パッケージの形式と、使用中の Git パッケージ化ワークフロー (Git を使用してパッケージを保守する場合) に応じて、さまざまな方法で処理される可能性があります。


解凍されたソースパッケージの場合 あなたは走りました 適切なソース pyrit そしてあなたは ピリット-0。

4.0 ディレクトリ。 patch -p1 を使用してパッチを直接適用できます。 パッチファイル:


$ 適切なソース pyrit

[...]

$ cd pyrit-0.4.0

$ wget https://github.com/JPaulMora/Pyrit/commit/14

ec997174b8e8fd20d22b6a97c57e19633f12a0.patch -O /tmp/pyrit-patch

[...]

$ パッチ -p1

パッチファイル cpyrit/pckttools.py

$ 適切なソース pyrit

[...]

$ cd pyrit-0.4.0

$ wget https://github.com/JPaulMora/Pyrit/commit/14

ec997174b8e8fd20d22b6a97c57e19633f12a0.patch -O /tmp/pyrit-patch

[...]

$ パッチ -p1

パッチファイル cpyrit/pckttools.py


ハンク #1 は 53 (オフセット -1 ライン) で成功しました。

$ dch --local buxy 「scapy 2.3 で動作するようにパッチを適用します」

ハンク #1 は 53 (オフセット -1 ライン) で成功しました。

$ dch --local buxy 「scapy 2.3 で動作するようにパッチを適用します」


この時点で、ソース コードに手動でパッチを適用しており、変更したバージョンのバイナリ パッケージをすでにビルドできます (セクションを参照) 9.1.4、「 建設」[231ページ])。 しかし、更新されたソース パッケージをビルドしようとすると、「予期しないアップストリームの変更」を理由に失敗します。 これは、pyrit (大部分のソース パッケージと同様) がソース形式を使用しているためです (「 debian/ソース/フォーマット ファイル) 3.0 (キルト) として知られており、アップストリーム コードへの変更は、 debian/パッチ/ そしてどこ debian/パッチ/シリーズ ファイルは、パッチを適用する必要がある順序を示します。 次のコマンドを実行すると、変更を新しいパッチに登録できます。 dpkg-source --commit:


$ dpkg-source --commit

dpkg-source: info: ローカルの変更が検出されました。変更されたファイルは次のとおりです: pyrit-0.4.0/cpyrit/pckttools.py

希望のパッチ名を入力します: scapy-2.3.patch の修正

dpkg-source: info: ローカルの変更が新しいパッチに記録されました: pyrit-0.4.0/debian/

patches/fix-for-scapy-2.3.patch

$ tail -n 1 debian/パッチ/シリーズ

scapy-2.3.patch の修正

$ dpkg-source --commit

dpkg-source: info: ローカルの変更が検出されました。変更されたファイルは次のとおりです: pyrit-0.4.0/cpyrit/pckttools.py

希望のパッチ名を入力します: scapy-2.3.patch の修正

dpkg-source: info: ローカルの変更が新しいパッチに記録されました: pyrit-0.4.0/debian/

patches/fix-for-scapy-2.3.patch

$ tail -n 1 debian/パッチ/シリーズ

scapy-2.3.patch の修正


キルトパッチシリーズ このパッチ管理規則は、という名前のツールによって普及しました。 キルト したがって、「3.0 (quilt)」ソース パッケージ形式はこのツールと互換性がありますが、使用する形式に多少の違いはあります。 debian /パッチ パッチ。 このツールは同じ名前のパッケージで入手でき、ここで素晴らしいチュートリアルを見つけることができます。

https://raphaelhertzog.com/2012/08/08/

debian パッケージでキルトを使用してパッチを管理する方法/

キルトパッチシリーズ このパッチ管理規則は、という名前のツールによって普及しました。 キルト したがって、「3.0 (quilt)」ソース パッケージ形式はこのツールと互換性がありますが、使用する形式に多少の違いはあります。 debian /パッチ パッチ。 このツールは同じ名前のパッケージで入手でき、ここで素晴らしいチュートリアルを見つけることができます。

https://raphaelhertzog.com/2012/08/08/

debian パッケージでキルトを使用してパッチを管理する方法/


ソース パッケージが 1.0 または 3.0 (ネイティブ) ソース形式を使用している場合、アップストリームの変更をパッチに登録する必要はありません。 これらは、生成されるソース パッケージに自動的にバンドルされます。


Git リポジトリを使用する場合 Git を使用してソース パッケージを取得した場合、状況はさらに複雑になります。 複数の Git ワークフローと関連ツールがあり、すべての Debian パッケージが同じワークフローとツールを使用しているわけではないことは明らかです。 ソース形式についてすでに説明した区別は依然として重要ですが、パッチがソース ツリーに事前に適用されているかどうか、またはパッチがソース ツリーにのみ保存されているかどうかも確認する必要があります。 debian /パッチ (この場合、それらはビルド時に適用されます)。

最も人気のあるツールは git-buildpackage。 これは、git-lab.com/kalilinux/packages 上のすべてのリポジトリを管理するために使用されます。 これを使用すると、パッチはソース ツリーに事前に適用されませんが、 debian /パッチ。 そのディレクトリにパッチを手動で追加し、リストすることができます。

in debian/パッチ/シリーズ ただし、git-buildpackage のユーザーは次のことを使用する傾向があります。 ポンド pq パッチ シリーズ全体を XNUMX つのブランチとして編集し、好みに応じて拡張またはリベースできます。 チェック gbp-pq(1) それを呼び出す方法を学びます。

git-dpm (同じ名前の関連コマンドを含む) は、現在使用されているもう XNUMX つの git パッケージング ツールです。 メタデータを記録します debian/.git-dpm そして、コンテンツから構築される継続的にリベースされるブランチをマージすることで、ソース ツリーに適用されたパッチを維持します。 debian /パッチ.


OnWorksのトップOSクラウドコンピューティング: