最近在做直播,想在自己电脑上搭建nginx+rtmp服务,按照网上教程一步步操作,总是报错(再次吐槽一下网上千篇一律的博客,流程完全一样,只有成功没有失败)。
下边是安装信息
$ brew install nginx-full --with-rtmp-module
==> Installing nginx-full from homebrew/nginx
==> Installing dependencies for homebrew/nginx/nginx-full:rtmp-nginx-module
==> Installing homebrew/nginx/nginx-full dependency:rtmp-nginx-module
==> Downloading https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/v1.1.7.10.tar.gz
==> Downloading from https://codeload.github.com/sergey-dryabzhinsky/nginx-rtmp-module/tar.gz/v1.1.7.10
######################################################################## 100.0%
�� /usr/local/Cellar/rtmp-nginx-module/1.1.7.10: 92 files, 1.4MB, built in 10 seconds
==> Installing homebrew/nginx/nginx-full --with-rtmp-module
==> Downloading https://nginx.org/download/nginx-1.12.0.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/nginx-full/1.12.0 --with-http_ssl_module --with-pcre --with-ipv6 --sbin-path=/usr/local/Cellar/nginx-full/1.12.0/bin/nginx --with-cc-opt=-I/usr/lo
==> make install
Last 15 lines from /Users/XXX/Library/Logs/Homebrew/nginx-full/02.make:
#define ngx_memcmp(s1, s2, n) memcmp((const char *) s1, (const char *) s2, n)
^~
/usr/local/share/rtmp-nginx-module/ngx_rtmp_core_module.c:568:30: error: passing 'ngx_sockaddr_t' to parameter of incompatible type 'const void *'
ngx_memcpy(ls->sockaddr, u.sockaddr, u.socklen);
^~~~~~~~~~
src/core/ngx_string.h:102:54: note: expanded from macro 'ngx_memcpy'
#define ngx_memcpy(dst, src, n) (void) memcpy(dst, src, n)
^~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/secure/_string.h:65:33: note: expanded from macro 'memcpy'
__builtin___memcpy_chk (dest, src, len, __darwin_obsz0 (dest))
^~~
2 errors generated.
make[1]: *** [objs/addon/rtmp-nginx-module/ngx_rtmp_core_module.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [install] Error 2
READ THIS: http://docs.brew.sh/Troubleshooting.html
These open issues may also help:
building nginx-full with healthcheck module giving error https://github.com/Homebrew/homebrew-nginx/issues/263
相信大家也都看了上边提示的
http://docs.brew.sh/Troubleshooting.html和
https://github.com/Homebrew/homebrew-nginx/issues/263
然并卵(也可能是我和英文不好没发现解决方案,哈哈哈)
下面是亲测靠谱的解决方案:
找到/usr/local/Homebrew/Library/Taps/homebrew/homebrew-nginx/Formula/rtmp-nginx-module.rb
https://github.com/Homebrew/homebrew-nginx/pull/281/commits/41cc33beed2fa5a46568efe4d50d953da4a28897
按照上边链接中的changes修改rtmp-nginx-module.rb。
重新敲命令
brew install nginx-full --with-rtmp-module
OK,安装成功。
导致问题的原因就是nginx-rtmp-module: 1.1.7.11-dev分支还没合并到master,坑不坑爹?