Articles

:パッチの適用方法

Posted on

はじめに

このページでは、パッチファイルを適用する方法を説明します。 パッチは標準フォーマットであり、適用方法には多くのオプションがあります。

おそらく最も重要なのは -p フラグの使用で、これはパッチ ファイルがあるディレクトリとパッチが適用されるファイルの関係をパッチに伝えるものです。

Apply a Patch in Windows using gnuwin32

  • patch for windows を sourceforge からダウンロードして展開します。 patch.exe バイナリを C:\bin (注意: 空白のないディレクトリに置くと、物事が非常に簡単になります)
  • Moodle をどこかにダウンロードして展開します。
  • パッチファイルをダウンロードして、Moodleを置いたのと同じディレクトリに置きます (C:\moodle\password-policy-17.diff)。diff)
  • パッチファイルをワードパッドで開き、「ファイル」 >> 「名前を付けて保存…」をクリックして、ファイルの名前を変えてください。diff’) そして、「Save as type」 >> ‘Text Document – MS-DOS Format’
  • コマンドテキストウィンドウを開いて、次のように入力します。
 cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff

‘-p’ オプションの後の数字は、パッチ ファイルが生成された方法に依存するため、パッチ ファイルによって異なります。 patch」ユーティリティーのマニュアルページで「-p」オプションの動作を確認してください。 また、「diff and patch tutorial」も参考にしてください。

  • 以下のような出力が得られるはずです (パッチされたファイルの名前と数はパッチによって異なります):
 patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).

この段階では、パッチは適用されていません。 (「–dry-run」オプションを使用して)適用のシミュレーションを行い、問題が見つからないかどうかを確認しただけです。 実際にパッチを適用する方法を説明する前に、何が問題なのか、どのように対処すればよいのかについて説明します。

潜在的な問題とその対処法

潜在的な問題

すべてがうまくいけば、パッチはきれいに適用され、生活は快適になるはずです! しかし、パッチ ファイルの作成に使用されたオリジナル ファイルとローカル ファイルの間のバージョンの不一致により、パッチが 100% きれいに適用されないことがあります。 このような場合、’patch’ コマンドは可能な限り多くの変更を適用しようとし、遭遇した問題を説明する診断結果を出力します。

  • もし「Hunk #n succeeded…」というメッセージが表示されたら、元のファイルとは異なる行数ではありますが、パッチが正しく適用されたことになります。 実際にパッチを適用した場合、’patch’ コマンドは、ハンクが異なるオフセットで適用された各ファイルに対して、追加のファイルを作成し、そのファイルはオリジナルのファイルと同じように、追加の拡張子 .orig を持つ名前になります。 この場合、’patch’ コマンドは、ハンクが正しく適用されなかった各ファイルに対して、次のような 2 つの追加ファイルを作成します。

潜在的な問題への対処

最初の問題 (オフセットされたハンク) への対処は簡単です: 実際にパッチを適用したら、.orig ファイルを削除するだけです。

2番目のケース (失敗したハンク) では、失敗したハンクを手作業で修正する方法を知らない限り、パッチを適用すべきではありません。 パッチを適用して、失敗したhunksを手動で修正しようとする場合、「-b」オプションを使用してください。 このオプションは、パッチが適用されたすべてのファイル (拡張子は .orig) のバックアップを自動的に作成します。

ときどき、パッチが生成されてから行番号に大きな違いがあり、パッチが適用されないことがあります。 fuzz オプションの ‘-F’ を使用して、行数の違いを大きくすることで、パッチに許可を与えることができます。

実際にパッチを適用する

さて、何がうまくいかないのか、どう対処すればいいのかがわかったところで、パッチの適用方法を見てみましょう。

 cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff

また、失敗したハンクを手作業で修正しようとする場合は、オプションで「-b」オプションを使用します。

 cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff

Apply a Patch in Windows using NetBeans

NetBeans にはバージョン管理と開発者のコラボレーションのための統合されたツールが付属しており、強力なグラフィカルな Diff ツールや簡単にパッチを適用 (および作成) することができます。

Linux で patch を使用してパッチを適用する

次のように使用します: patch -p1 < patchfile.diffLinuxでのPatchの使い方の詳細はこちらをご覧ください

See Also

  • Patch
  • Development:How_to_create_a_patch
  • Drupal – using Cygwin in Windows to apply a patch
  • Drupal – how to apply a patch in Mac OS X
  • moodle post – using gnuwin32 to apply a patch

li

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です