Hallo,
On Sun, Mar 29, 2020 at 11:48:41PM +0200, Hilmar Preuße wrote:
Schau mal in configure resp. configure.in. Dort wir der Kram mit sed aus den Source Files "verwursted".
Hmm, leider weiß ich nicht welches configure Du meinst. In contrib selber gibt es keines und im Main Directory finde ich nicht zum Thema odbc.
Ich mein configure(.in) im Toplevel Verzeichnis des Upstream oder Debian Source Repositories (~ line 3650 im master des Debian Repos).
if test -f $srcdir/contrib/$moduledir/$src ; then srcarch=`sed -n '/.*$Archive: (.*)$.*/s//\1/p' "$srcdir/contrib/$moduledir/$src"` srclib=`sed -n '/.*$Libraries: (.*)$.*/s//\1/p' "$srcdir/contrib/$moduledir/$src"` else srcarch= srclib= fi
if test -f $srcdir/contrib/$moduledir/$srcinc ; then if test -z $srcarch ; then incarch=`sed -n '/.*$Archive: (.*)$.*/s//\1/p' "$srcdir/contrib/$moduledir/$srcinc"` else incarch= fi
inclib=`sed -n '/.*$Libraries: (.*)$.*/s//\1/p' "$srcdir/contrib/$moduledir/$srcinc"` else incarch= inclib= fi
Da werden die entsprechenden Angaben offensichtlich extrahiert.
So, ich habe jetzt das Paket zweimal gebaut: einmal mit, einmal ohne Patch. Wenn man das erzeugte Shared Object vergleicht fällt nur auf, daß das eine gegen libodbc.so.2 gelinkt ist, das Andere nicht.
hille@debian-amd64-sid:~/devel/proftp_debian/git$ ldd mod_sql_odbc.so linux-vdso.so.1 (0x00007ffd2f185000) libodbc.so.2 => /usr/lib/x86_64-linux-gnu/libodbc.so.2 (0x00007f6c7ec90000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6c7eacd000) libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f6c7eac2000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6c7eaa1000) /lib64/ld-linux-x86-64.so.2 (0x00007f6c7ed1f000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6c7ea9c000) hille@debian-amd64-sid:~/devel/proftp_debian/git$ ldd mod_sql_odbc_wo.so linux-vdso.so.1 (0x00007ffe497b6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f30a3bf9000) /lib64/ld-linux-x86-64.so.2 (0x00007f30a3dd9000)
Was auch immer mod_sql_odbc_wo.so sein mag. Vll. "without"?
Wenn man sich nm -D anschaut gibt es keine Unterschiede. Das einzige Symbol, was auf odbc hinweist ist "sql_odbc_module". Ich wäre schon mal schwer davon ausgegangen, daß der Link fehlschlägt, wenn ein Symbol nicht aufgelöst werden kann. Weiterhin läßt sich der proftp auch mit der "reduzierten" Variante des Moduls laden.
Ich denke mal die Module werden via dlopen(3) geladen. Damit ist das Starten des daemons erstmal kein Problem solange das Modul nicht in der Config auftaucht. Siehe modules/mod_dso.c. Vll. ist diese _wo.so auch sonne Art Dummy, dass es sogar dann funzt. Ich bezweifele allerding, dass das Paket proftpd-mod-mysql dann wirklich funktioniert.
Grüsse Andreas