Mariadb
將 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 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_password,因為 pureftpd 從過去就開始使用它,那時一切都被允許。Debian有一個不同的,更簡單(且不太正確)的版本控制方法,所有符號都有 libmysqlclient_18 版本。在 MariaDB 中,我們設法創建了一個兼容這兩種方法的庫。my_make_scrambled_password 沒有隱藏,註釋為“for pureftpd”。已經從 pureftpd 中刪除了 my_make_scrambled_password 的使用,但尚未更新 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
在此之後系統開始工作