にへるつおるぐ | src | ブログ | コンタクト | 統計 | 御串 | 小束 | 裏ミク | つ痛 | 顔本 | | Login |
|
|
10年ぶりに部屋に入るとコウモリや猫の巣窟だった |
GeneralItems that do not fit in other categories patchコマンドの簡単な使い方
あけび猫のブログでは、主にNucleusカテゴリにて、既存のプログラムにアレゲな修正を加える記事を掲載しています。初期の記事や修正箇所がある程度多くなってしまったものについては、修正後のものをそのまま、あるいは、zip等で固めて載せていますが、最近の記事で、修正箇所がわずかな場合には、パッチ(diffコマンドの出力)の形で載せています。パッチはそのままではプログラムとして実行できないので、修正後のプログラムを動作させてみたい場合には、修正前のプログラムも準備して、patchコマンドを使う必要があります。 patchコマンドの準備Windows用のpatchコマンドは以下のサイトから入手できるようです。 Binariesの中から、「patch.exe」を抜き出して、パスの通ったフォルダに入れるとお手軽です。pathの通ったフォルダは、コマンドプロンプトを開いて「path」と入力して確認するか、システムのプロパティの環境変数にて設定します。「patch.exe」をパスの通ったフォルダに入れたら、とりあえず、コマンドプロンプトにて「patch -v」と入力してみます。patchのバージョン情報等が出てくればよいです。 別のウィンドウが開いたりして動作が変な場合 コマンドプロンプトを起動しなおします。その時、コマンドプロンプトのアイコンを右クリックして「管理者として実行」というような項目があれば、その項目で起動してみて下さい。 UNIX系のOSの場合には、そのディストリビューションに付いてるものをインストールするのがお手軽です。 修正前のプログラムの準備パッチに対応する修正前のプログラムを特定する情報は、パッチの関連記事の中に書いてあるので、それで察して下さい。たとえば、「NP_AutoTwitterをfancy URLとbit.lyに対応させるパッチ」の場合には、記事中のリンク先のNP_AutoTwitter.php.patchに対応する修正前のプログラムがNP_AutoTwitterのバージョン0.3.1であるということです。同じタイトルの記事でも、記事のリビジョンが変わるとパッチの内容や修正前のプログラムのバージョン等が変わることがあるので注意して下さい。また、修正前のプログラムが更新された時に、何故かそのバージョン番号が更新されなかったりすると、バージョン番号は合ってるのにプログラムとしては不整合ということになることはありえます。 修正対象ファイルの改行コードの確認修正前のプログラムが準備できたら、そのプログラムの中で、修正対象のファイルを見つけて下さい。修正対象ファイルは、パッチの一番最初の行にそのファイル名とタイムスタンプが記録されているので、それを参考にして探すことができます。 対象ファイルが見つかったら、そのファイルの改行コードを確認します。 Windowsの場合 サクラエディタを使うのがお手軽です。サクラエディタで対象のファイルを開くとステータスバーに現在のカーソル行の改行コードが表示されます。 UNIX系の場合 シェルにて「od -t c 対象ファイル」と入力すると、ファイルの中身が1バイト毎にASCII文字とC言語のエスケープシーケンスのような形式で表示されるので、それの改行と思しき部分を観察します。 テキストエディタとしてvimを使っている場合には、vimrcに「set fileformats=unix,dos,mac」という行を追加してから対象のファイルをvimで開きます。すると、対象のファイルの改行コードがUNIXスタイル以外の時、画面下部に「[dos]」や「[mac]」といった表示が出ます。 パッチの準備パッチはブログの記事として掲載されているので、それをテキストエディタ(メモ帳等)にコピペしてからファイルとして保存するとよいです。 保存する時のファイル名はパッチの近くに書いてあります。たとえば、NP_AutoTwitter.php.patch の場合だと、「NP_AutoTwitter.php.patch」がファイル名で、「*** NP_AutoTwitter.php…」で始まっている部分がパッチの本体です。 パッチの本体を示す範囲は、その背景の色が変えてあったり、テキストエリアになっていたりして、それらしく分かるようになっているので、その範囲をコピペするようにして下さい。コピペした結果、最終行の行末が改行にならなかった場合には、改行を追加して下さい。「\ ファイル末尾に改行がありません」という行もパッチの内なので、気にせずそのままコピペして下さい。 パッチの改行コードは、修正対象ファイルの改行コードと同じにします。サクラエディタの場合、「名前を付けて保存」のダイアログに改行コードの変換機能が付いています。vimの場合、たとえば改行コードをDOSスタイルにするには、コマンドモードで「set ff=dos」と入力してから「w」と入力してファイルに書き込むとよいです。 patchコマンドの実行先の項で準備した修正対象ファイルの存在するフォルダ(ディレクトリ)を作業フォルダ(カレントディレクトリ)としてコマンドプロンプト(シェル)にて「patch -b < パッチ」と入力します。 パッチの改行コードがシステムの改行コードと異なる場合(パッチの改行コードが、Windowsを使っているのにLFとか、UNIX系を使っているのにCRLFとか)にはエラーとなるので、その場合には、「patch -b --binary < パッチ」という風にpatchコマンドに「--binary」オプションを付けます。 サブディレクトリのファイルが対象のパッチの場合patchコマンドに「-pnum」オプションを追加します。
CommentsNo comments yet
Add CommentTrackbackこのトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。 |