【问题标题】:Rebuild uwsgi with pcre support使用 pcre 支持重建 uwsgi
【发布时间】:2014-03-07 07:41:53
【问题描述】:

运行 uwsgi 时,我收到以下消息:

!!! no internal routing support, rebuild with pcre support !!!

我已经使用以下命令安装了 pcre(我认为):

sudo apt-get install libpcre3 libpcre3-dev

为什么我安装了pcre 包后仍然收到此消息,如果我需要重新安装uwsgi 并激活pcre,我该怎么做?

另外,内部路由重要吗?

我认为它确实如此,否则uwsgi 的制造者不会让消息出现。我正在运行Ubuntu 12.04 LTS

【问题讨论】:

    标签: pcre uwsgi


    【解决方案1】:
    pip install uwsgi -I
    

    不会重新编译 uwsgi 二进制文件,它只是重新安装 python egg。您需要使用 pcre 库重建 uwsgi 二进制文件。

    sudo apt-get install libpcre3 libpcre3-dev
    

    我认为最简单的方法就是卸载 uwsgi,然后再次运行 pip 安装程序。

    pip uninstall uwsgi
    sudo apt-get remove uwsgi
    

    然后

    pip install uwsgi
    

    您应该会看到 pip 运行 setup.py 脚本和一堆编译器消息。最后一条消息应该向您显示如下内容:

    ################# uWSGI configuration #################
    
    pcre = True
    kernel = Linux
    malloc = libc
    execinfo = False
    ifaddrs = True
    ssl = True
    zlib = True
    locking = pthread_mutex
    plugin_dir = .
    timer = timerfd
    yaml = embedded
    json = False
    filemonitor = inotify
    routing = True
    debug = False
    capabilities = False
    xml = libxml2
    event = epoll
    
    ############## end of uWSGI configuration #############
    

    现在注意 pcre = true 的方式

    【讨论】:

    • 我遵循了这个过程,但我没有从编译器得到这个输出。你知道我在哪里可以找到 ubuntu 下的配置吗?我在 /etc 下找不到它
    • 我在 CentOS 上遇到了同样的问题。我安装了gcc*pcre-devel 而不是libpcre3libpcre3-dev,UWSGI 现在可以正常工作了。
    • 您也可以使用sudo /opt/storwizerest-venv/bin/pip install --force-reinstall -U --no-deps uwsgi 使用 pip 一次性重新安装。 --force-reinstall 将使-U 重新安装相同的版本(令人困惑的是,--force-reinstall 没有-U 什么都不做),--no-deps 将阻止尝试更新所有依赖项。
    • 如果使用 alpine 发行版会怎样?
    • @EsseTi:这家伙很聪明,知道如何在他的发行版上查找和安装库:apk install pcre pcre-dev
    【解决方案2】:

    pip install uwsgi -I --no-cache-dir

    它会按照@leech 的说法重新安装 (-I),但会忽略已编译的缓存 (--no-cache-dir) 并使用新的库重新编译。

    【讨论】:

    • 这是对我有用的答案,而不是公认的答案。
    • 这对我也有用。这是我认为只需几分钟就能解决的问题之一,但最终却需要数小时。
    • 对我来说效果很好,一旦你完成了pip uninstall uwsgi,这是一个多合一的解决方案。谢谢!
    【解决方案3】:
    pip uninstall uwsgi
    
    sudo apt-get install libpcre3 libpcre3-dev
    
    pip install uwsgi
    

    我用上面的命令解决了。

    【讨论】:

      【解决方案4】:

      完成@alanjds 回答,以下是向您已安装的uWSGI 添加pcre 支持的过程。

      sudo apt-get install libpcre3 libpcre3-dev
      pip install uwsgi -I --no-cache-dir
      

      你不需要卸载uWSGI

      【讨论】:

        【解决方案5】:

        你试过了吗:

        pip install uwsgi -I 
        

        -I 标志将强制它重新安装

        【讨论】:

        • 运行命令并重新安装了 uwsgi。但是当我运行它时,我仍然收到关于使用 PCRE 支持重建的相同消息。
        • @johnmic07 libpcre3-dev 就足够了,你不太可能需要路由
        • 如果你有一个 virtualenv 设置(我希望你这样做),你的系统可能会在本地 uwsgi、全局 uwsgi(当你使用sudo pip 安装时)和系统(像apt-get) 包。我会在 virtualenv 中构建它,然后在构建输出中查找 pcre = yes 并在 virtualenv bin 目录中找到程序
        • 而且,正如 jwalker 所说,如果你不使用内部路由,你真的不需要这个。
        • 我不使用内部路由,所以我不会担心。希望那里也没有其他人需要它;)
        【解决方案6】:

        对于那些想要在 amazon linux 2 或任何红帽家族发行版上解决此问题的人

        首先,卸载uwsgi

        pip uninstall uwsgi
        

        然后,安装pcrepcre-devel

        yum install pcre pcre-devel
        

        然后,重新安装uwsgi

        pip install uwsgi
        

        【讨论】:

          【解决方案7】:

          如果您已经尝试了以上所有方法,但仍然有相同的错误,并且以下错误,请检查您的命令参数,特别是 --http-socket /path/to/your.sock。那就是 path = '/path/to' 必须存在

          thunder lock: disabled (you can enable it with --thunder-lock)
          bind(): No such file or directory [core/socket.c line 230]
          

          【讨论】:

            猜你喜欢
            • 2011-10-03
            • 2014-06-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-02
            • 2012-01-07
            • 1970-01-01
            相关资源
            最近更新 更多