Mariadb

將 MariaDb 更新到 10.2 後 Pure-ftpd-mysql 不會啟動

  • February 19, 2020

我將 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 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.

日誌控制

-- 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

輸入“幫助”;或 ‘\h’ 尋求幫助。鍵入 ‘\c’ 以清除目前輸入語句。

這絕對是 Debian pureftpd 軟體包的一個已知錯誤 以下是完整的故事: 在早期,比如說,大約 20 年前,libmysqlclient 沒有版本符號,也沒有限制它們的可見性。一些函式被記錄在案——它們是客戶端 API,我們承諾保持它們穩定,工作多年。其他功能沒有記錄,它們是內部的,沒有承諾。但它們也被導出並可用。後來,在 MariaDB 時代,RedHat 對 libmysqlclient 符號進行了版本控制。libmysqlclient.so.16.0.0 中的舊符號的版本為 libmysqlclient_16,較新的符號的版本為 libmysqlclient_18。內部符號是隱藏的,只有少數例外。其中一個例外是 my_make_scrambled_pa​​ssword,因為 pureftpd 從過去就開始使用它,那時一切都被允許。Debian有一個不同的,更簡單(且不太正確)的版本控制方法,所有符號都有 libmysqlclient_18 版本。在 MariaDB 中,我們設法創建了一個兼容這兩種方法的庫。my_make_scrambled_pa​​ssword 沒有隱藏,註釋為“for pureftpd”。已經從 pureftpd 中刪除了 my_make_scrambled_pa​​ssword 的使用,但尚未更新 debian 版本,因此,目前唯一的選擇是從原始碼安裝:

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

在此之後系統開始工作

引用自:https://serverfault.com/questions/861176