Титла: Vsftpd + glibc-2.5.0 - компил. от сорс на slack 12
Публикувано от: carpo в Oct 16, 2007, 18:57
Здравейте! Администрирам сървър, който до скоро беше със Slackware 10.2, но реших да го обновя. Сложих Slackware 12.0.0. Пренасянето на настройките, потребителски данни и т.н. мина успешно, с някои забележки, естествено... Проблема, който не ми дава мира е следният: докато машината беше със стария слак, имах инсталиран vsftpd 2.0.5 + PAM 0.9x.x, като беше настроен със виртуални потребители и т.н. Всичко компилирах от сорс. При опит за компилиране на vsftpd 2.0.5 на слак 12 се сблъсквам със следния проблем: Примерен код | sysdeputil.c:162: error: expected declaration specifiers or '...' before 'capset' sysdeputil.c:162: error: expected declaration specifiers or '...' before 'header' sysdeputil.c:162: error: expected declaration specifiers or '...' before 'data' In file included from sysdeputil.c:170: /usr/include/sys/sendfile.h: In function '_syscall2': /usr/include/sys/sendfile.h:35: error: storage class specified for parameter 'sendfile' sysdeputil.c:186: error: storage class specified for parameter 'environ' sysdeputil.c:187: error: storage class specified for parameter 's_proctitle_space' sysdeputil.c:187: error: parameter 's_proctitle_space' is initialized sysdeputil.c:188: error: storage class specified for parameter 's_proctitle_inited' sysdeputil.c:188: error: parameter 's_proctitle_inited' is initialized sysdeputil.c:189: error: storage class specified for parameter 's_p_proctitle' sysdeputil.c:189: error: parameter 's_p_proctitle' is initialized sysdeputil.c:201: error: storage class specified for parameter 'do_sendfile' sysdeputil.c:202: error: storage class specified for parameter 'vsf_sysutil_setproctitle_internal' sysdeputil.c:203: error: storage class specified for parameter 's_proctitle_prefix_str' sysdeputil.c:278: error: storage class specified for parameter 's_pamh' sysdeputil.c:279: error: storage class specified for parameter 's_pword_str' sysdeputil.c:281: error: storage class specified for parameter 'pam_conv_func' sysdeputil.c:282: error: storage class specified for parameter 'vsf_auth_shutdown' sysdeputil.c:288: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:383: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:398: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:436: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:474: error: storage class specified for parameter 'do_checkcap' sysdeputil.c:478: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:497: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:514: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:527: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:604: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:641: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:796: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:803: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:809: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:856: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:889: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:930: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:935: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:976: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:1012: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:1128: error: storage class specified for parameter 's_uwtmp_inserted' sysdeputil.c:1129: error: storage class specified for parameter 's_utent' sysdeputil.c:1134: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:1173: error: expected '=', ',', ';', 'asm' or '' before '{' token sysdeputil.c:1189: error: old-style parameter declarations in prototyped function definition sysdeputil.c:162: error: parameter name omitted sysdeputil.c:162: error: parameter name omitted sysdeputil.c:162: error: parameter name omitted sysdeputil.c:1189: error: expected '{' at end of input make: *** [sysdeputil.o] Error 1
|
Реших, че има нещо гнило в цялата работа, и порових из интернет. Открих следното - цък. На форума от линка, господата казват общо взето, че понеже слак 12 идвал без PAM (цък), видите ли, трябвало да го зарязваме, и да минаваме на друго дистро. Е да, ама аз не ща!
Рових из сорсовете - както се вижда от кода по-горе, vsftpd във файла си sysdeputil.c включва /usr/include/sys/sendfile.h, който, стига да погледне човек във него, си пише, че е част от glibc-2.5 (това във Slackware 12).
Според вас, не е ли редно автора на иначе страхотната програма vsftpd да вземе да я погледне - изпратил съм му e-mail, описващ проблема - в случая - съвместимост със glibc-2.5.0; и нещо по-"практически приложимо" : ще опита ли някой от вас, със система с glibc версия поне 2.5.0 да компилира vsftpd-2.0.5 (сайт) от сорс, за да знам струва ли си мъката да опитвам да обновявам glibc ?
Благодарности!
Титла: Vsftpd + glibc-2.5.0 - компил. от сорс на slack 12
Публикувано от: ray в Oct 16, 2007, 19:32
Здравейте,
При мен (glibc-2,6.1) и непроменен builddefs.h (виж INSTALL) се компилира (Gentoo). $cat builddefs.h #ifndef VSF_BUILDDEFS_H #define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS #define VSF_BUILD_PAM #undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */ ...край... Успех. Румен
Титла: Vsftpd + glibc-2.5.0 - компил. от сорс на slack 12
Публикувано от: carpo в Oct 17, 2007, 08:07
Румба, благодаря ти, че си отделил време да опиташ компилация от сорс!
Сега следва сложното за мене - обновяване на glibc на жива и иначе много дробре работеща система... ...или измисляне на пач, който оправя нещата поне при мен...
Благодаря!
Титла: Vsftpd + glibc-2.5.0 - компил. от сорс на slack 12
Публикувано от: carpo в Oct 17, 2007, 10:22
И така, за всички желаещи да компилират vsftpd-2.0.5 + PAM от сорс на ОС Slackware 12.0.0, предлагам да използват следния пач: Примерен код | --- a/sysdeputil.c 2006-07-03 01:14:10.000000000 +0300 +++ b/sysdeputil.c 2007-10-17 09:40:18.000000000 +0300 @@ -159,7 +159,7 @@ #include <linux/capability.h> #include <errno.h> #include <syscall.h> -_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data) +//_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data) /* Gross HACK to avoid warnings - linux headers overlap glibc headers */ #undef FDMASK
|
Точна последователност от нужни действия: 1) запазвате горния код, например под името vsftpd-2.0.5-glibc-2.5-patch 2) разархивирате vsftpd-2.0.5.tar.gz :
Примерен код | user@machine$ cd /tmp/compile user@machine$ gunzip -c /път/до/vsftpd-2.0.5.tar.gz | tar -xv user@machine$ cd vsftpd-2.0.5 user@machine$ cat /път/до/vsftpd-2.0.5-glibc-2.5-patch | patch -p1
|
Следва редактиране на builddefs.h по ваш вкус, като например ако искате PAM поддръжка, то трябва предварително да сте инсталирали PAM.... Пускаме компилирането:
Примерен код | user@machine$ time make user@machine$ su -c "make install"
|
... и вече имаме изпълнимият файл /usr/local/sbin/vsftpd
Приготвяте и конфигурационните файлове, и сте готови!
Изпробвано и работещо на Slackware 12. По време на компилиране на пачнатия vsftpd излизат няколко warning-а, но не забелязвам това да дава някакво отражение в работата на компилирания сървър.
Успех!
|