使用pcre和openssl从源代码安装NGINX会在make上抛出错误

时间:2016-01-13 18:28:08

标签: linux bash ubuntu nginx

我正在尝试从Ubuntu 14.04.3 LTS [通过DigitalOcean]的源代码安装NGINX,但我在 make 过程中遇到了问题。

这是我的bash脚本:

wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar xzf nginx-1.8.0.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.gz
tar xzf pcre2-10.20.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
wget https://openssl.org/source/openssl-1.0.2e.tar.gz
tar xzf openssl-1.0.2e.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/etc/nginx.conf --user=nginx --group=nginx --with-http_ssl_module --with-pcre=/root/src/pcre2-10.20 --with-zlib=/root/src/zlib-1.2.8 --with-openssl=/root/src/openssl-1.0.2e
make

我收到以下错误:

make[2]: Entering directory `/root/src/pcre2-10.20'
make[2]: *** No rule to make target `libpcre.la'.  Stop.
make[2]: Leaving directory `/root/src/pcre2-10.20'
make[1]: *** [/root/src/pcre2-10.20/.libs/libpcre.a] Error 2
make[1]: Leaving directory `/root/src/nginx-1.8.0'
make: *** [build] Error 2

我使用gcc -v检查了gcc版本,它说4.8.4。

我该如何解决这个问题?

更新

事实证明我使用的PCRE版本是错误的,所以我改为版本1,一切正常。这是更新的bash脚本:

wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar xzf nginx-1.8.0.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar xzf pcre-8.38.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
wget https://openssl.org/source/openssl-1.0.2e.tar.gz
tar xzf openssl-1.0.2e.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/etc/nginx.conf --user=nginx --group=nginx --with-http_ssl_module --with-pcre=/root/src/pcre-8.38 --with-zlib=/root/src/zlib-1.2.8 --with-openssl=/root/src/openssl-1.0.2e
make

感谢@EtanReiser的发现。

1 个答案:

答案 0 :(得分:5)

您使用的是错误的PCRE版本。

您正在尝试使用该库的PCRE2版本,但nginx需要该库的PCRE版本。

来自docs

  

--with-pcre=path - 设置PCRE库源的路径。库分发(版本4.4 - 8.32)需要从PCRE站点下载并提取。剩下的工作由nginx的./configuremake完成。 location指令和ngx_http_rewrite_module模块中的正则表达式支持需要该库。