[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:39707] <Q> 手パッチの当て方( Re: <Q> smtp authentication with woody



柴田(あ)です。

やっぱり Debian specific な話になりましたので、
戻ってまいりました。
質問は Debian specific じゃないんですが、
トラブルの元が Debian specific みたいなので…

In message <m2wu6eqyn1.fsf@xxxxxxxxxxxxxxxxx>
   "[debian-users:39628] Re: <Q> smtp authentication with woody"
   "Mon, 23 Feb 2004 12:10:31 +0900"
   "OHASHI Akira <bg66@debian.org>" wrote:

■質問
手パッチのを当てたいのでパッチファイルの見方を
お教えいただけないでしょうか?
行頭の + とか ! について


■目的
下記を実行したいのですが、その下の現状で
記述するようにエラーがでてコンパイルできません。
手でパッチを当てようと思っているのですが、
ちゃんとあたっているようにも見えます。

> > できればバイナリをそのまま(ダメならコンパイルします)
> > 利用して smtp auth を実現したいと考えています。
> 
> sid なので状況が違うかもしれませんが qmail に smtp auth パッチを当てて
> 利用しています。
> バイナリをそのままとの事ですが qmail のパッケージはどの道自分でコンパ
> イルする必要があるので、smtp auth パッチを当てて使用するのが一番良いと
> 思います。
> qmail-src パッケージに同梱されているパッチの影響で Makefile と
> qmail-smtp.c が reject されますが、reject 箇所はたったの 4 行なので、
> 手で対処出来ると思います。
> 
> ;; http://www.koka-in.org/~bg66/blog/archives/000105.html


■現状
上記の URL を参考に build-qmail している途中で
パッチを当ててコンパイルを継続するという方法を
とっています。

●ターミナル1で build-smail を開始します。
shibata@fletsmail:~$ ls /tmp
daemontools  qmail  ucspi-tcp
shibata@fletsmail:~$ sudo rm -rf /tmp/qmail
Password:
shibata@fletsmail:~$ sudo build-qmail

This script unpacks the qmail source into a directory, and
compiles it to produce a binary qmail*.deb file.

The directory where this is done will end up containing the source
and package files for the qmail binary package, along with a
directory containing the unpacked source.

Enter a directory where you would like to do this [/tmp/qmail]
dpkg-source: extracting qmail in qmail-1.03

dpkg-source: extracting qmail in qmail-1.03

Binary package qmail will be compiled now
If you want to apply a custom patch, switch to another console and do it now
This can take long time, depending on your machine

Press ENTER to continue...


●ここでターミナル2のほうでパッチを当てます。
shibata@fletsmail:/tmp/qmail/qmail-1.03$ cat ~/smtpauth/qmail-smtpd-auth-0.31/au
th.patch | sudo patch -p0
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
Hunk #2 succeeded at 63 (offset 1 line).
Hunk #3 succeeded at 262 (offset 21 lines).
Hunk #4 succeeded at 437 (offset 23 lines).
Hunk #5 succeeded at 667 (offset 23 lines).

パッチはあたっているみたい

その根拠は目でみた範囲ですが、パッチファイルの
+ の行はすべて含まれているようにみえ、
! の行は書き換わっていたり、削除されているようにみえます。

ただ、手でパッチを当てたことがないので、
+ の記号と ! の記号の意味について web で調べても
わからなかったので、反映されているものと理解しました。


たとえば、パッチファイルのほう
  #include "commands.h"
+ #include "wait.h"
+ #include "fd.h"

+ #define AUTHCRAM
  #define MAXHOPS 100

となっているので、変更したいファイルのほうが
#include "commands.h"
#include "wait.h"
#include "fd.h"

#define AUTHCRAM
#define MAXHOPS 100

となっていればパッチがあたっているとかんがえ、

パッチファイルのほうが
!   smtp_greet("250-"); out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n");
となっていて、当てたあとのファイルには該当行が
なかったのでないものとして ! は削除もしくは
改変の意味と理解しました。

ここまでやって、

●一時停止になっていたターミナル1のほうで
[Enter] たたきました。
上略
:
| sed s}SPLIT}"`head -1 conf-split`"}g \
> qmail-qstat
chmod 755 qmail-qstat
./compile qmail-tcpto.c
qmail-tcpto.c: In function `main':
qmail-tcpto.c:36: warning: return type of `main' is not `int'
./load qmail-tcpto ip.o now.o open.a lock.a substdio.a \
error.a str.a fs.a auto_qmail.o
./compile qmail-tcpok.c
qmail-tcpok.c: In function `main':
qmail-tcpok.c:15: warning: return type of `main' is not `int'
./load qmail-tcpok open.a lock.a strerr.a substdio.a \
error.a str.a auto_qmail.o
./compile qmail-pop3d.c
qmail-pop3d.c: In function `main':
qmail-pop3d.c:295: warning: return type of `main' is not `int'
./compile commands.c
./compile maildir.c
./load qmail-pop3d commands.o case.a timeoutread.o \
timeoutwrite.o maildir.o prioq.o now.o env.a strerr.a sig.a \
open.a getln.a stralloc.a alloc.a substdio.a error.a str.a \
fs.a  `cat socket.lib`
./compile qmail-popup.c
qmail-popup.c: In function `main':
qmail-popup.c:169: warning: return type of `main' is not `int'
./load qmail-popup commands.o timeoutread.o timeoutwrite.o \
now.o case.a fd.a sig.a wait.a stralloc.a alloc.a \
substdio.a error.a str.a fs.a  `cat socket.lib`
./compile qmail-qmqpc.c
./load qmail-qmqpc slurpclose.o timeoutread.o \
timeoutwrite.o timeoutconn.o ip.o control.o auto_qmail.o \
sig.a ndelay.a open.a getln.a substdio.a stralloc.a alloc.a \
error.a str.a fs.a  `cat socket.lib`
./compile qmail-qmqpd.c
./compile received.c
./load qmail-qmqpd received.o now.o date822fmt.o qmail.o \
auto_qmail.o env.a substdio.a sig.a error.a wait.a fd.a \
str.a datetime.a fs.a
./compile qmail-qmtpd.c
./compile rcpthosts.c
./load qmail-qmtpd rcpthosts.o control.o constmap.o \
received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
datetime.a open.a getln.a sig.a case.a env.a stralloc.a \
alloc.a substdio.a error.a str.a fs.a auto_qmail.o
make[1]: *** No rule to make target `base64.h', needed by `qmail-smtpd.o'.  Stop
.
make[1]: Leaving directory `/tmp/qmail/qmail-1.03'
make: *** [build] Error 2

となってエラーで終了します。

上記 URL には「 Debian 独自(?)のパッチとぶつかって reject …」と
あり、見てみましたが、 Makefile および qmail-smtpd.c には
パッチの内容が反映されているように見えました。

上記の qmail-smtpd.o で必要とされている base64.h については
1. どこに書いてあるべきなのかとか
2. パッチを当てたときにでてくる、 Hunk の意味や後ろの数字の
   意味について man でも web でも理解できなかったのでした。
   プログラムを書く人なら常識なのかもしれませんが、
   ポインタか、答えそのものをお教えいただけないでしょうか?

柴田が怪しいとにらんでいるパッチ当て時のメッセージ部
+-----------------------
| patching file qmail-smtpd.c
| Hunk #2 succeeded at 63 (offset 1 line).
| Hunk #3 succeeded at 262 (offset 21 lines).
| Hunk #4 succeeded at 437 (offset 23 lines).
| Hunk #5 succeeded at 667 (offset 23 lines).
+-----------------------

-- 
SHIBATA Akira      ケーブルテレビはまちづくり
shibata@xxxxxxxxxxxxxx   phone : +81-429-74-3611