AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 861176
Accepted
spacebiker
spacebiker
Asked: 2017-07-10 13:18:52 +0800 CST2017-07-10 13:18:52 +0800 CST 2017-07-10 13:18:52 +0800 CST

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

  • 772

我将 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' 以清除当前输入语句。

mariadb
  • 4 4 个回答
  • 4912 Views

4 个回答

  • Voted
  1. Best Answer
    spacebiker
    2017-11-12T04:24:49+08:002017-11-12T04:24:49+08:00

    这绝对是 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
    

    在此之后系统开始工作

    • 2
  2. psyray
    2019-09-24T03:37:17+08:002019-09-24T03:37:17+08:00

    对于那些使用 Debian 9 (stretch) 和 pure-ftpd-mysql v1.0.43 和 mariadb 10.3(对我来说是 Ispconfig)的人,你可以从这个 gitlab 安装两个 debfile

    这是与此错误补丁相同的版本

    感谢 jisse44 提供了这个编译版本,感谢 luckyluk3 提供了 howtoforge 上的链接

    • 1
  3. tbprogi
    2018-05-10T08:46:22+08:002018-05-10T08:46:22+08:00

    使用 mariadb 10.2 的 Debian 拉伸
    必须下载https://packages.debian.org/stretch/amd64/libmariadb-dev/download 并在 dpkg -i libmariadb-devxxxxx.deb ./configure --with-tls 之后安装 libmariadb2 - -with-virtualchroot --with-puredb --with-quotas --with-throttling --with-mysql make install-strip

    • 0
  4. jave.web
    2020-02-20T03:32:47+08:002020-02-20T03:32:47+08:00

    Debian 和 pure-ftpd-mysql (MariaDB) 上的 ISPConfig 3

    所以我尝试了@spacebiker 的回答,连同回答评论,我设法让服务运行——但是,出于某种奇怪的原因——它仍然无法正常工作。所以我已经清除了一切。
    sudo apt purge pure-ftpd*获得干净的状态。
    然后我应用了来自@psyray 的修复,提供了 gitlab 用户提供的 howto 链接jisse44,然后从 ISPConfig php更新脚本重新配置了 pure-ftpd-mysql 服务:

    https://gitlab.com/jisse44/pure-ftpd/blob/master/HowTo.txt

    支持并感谢 gitlab.com/jisse44

    为了完整和更持久的答案,我将在这里引用所有内容

    gitlab.com/jisse44/pure-ftpdHowTo.txt

    We will rebuild the pure-ftp-1.0.43-3 package from official Debian sources, with patch applied:
    
    You may need to install this packages before:
    apt-get install build-essential fakeroot dpkg-dev autoconf-archive libcap2-dev default-libmysqlclient-dev po-debconf debhelper
    
    cd /usr/local/src
    mkdir pure-ftp-1.0.43-3
    cd pure-ftp-1.0.43-3
    wget http://deb.debian.org/debian/pool/main/p/pure-ftpd/pure-ftpd_1.0.43-3.dsc
    wget http://deb.debian.org/debian/pool/main/p/pure-ftpd/pure-ftpd_1.0.43.orig.tar.gz
    wget http://deb.debian.org/debian/pool/main/p/pure-ftpd/pure-ftpd_1.0.43-3.diff.gz
    tar zxvf pure-ftpd_1.0.43.orig.tar.gz
    mv pure-ftpd-1.0.43.orig/ pure-ftpd-1.0.43
    mkdir pure-ftpd-1.0.43/debian
    gunzip pure-ftpd_1.0.43-3.diff.gz
    patch -p0 < pure-ftpd_1.0.43-3.diff
    wget https://gitlab.com/jisse44/pure-ftpd/raw/master/configure.ac.diff
    wget https://gitlab.com/jisse44/pure-ftpd/raw/master/log_mysql.c.diff
    patch -p0 < configure.ac.diff
    patch -p0 < log_mysql.c.diff
    chmod +x pure-ftpd-1.0.43/debian/rules
    cd pure-ftpd-1.0.43/
    dpkg-buildpackage -uc -b
    cd ..
    dpkg -i pure-ftpd-mysql_1.0.43-3_amd64.deb pure-ftpd-common_1.0.43-3_all.deb
    
    • 如果某些缺少的软件包失败/错误=>只需安装它们
      sudo apt install missingPackageMissing
    • 如果由于某些权限问题而失败 - 只需使用 su 切换 tu sudo 模式
    • 这个过程需要很长时间(几分钟,它是一个完整的重建和安装),但之后服务 pure-ftpd-mysql 能够启动 - 而 pure-ftpd-mysql 服务就是你所需要的 - 程序方面你只需要pure-ftpd-common和pure-ftpd-mysql

    你不需要pure-ftpd(服务),你只需要pure-ftpd-mysql(服务)!

    重新配置 ISPConfig 服务

    在此之后,我最终运行了 pure-ftpd-mysql 服务,但很明显,它不能与 ISPConfig 的数据库一起使用。

    您需要做的是在 ISPConfig 更新过程中重新配置服务 - 问题是,如果您已经更新了 ISPConfig,更新sh脚本将不会运行。

    所以你需要获取当前的 ispconfig 安装并从中运行php update

    • 首先,您需要知道ispconfig-interface的config.inc.php的数据库连接信息
      =>您可以找到这样的
      cat /usr/local/ispconfig/interface/lib/config.inc.php | grep --context=5 "db_password"
      (显示文件并仅过滤掉带有“db_password”的行+前后5行的上下文)
    • 转到 tmp 目录cd /tmp
    • 下载当前安装wget https://ispconfig.org/downloads/ISPConfig-3.1.15p2.tar.gz
    • 打开包装tar zxvf ISPConfig-3.1.15p2.tar.gz
    • 转到安装目录(这是必须的)cd /tmp/ispconfig3_install/install/
    • 运行PHP(重要)更新脚本php /tmp/ispconfig3_install/install/update.php
    • 在安装过程中被问到是否reconfigure services回答是!
    • 当询问数据库密码(或其他数据库连接信息)时,请使用您在config.inc.php前面找到的信息

    跑步service pure-ftpd-mysql restart,你应该一切都好

    gitlab 上的文件不再可用?

    将来,这个 gitlab 补丁文件可能会不存在
    https://gitlab.com/jisse44/pure-ftpd/raw/master/configure.ac.diff,
    https://gitlab.com/jisse44/pure-ftpd/raw/master/log_mysql.c.diff
    但是它们是纯文本的,所以我也会把它们放在这里(我希望 debian 链接会保留)

    gitlab.com/jisse44/pure-ftp configure.ac.diff

    --- pure-ftpd-1.0.43/configure.ac   2018-11-30 15:12:17.024657198 +0100
    +++ pure-ftpd-1.0.43/configure.ac   2018-11-30 14:32:32.046763067 +0100
    @@ -1317,7 +1317,6 @@
             AC_MSG_ERROR(Your MySQL client libraries aren't properly installed)
         ],[])
         AC_MSG_RESULT(yes)
    -    AC_CHECK_FUNCS(my_make_scrambled_password make_scrambled_password)
       fi ])
    
     AC_ARG_WITH(pgsql,
    

    gitlab.com/jisse44/pure-ftp log_mysql.c.diff

    --- pure-ftpd-1.0.43/src/log_mysql.c    2018-11-30 15:07:55.673325041 +0100
    +++ pure-ftpd-1.0.43/src/log_mysql.c    2018-11-30 14:34:45.002421780 +0100
    @@ -470,33 +470,24 @@
         if (crypto_mysql != 0) {
             char scrambled_password[42]; /* 2 * 20 (sha1 hash size) + 2 */
    
    -# ifdef HAVE_MY_MAKE_SCRAMBLED_PASSWORD
    -        my_make_scrambled_password(scrambled_password, password,
    -                                   strlen(password));
    -# elif defined(HAVE_MAKE_SCRAMBLED_PASSWORD)
    -        make_scrambled_password(scrambled_password, password);
    -# else
    -        {
    -            SHA1_CTX       ctx;
    -            unsigned char  h0[20], h1[20];
    -            char          *p;
    -
    -            SHA1Init(&ctx);
    -            SHA1Update(&ctx, password, strlen(password));
    -            SHA1Final(h0, &ctx);
    -            SHA1Init(&ctx);
    -            SHA1Update(&ctx, h0, sizeof h0);
    -            pure_memzero(h0, sizeof h0);
    -            SHA1Final(h1, &ctx);
    +        SHA1_CTX        ctx;
    +        unsigned char  h0[20], h1[20];
    +        char          *p;
    +        SHA1Init(&ctx);
    +        SHA1Update(&ctx, password, strlen(password));
    +        SHA1Final(h0, &ctx);
    +        SHA1Init(&ctx);
    +        SHA1Update(&ctx, h0, sizeof h0);
    +        pure_memzero(h0, sizeof h0);
    +        SHA1Final(h1, &ctx);
                 *scrambled_password = '*';
    -            hexify(scrambled_password + 1U, h1,
    -                   (sizeof scrambled_password) - 1U, sizeof h1);
    -            *(p = scrambled_password) = '*';
    -            while (*p++ != 0) {
    -                *p = (char) toupper((unsigned char) *p);
    -            }
    +        hexify(scrambled_password + 1U, h1,
    +               (sizeof scrambled_password) - 1U, sizeof h1);
    +        *(p = scrambled_password) = '*';
    +        while (*p++ != 0) {
    +            *p = (char) toupper((unsigned char) *p);
             }
    -# endif
    +
             if (pure_strcmp(scrambled_password, spwd) == 0) {
                 goto auth_ok;
             }
    
    • 0

相关问题

  • MariaDB 经常死去

  • 在 CentOS 7 上为 systemd 启动的进程增加 nproc

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve