| にゃんこうけ | 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.php.patch の場合だと、「NP_AutoTwitter.php.patch」がファイル名で、「*** NP_AutoTwitter.php…」で始まっている部分がパッチの本体です。パッチの本体を示す範囲は、その背景の色が変えてあったり、テキストエリアになっていたりして、それらしく分かるようになっているので、その範囲をコピペするようにして下さい。コピペした結果、最終行の行末が改行にならなかった場合には、改行を追加して下さい。「\ ファイル末尾に改行がありません」という行もパッチの内なので、気にせずそのままコピペして下さい。 修正前のプログラムの準備パッチに対応する修正前のプログラムを特定する情報は、パッチの関連記事の中に書いてあるので、それで察して下さい。たとえば、「NP_AutoTwitterをfancy URLとbit.lyに対応させるパッチ」の場合には、記事中のリンク先のNP_AutoTwitter.php.patchに対応する修正前のプログラムがNP_AutoTwitterのバージョン0.3.1であるということです。同じタイトルの記事でも、記事のリビジョンが変わるとパッチの内容や修正前のプログラムのバージョン等が変わることがあるので注意して下さい。また、修正前のプログラムが更新された時に、何故かそのバージョン番号が更新されなかったりすると、バージョン番号は合ってるのにプログラムとしては不整合ということになることはありえます。 修正対象ファイルの準備修正前のプログラムが準備できたら、そのプログラムの中で、修正対象のファイルを見つけて下さい。修正対象ファイルは、パッチの一番最初の行にそのファイル名とタイムスタンプが記録されているので、それを参考にして探すことができます。対象ファイルが見つかったら、そのファイルの改行コードがこれから実行しようとしているpatchコマンドに対応しているか確認して下さい。Windows用の場合は、16進数で「0D 0A」、UNIX用の場合は、「0A」でないとおかしなことになります。確認するには、Windowsの場合には、サクラエディタを使うのがお手軽です。サクラエディタで対象のファイルを開くとステータスバーに現在のカーソル行の改行コードが表示されます。「CRLF」となっていればWindows用の改行コードです。違っている場合には、「名前を付けて保存」のダイアログに改行コードの変換機能が付いているので、それを使って修正できます。対象ファイルを開いてみて文字化けしている時には、「ファイル→開き直す」で色々な文字コードで開くことができるので、文字化けしなくなるまで、色々な文字コードで開いてみるとよいです。ちなみに、サクラエディタは1つのファイルの中で改行コードが混在できるという特徴があり、色々な改行コードのファイルを開いてコピペを繰り返すと色々な改行コードが混ざったファイルができておかしなことになることがあるので、おかしなことになった場合には、「名前を付けて保存」で改行コードを指定して保存するとよいです。 UNIX系のOSでファイルの改行コードを確認するには、シェルにて「od -t c 対象ファイル」と入力するとよいです。ファイルの中身が1バイト毎にASCII文字とC言語のエスケープシーケンスのような形式で表示されるので、改行と思しき部分が「\n」になっていればUNIX用の改行コードです。「\r \n」となっていた場合、それはWindows用なので修正が必要になります。修正するには、シェルにて「sed -i.bak 's/\r//g' 対象ファイル」と入力するとお手軽です。これだと、改行コードを修正する前のファイルがその名前のサフィックスに「.bak」が付いた名前でバックアップされ、改行コードが修正されたファイルが対象ファイルそのものの名前で作成されます。 patchコマンドの実行先の項で準備した修正対象ファイルの存在するフォルダ(ディレクトリ)を作業フォルダ(カレントディレクトリ)としてコマンドプロンプト(シェル)にて「patch -b < パッチ」と入力します。 CommentsNo comments yet
Add CommentTrackbackこのトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。 |