将MariaDb更新到10.2后,Pure-ftpd-mysql不会启动

我更新了Mariadb从10.0到10.2,现在pure-ftpd-mysql不会重新启动:

service pure-ftpd-mysql restart 

输出:

 Job for pure-ftpd-mysql.service failed. See 'systemctl status pure-ftpd-mysql.service' and 'journalctl -xn' for details. 

systemctl

 systemctl status pure-ftpd-mysql.service -l 

输出

 ● pure-ftpd-mysql.service - (null) Loaded: loaded (/etc/init.d/pure-ftpd-mysql) Active: failed (Result: exit-code) since Sun 2017-07-09 23:12:23 CEST; 53s ago Process: 3887 ExecStart=/etc/init.d/pure-ftpd-mysql start (code=exited, status=127) Jul 09 23:12:23 s***.h****.net pure-ftpd-mysql[3887]: Starting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -E -j -D -A -H -J ALL:!aNULL:!SSLv3 -O clf:/var/log/pure-ftpd/transfer.log -b -8 UTF-8 -Y 1 -u 1000 -B Jul 09 23:12:23 s***.h****.net pure-ftpd-mysql[3887]: /usr/sbin/pure-ftpd-mysql-virtualchroot: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18: no version information available (required by /usr/sbin/pure-ftpd-mysql-virtualchroot) Jul 09 23:12:23 s***.h****.net pure-ftpd-mysql[3887]: /usr/sbin/pure-ftpd-mysql-virtualchroot: relocation error: /usr/sbin/pure-ftpd-mysql-virtualchroot: symbol my_make_scrambled_password, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference Jul 09 23:12:23 s***.h****.net systemd[1]: pure-ftpd-mysql.service: control process exited, code=exited status=127 Jul 09 23:12:23 s***.h****.net systemd[1]: Failed to start (null). Jul 09 23:12:23 s***.h****.net systemd[1]: Unit pure-ftpd-mysql.service entered failed state. 

journalctl

 -- Unit pure-ftpd-mysql.service has begun starting up. Jul 09 23:15:22 s***.h****.net pure-ftpd-mysql[4170]: Starting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam - Jul 09 23:15:22 s***.h****.net pure-ftpd-mysql[4170]: /usr/sbin/pure-ftpd-mysql-virtualchroot: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18: no version information avai Jul 09 23:15:22 s***.h****.net pure-ftpd-mysql[4170]: /usr/sbin/pure-ftpd-mysql-virtualchroot: relocation error: /usr/sbin/pure-ftpd-mysql-virtualchroot: symbol my_make_s Jul 09 23:15:22 s***.h****.net systemd[1]: pure-ftpd-mysql.service: control process exited, code=exited status=127 Jul 09 23:15:22 s***.h****.net systemd[1]: Failed to start (null). -- Subject: Unit pure-ftpd-mysql.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit pure-ftpd-mysql.service has failed. -- -- The result is failed. Jul 09 23:15:22 s***.h****.net systemd[1]: Unit pure-ftpd-mysql.service entered failed state. 

mariadb -v

 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 17831 Server version: 10.2.6-MariaDB-10.2.6+maria~jessie-log mariadb.org binary distribution Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Reading history-file /root/.mysql_history 

input'help' 或'\ h'寻求帮助。 input'\ c'清除当前的input语句。

这是Debian pureftpd软件包中一个已知的bug。下面是完整的故事:在20年前的早期,libmysqlclient没有版本符号,也没有限制其可见性。 一些function被logging在案 – 他们是客户端API,我们承诺保持稳定,工作多年。 其他function没有logging,它们是内部的,没有承诺。 但他们也出口和可用。 后来在MariaDB的时候,RedHat正在版本化libmysqlclient的符号。 libmysqlclient.so.16.0.0中的旧符号的版本为libmysqlclient_16,较新的符号的版本为libmysqlclient_18。 内部symols是隐藏的,除了less数例外。 其中一个例外就是my_make_scrambled_pa​​ssword,因为pureftpd从以前开始使用它,当时一切都是允许的。 Debian有一个不同的,更简单的(不太正确的)版本控制方法,所有的符号都有libmysqlclient_18版本。 在MariaDB中,我们设法创build了一个兼容这两种方法的库。 my_make_scrambled_pa​​ssword没有隐藏,注释“for pureftpd”。 已经从pureftpd中删除了my_make_scrambled_pa​​ssword的使用,但是debian版本尚未更新,因此,现在唯一的select是从源代码安装:

 apt-get remove pure-ftpd-mysql cd /tmp wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.gz tar xzvf pure-ftpd-1.0.47.tar.gz cd pure-ftpd-1.0.47 ./configure --with-tls --with-virtualchroot --with-puredb --with-quotas --with-throttling --with-mysql make install-strip 

之后系统开始工作