无法在Alpine上安装uwsgi

我试图安装uwsgi使用pip install uwsgi在我的Alpine docker镜像中,但是不幸的是,它仍然没有真正的错误信息给我:

 Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-mEZegv/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-c7XA_e-record/install-record.txt --single-version-externally-managed --compile: running install using profile: buildconf/default.ini detected include path: ['/usr/include/fortify', '/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include'] Patching "bin_name" to properly install_scripts dir detected CPU cores: 1 configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_ZLIB -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY -DUWSGI_VERSION="\"2.0.12\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="12" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"core/utils.c: In function 'uwsgi_as_root': core/utils.c:344:7: error: implicit declaration of function 'unshare' [-Werror=implicit-function-declaration] if (unshare(uwsgi.unshare)) { ^ core/utils.c:564:5: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration] sigfillset(&smask); ^ core/utils.c:565:5: error: implicit declaration of function 'sigprocmask' [-Werror=implicit-function-declaration] sigprocmask(SIG_BLOCK, &smask, NULL); ^ core/utils.c:565:17: error: 'SIG_BLOCK' undeclared (first use in this function) sigprocmask(SIG_BLOCK, &smask, NULL); ^ core/utils.c:565:17: note: each undeclared identifier is reported only once for each function it appears in core/utils.c:586:7: error: implicit declaration of function 'chroot' [-Werror=implicit-function-declaration] if (chroot(uwsgi.chroot)) { ^ core/utils.c:791:5: error: unknown type name 'ushort' ushort *array; ^ core/utils.c:833:8: error: implicit declaration of function 'setgroups' [-Werror=implicit-function-declaration] if (setgroups(0, NULL)) { ^ core/utils.c:848:8: error: implicit declaration of function 'initgroups' [-Werror=implicit-function-declaration] if (initgroups(uidname, uwsgi.gid)) { ^ core/utils.c: In function 'uwsgi_close_request': core/utils.c:1145:18: error: 'WAIT_ANY' undeclared (first use in this function) while (waitpid(WAIT_ANY, &waitpid_status, WNOHANG) > 0); ^ core/utils.c: In function 'uwsgi_resolve_ip': core/utils.c:1802:7: error: implicit declaration of function 'gethostbyname' [-Werror=implicit-function-declaration] he = gethostbyname(domain); ^ core/utils.c:1802:5: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] he = gethostbyname(domain); ^ core/utils.c: In function 'uwsgi_unix_signal': core/utils.c:1936:19: error: storage size of 'sa' isn't known struct sigaction sa; ^ core/utils.c:1938:24: error: invalid application of 'sizeof' to incomplete type 'struct sigaction' memset(&sa, 0, sizeof(struct sigaction)); ^ core/utils.c:1942:2: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration] sigemptyset(&sa.sa_mask); ^ core/utils.c:1944:6: error: implicit declaration of function 'sigaction' [-Werror=implicit-function-declaration] if (sigaction(signum, &sa, NULL) < 0) { ^ core/utils.c:1936:19: error: unused variable 'sa' [-Werror=unused-variable] struct sigaction sa; ^ In file included from core/utils.c:1:0: core/utils.c: In function 'uwsgi_list_has_num': ./uwsgi.h:140:47: error: implicit declaration of function 'strtok_r' [-Werror=implicit-function-declaration] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list2, ",", p, ctx) { ^ ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list2, ",", p, ctx) { ^ ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list2, ",", p, ctx) { ^ core/utils.c: In function 'uwsgi_list_has_str': ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list2, " ", p, ctx) { ^ ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list2, " ", p, ctx) { ^ core/utils.c:1969:8: error: implicit declaration of function 'strcasecmp' [-Werror=implicit-function-declaration] if (!strcasecmp(p, str)) { ^ core/utils.c: In function 'uwsgi_sig_pause': core/utils.c:2361:2: error: implicit declaration of function 'sigsuspend' [-Werror=implicit-function-declaration] sigsuspend(&mask); ^ core/utils.c: In function 'uwsgi_run_command_putenv_and_wait': core/utils.c:2453:7: error: implicit declaration of function 'putenv' [-Werror=implicit-function-declaration] if (putenv(envs[i])) { ^ In file included from core/utils.c:1:0: core/utils.c: In function 'uwsgi_build_unshare': ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list, ",", p, ctx) { ^ ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w)) ^ core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token' uwsgi_foreach_token(list, ",", p, ctx) { ^ core/utils.c: In function 'uwsgi_tmpfd': core/utils.c:3533:7: error: implicit declaration of function 'mkstemp' [-Werror=implicit-function-declaration] fd = mkstemp(template); ^ core/utils.c: In function 'uwsgi_expand_path': core/utils.c:3615:7: error: implicit declaration of function 'realpath' [-Werror=implicit-function-declaration] if (!realpath(src, dst)) { ^ core/utils.c: In function 'uwsgi_set_cpu_affinity': core/utils.c:3641:3: error: unknown type name 'cpu_set_t' cpu_set_t cpuset; ^ core/utils.c:3646:3: error: implicit declaration of function 'CPU_ZERO' [-Werror=implicit-function-declaration] CPU_ZERO(&cpuset); ^ core/utils.c:3651:4: error: implicit declaration of function 'CPU_SET' [-Werror=implicit-function-declaration] CPU_SET(base_cpu, &cpuset); ^ core/utils.c:3662:7: error: implicit declaration of function 'sched_setaffinity' [-Werror=implicit-function-declaration] if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) { ^ core/utils.c:3662:35: error: 'cpu_set_t' undeclared (first use in this function) if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) { ^ core/utils.c: In function 'uwsgi_thread_run': core/utils.c:3782:2: error: implicit declaration of function 'pthread_sigmask' [-Werror=implicit-function-declaration] pthread_sigmask(SIG_BLOCK, &smask, NULL); ^ core/utils.c:3782:18: error: 'SIG_BLOCK' undeclared (first use in this function) pthread_sigmask(SIG_BLOCK, &smask, NULL); ^ core/utils.c: In function 'uwsgi_envdir': core/utils.c:4349:8: error: implicit declaration of function 'unsetenv' [-Werror=implicit-function-declaration] if (unsetenv(de->d_name)) { ^ core/utils.c:4380:7: error: implicit declaration of function 'setenv' [-Werror=implicit-function-declaration] if (setenv(de->d_name, content, 1)) { ^ cc1: all warnings being treated as errors *** uWSGI compiling server core *** 

任何想法可能会导致这一点? 我预先安装了以下依赖项:

 RUN apk --update add \ bash \ python \ python-dev \ py-pip \ gcc \ zlib-dev \ git \ linux-headers \ build-base \ musl \ musl-dev \ memcached \ libmemcached-dev 

不幸的是,uwsgi的最新版本不支持musl,一个glibc替代scheme,高山和一些其他发行版使用。 当包含ugreen插件时,Uwsgi将不会与musl一起构build(请参阅https://github.com/unbit/uwsgi/pull/522 ),因此您仍然无法pip install uwsgi 。 但是,如果使用环境variablesUWSGI_PROFILE=core构buildUWSGI_PROFILE=core则构build应该成功; 但如果由于这里解决的问题在运行时会失败( https://github.com/unbit/uwsgi/pull/1210 )。 这可能是严峻的消息 – 我知道这是对我来说 – 但至less它看起来像uwsgi团队正在花时间来解决其在musl上运行的问题。 希望它能在下一个版本中发挥作用。

你有没有尝试过

 http://github.com/unbit/uwsgi/archive/uwsgi-2.0.zip 

在你的requirements.txt中?

你需要安装pcre-dev软件包

我在GitHub线程上find了这个。 修改了一下,在Python 3.5上完全适合我

 apk add python3-dev build-base linux-headers pcre-dev pip install uwsgi