Apacheのパッチの当てたいのですが、うまくいきません。
下記のURLを見て、当てようと思っています。
http://www.ossexpo.net/2009/11/solaris10-apache- …
作業手順
cd /work/src/httpd-2.2.14/srclib/apr/poll/unix
bash-3.00# ls
epoll.c kqueue.c patch poll.o port.lo select.lo
epoll.lo kqueue.lo poll.c port.c port.o select.o
epoll.o kqueue.o poll.lo port.c.rej select.c test.patch
bash-3.00# patch -p0 < test.patch
結合されたコンテキスト diff のようです。
パッチを適用するファイル: port.c
逆方向の (あるいは以前に適用された) パッチが検出されました。-R と仮定します。[yes]
適用しますか? [no]
1 番目のパッチ内容を 0 行目で無視しました。
1 個のうち 1 個のパッチ内容を無視しました: 適用されなかったパッチを port.c.rej に保存します。
該当する場所にはパッチが見当たりません。
そもそも、やり方が間違っているのでしょうか?
cat test.patch
--- work/src/httpd-2.2.14/srclib/apr/poll/unix/port.c 2009/08/24 15:05:59 807269
+++ work/src/httpd-2.2.14/srclib/apr/poll/unix/port.c 2009/10/26 14:02:41 829803
@@ -101,8 +101,11 @@
}
ret = port_getn(port, list, max, nget, tvptr);
+ /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative
+ * values instead of 0 when returning immediately.
+ */
- if (ret < 0) {
+ if (ret == -1) {
rv = apr_get_netos_error();
switch(rv) {
勉強不足で申し訳ありませんが、教えていただけたら幸いです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
> こちらの方で対処しよう思うんですが、
>>あと差分が少ないので、直接手で port.c を編修(俗に手パッチという)してもよいのでは?
C言語をご存知かどうか分かりませんので冗長な説明かも知れませんが、ご了承下さい。
+ /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative
+ * values instead of 0 when returning immediately.
+ */
パッチの上記部分は C言語のコメントなので追加しなくてもよいです。
- if (ret < 0) {
+ if (ret == -1) {
実質意味のある変更は上記の部分だけなので、 "< 0" を "== -1" に変えるだけです。
> 現状のport.cファイルを確認したところ、特に変える必要が無いような
> 気がします。
上記の「現状のport.c」とは httpd-2.2.14 のオリジナルのファイルではなく、なにかしら操作した後のファイルという認識でよいですか?
tarball から改めて port.c を取り出してみると分かりますが、少なくともオリジナルのファイルは該当箇所が、
if (ret < 0) {
となっているので、何かしら操作してしているうちにパッチがあたってしまったのではないでしょうか?
気になるなら、オリジナルの port.c と「現状の port.c」の差分をとってパッチファイルと一致しているか確認すればよいでしょう。
> パッチを当てる必要がないと言うことですよね?
少なくとも私が確認した限りにおいては、パッチはあてる必要があります。(なお、GNU patch コマンドでしか試していません。)
xinuさん
>tarball から改めて port.c を取り出してみると分かりますが、少なく>と.もオリジナルのファイルは該当箇所が、
>if (ret < 0) {
>となっているので、何かしら操作してしているうちにパッチがあたってし>まったのではないでしょうか?
>気になるなら、オリジナルの port.c と「現状の port.c」の差分をとって>パッチファイルと一致しているか確認すればよいでしょう。
確かに、再度、tarから展開したら、if (ret < 0)になってました。
失礼いたしました。その後、編集し、再度、再コンパイルし
確認したところ、エラーが出なくなりました。
本当にありがとうございました。
No.1
- 回答日時:
> cd /work/src/httpd-2.2.14/srclib/apr/poll/unix
> bash-3.00# patch -p0 < test.patch
> cat test.patch
> --- work/src/httpd-2.2.14/srclib/apr/poll/unix/port.c 2009/08/24 15:05:59 807269
> +++ work/src/httpd-2.2.14/srclib/apr/poll/unix/port.c 2009/10/26 14:02:41 829803
上記の通りディレクトリ /work/src/httpd-2.2.14/srclib/apr/poll/unix で patch コマンドを実行しているのなら、-p0 ではなく -p7 とすべきです。
-p オプションの意味をよく確認しましょう。
(work/src/httpd-2.2.14/srclib/apr/poll/unix/port.c から削除すべき / の数を指定するのですよ。)
また、GNU patch (/usr/bin/gpatch)の方を使用しないと、うまくパッチが当たらないかもしれません。
あと差分が少ないので、直接手で port.c を編修(俗に手パッチという)してもよいのでは?
この回答への補足
質問があります。
こちらの方で対処しよう思うんですが、
>あと差分が少ないので、直接手で port.c を編修(俗に手パッチという)してもよいのでは?
現状のport.cファイルを確認したところ、特に変える必要が無いような
気がします。間違っていたら申し訳ありません。
教えていただいたURLからのパッチファイル
@@ -101,8 +101,11 @@
}
ret = port_getn(port, list, max, nget, tvptr);
+ /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative
+ * values instead of 0 when returning immediately.
+ */
- if (ret < 0) {
+ if (ret == -1) {
rv = apr_get_netos_error();
switch(rv) {
現状のport.cファイル
ret = port_getn(port, list, max, nget, tvptr);
/* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative
* values instead of 0 when returning immediately.
*/
if (ret == -1) {
rv = apr_get_netos_error();
switch(rv) {
パッチを当てる必要がないと言うことですよね?
質問とは、別なものになっているようであれば、新規投稿で聞いてみます。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Flaskでサーバー立ち上げに関して 1 2023/08/12 21:02
- モニター・ディスプレイ display portの仕様と使い方について教えてください。 1 2023/06/12 08:13
- 中古パソコン 起動時の黒い背景で白文字の画面 3 2022/10/21 16:11
- その他(ソフトウェア) Microsoft Store Guitar Pro購入後の質問 1 2022/08/11 17:15
- セキュリティホール・脆弱性 Windows PC 背面のDISPPORT 3 2022/06/04 13:52
- UNIX・Linux コマンド 2 2022/07/04 13:47
- オープンソース gmailでのimap設定 1 2022/09/15 13:25
- その他(言語学・言語) ネーミングについて 2 2022/09/03 21:41
- モニター・ディスプレイ 写真のようにGoogle TVをdisplay port に変換してモニターに接続したのですが、映り 2 2022/12/16 12:55
- Android PCのDISPLAY PORTとは? 4 2022/06/04 13:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ラズパイで『’test.service’をs...
-
テキストファイルから最終行の抽出
-
ファイル名についている「-」と...
-
バッチファイルでのzip形式フォ...
-
FTP接続時の文字化け(CentOS6.5)
-
ftpコマンドで丸ごとダウン...
-
ファイル名一覧の印刷
-
linuxのコマンドラインでmp3フ...
-
【シェル】日付が最も古くサイ...
-
ごみ箱に入れるWindows コマン...
-
DOSコマンドのFOR文で空白を含...
-
DOSのコマンドで、隠しファイル...
-
ディレクトリ以下の全ファイル...
-
Linuxで標準出力したファイルの...
-
Cygwinのコマンドラインから.ba...
-
cpコマンドで強制的に上書きし...
-
batファイルの強制終了を回避し...
-
制御コード「^Z」とは何ですか?
-
どうしても削除できないファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
テキストファイルから最終行の抽出
-
ラズパイで『’test.service’をs...
-
xcopyのエラー情報のはき...
-
DOSコマンドのFOR文で空白を含...
-
Linuxで標準出力したファイルの...
-
oracleの文字コードとlinuxサー...
-
DOS コマンドの~zfの意味を教え...
-
batファイルの強制終了を回避し...
-
win11のエクスプローラーの右ク...
-
ファイル名一覧の印刷
-
特定の更新日付のファイルのみ...
-
数字を複数回繰り返す正規表現...
-
コマンドプロンプト dir でのソ...
-
ファイル名の -(ハイフン)を _(...
-
TeXでの見出しの変更は可能でし...
-
Windowsバッチファイルで、隠し...
-
「Vmmem」のメモリ使用量が高い...
-
cpコマンドで強制的に上書きし...
おすすめ情報