Curb v 0.8.5 不会在 Ubuntu 14.04 上安装

Curb v 0.8.5 won't install on Ubuntu 14.04

我正在尝试安装 curb v 0.8.5 gem 但没有成功。

下面是堆栈跟踪:

/usr/local/bin/ruby -r ./siteconf20150211-19572-1mel9g2.rb extconf.rb
checking for curl-config... yes
checking for curlinfo_appconnect_time... yes
checking for curlinfo_redirect_time... yes
checking for curlinfo_response_code... yes
checking for curlinfo_filetime... yes
checking for curlinfo_redirect_count... yes
checking for curlinfo_os_errno... yes
checking for curlinfo_num_connects... yes
checking for curlinfo_ftp_entry_path... yes
checking for curl_version_ssl... yes
checking for curl_version_libz... yes
checking for curl_version_ntlm... yes
checking for curl_version_gssnegotiate... yes
checking for curl_version_debug... yes
checking for curl_version_asynchdns... yes
checking for curl_version_spnego... yes
checking for curl_version_largefile... yes
checking for curl_version_idn... yes
checking for curl_version_sspi... yes
checking for curl_version_conv... yes
checking for curlproxy_http... yes
checking for curlproxy_socks4... yes
checking for curlproxy_socks5... yes
checking for curlauth_basic... yes
checking for curlauth_digest... yes
checking for curlauth_gssnegotiate... yes
checking for curlauth_ntlm... yes
checking for curlauth_anysafe... yes
checking for curlauth_any... yes
checking for curle_tftp_notfound... yes
checking for curle_tftp_perm... yes
checking for curle_tftp_diskfull... yes
checking for curle_tftp_illegal... yes
checking for curle_tftp_unknownid... yes
checking for curle_tftp_exists... yes
checking for curle_tftp_nosuchuser... yes
checking for curle_send_fail_rewind... yes
checking for curle_ssl_engine_initfailed... yes
checking for curle_login_denied... yes
checking for curlmopt_maxconnects... yes
checking for curlopt_seekfunction... yes
checking for curlopt_seekdata... yes
checking for curlopt_sockoptfunction... yes
checking for curlopt_sockoptdata... yes
checking for curlopt_opensocketfunction... yes
checking for curlopt_opensocketdata... yes
checking for curle_conv_failed... yes
checking for curle_conv_reqd... yes
checking for curle_ssl_cacert_badfile... yes
checking for curle_remote_file_not_found... yes
checking for curle_ssh... yes
checking for curle_ssl_shutdown_failed... yes
checking for curle_again... yes
checking for curle_ssl_crl_badfile... yes
checking for curle_ssl_issuer_error... yes
checking for curlinfo_redirect_url... yes
checking for curlopt_username... yes
checking for curlopt_password... yes
checking for curlinfo_primary_ip... yes
checking for curlauth_digest_ie... yes
checking for curlftpmethod_multicwd... yes
checking for curlftpmethod_nocwd... yes
checking for curlftpmethod_singlecwd... yes
checking for curlm_bad_socket... yes
checking for curlm_unknown_option... yes
checking for curl_multi_timeout()... yes
checking for curl_multi_fdset()... yes
checking for curl_multi_perform()... yes
checking for curlopt_interleavefunction... yes
checking for curlopt_interleavedata... yes
checking for curlopt_chunk_bgn_function... yes
checking for curlopt_chunk_end_function... yes
checking for curlopt_chunk_data... yes
checking for curlopt_fnmatch_function... yes
checking for curlopt_fnmatch_data... yes
checking for curlopt_errorbuffer... yes
checking for curlopt_stderr... yes
checking for curlopt_failonerror... yes
checking for curlopt_url... yes
checking for curlopt_protocols... yes
checking for curlopt_redir_protocols... yes
checking for curlopt_proxy... yes
checking for curlopt_proxyport... yes
checking for curlopt_proxytype... yes
checking for curlopt_noproxy... yes
checking for curlopt_httpproxytunnel... yes
checking for curlopt_socks5_gssapi_service... yes
checking for curlopt_socks5_gssapi_nec... yes
checking for curlopt_interface... yes
checking for curlopt_localport... yes
checking for curlopt_dns_cache_timeout... yes
checking for curlopt_dns_use_global_cache... yes
checking for curlopt_buffersize... yes
checking for curlopt_port... yes
checking for curlopt_tcp_nodelay... yes
checking for curlopt_address_scope... yes
checking for curlopt_netrc... yes
checking for curl_netrc_optional... yes
checking for curl_netrc_ignored... yes
checking for curl_netrc_required... yes
checking for curlopt_netrc_file... yes
checking for curlopt_userpwd... yes
checking for curlopt_proxyuserpwd... yes
checking for curlopt_username... yes
checking for curlopt_password... yes
checking for curlopt_password... yes
checking for curlopt_password... yes
checking for curlopt_httpauth... yes
checking for curlauth_digest_ie... yes
checking for curlauth_only... yes
checking for curlopt_tlsauth_type... yes
checking for curlopt_tlsauth_srp... no
checking for curlopt_tlsauth_username... yes
checking for curlopt_tlsauth_password... yes
checking for curlopt_proxyauth... yes
checking for curlopt_autoreferer... yes
checking for curlopt_encoding... yes
checking for curlopt_followlocation... yes
checking for curlopt_unrestricted_auth... yes
checking for curlopt_maxredirs... yes
checking for curlopt_postredir... yes
checking for curlopt_put... yes
checking for curlopt_post... yes
checking for curlopt_postfields... yes
checking for curlopt_postfieldsize... yes
checking for curlopt_postfieldsize_large... yes
checking for curlopt_copypostfields... yes
checking for curlopt_httppost... yes
checking for curlopt_referer... yes
checking for curlopt_useragent... yes
checking for curlopt_httpheader... yes
checking for curlopt_http200aliases... yes
checking for curlopt_cookie... yes
checking for curlopt_cookiefile... yes
checking for curlopt_cookiejar... yes
checking for curlopt_cookiesession... yes
checking for curlopt_cookielist... yes
checking for curlopt_httpget... yes
checking for curlopt_http_version... yes
checking for curl_http_version_none... yes
checking for curl_http_version_1_0... yes
checking for curl_http_version_1_1... yes
checking for curlopt_ignore_content_length... yes
checking for curlopt_http_content_decoding... yes
checking for curlopt_http_transfer_decoding... yes
checking for curlopt_mail_from... yes
checking for curlopt_mail_rcpt... yes
checking for curlopt_tftp_blksize... yes
checking for curlopt_ftpport... yes
checking for curlopt_quote... yes
checking for curlopt_postquote... yes
checking for curlopt_prequote... yes
checking for curlopt_dirlistonly... yes
checking for curlopt_append... yes
checking for curlopt_ftp_use_eprt... yes
checking for curlopt_ftp_use_epsv... yes
checking for curlopt_ftp_use_pret... yes
checking for curlopt_ftp_create_missing_dirs... yes
checking for curlopt_ftp_response_timeout... yes
checking for curlopt_ftp_alternative_to_user... yes
checking for curlopt_ftp_skip_pasv_ip... yes
checking for curlopt_ftpsslauth... yes
checking for curlftpauth_default... yes
checking for curlftpauth_ssl... yes
checking for curlftpauth_tls... yes
checking for curlopt_ftp_ssl_ccc... yes
checking for curlftpssl_ccc_none... yes
checking for curlftpssl_ccc_passive... yes
checking for curlftpssl_ccc_active... yes
checking for curlopt_ftp_account... yes
checking for curlopt_ftp_filemethod... yes
checking for curlftpmethod_multicwd... yes
checking for curlftpmethod_nocwd... yes
checking for curlftpmethod_singlecwd... yes
checking for curlopt_rtsp_request... yes
checking for curl_rtspreq_options... yes
checking for curl_rtspreq_describe... yes
checking for curl_rtspreq_announce... yes
checking for curl_rtspreq_setup... yes
checking for curl_rtspreq_play... yes
checking for curl_rtspreq_pause... yes
checking for curl_rtspreq_teardown... yes
checking for curl_rtspreq_get_parameter... yes
checking for curl_rtspreq_set_parameter... yes
checking for curl_rtspreq_record... yes
checking for curl_rtspreq_receive... yes
checking for curlopt_rtsp_session_id... yes
checking for curlopt_rtsp_stream_uri... yes
checking for curlopt_rtsp_transport... yes
checking for curlopt_rtsp_header... no
checking for curlopt_rtsp_client_cseq... yes
checking for curlopt_rtsp_server_cseq... yes
checking for curlopt_transfertext... yes
checking for curlopt_proxy_transfer_mode... yes
checking for curlopt_crlf... yes
checking for curlopt_range... yes
checking for curlopt_resume_from... yes
checking for curlopt_resume_from_large... yes
checking for curlopt_customrequest... yes
checking for curlopt_filetime... yes
checking for curlopt_nobody... yes
checking for curlopt_infilesize... yes
checking for curlopt_infilesize_large... yes
checking for curlopt_upload... yes
checking for curlopt_maxfilesize... yes
checking for curlopt_maxfilesize_large... yes
checking for curlopt_timecondition... yes
checking for curlopt_timevalue... yes
checking for curlopt_timeout... yes
checking for curlopt_timeout_ms... yes
checking for curlopt_low_speed_limit... yes
checking for curlopt_low_speed_time... yes
checking for curlopt_max_send_speed_large... yes
checking for curlopt_max_recv_speed_large... yes
checking for curlopt_maxconnects... yes
checking for curlopt_closepolicy... yes
checking for curlopt_fresh_connect... yes
checking for curlopt_forbid_reuse... yes
checking for curlopt_connecttimeout... yes
checking for curlopt_connecttimeout_ms... yes
checking for curlopt_ipresolve... yes
checking for curl_ipresolve_whatever... yes
checking for curl_ipresolve_v4... yes
checking for curl_ipresolve_v6... yes
checking for curlopt_connect_only... yes
checking for curlopt_use_ssl... yes
checking for curlusessl_none... yes
checking for curlusessl_try... yes
checking for curlusessl_control... yes
checking for curlusessl_all... yes
checking for curlopt_resolve... yes
checking for curlopt_sslcert... yes
checking for curlopt_sslcerttype... yes
checking for curlopt_sslkey... yes
checking for curlopt_sslkeytype... yes
checking for curlopt_keypasswd... yes
checking for curlopt_sslengine... yes
checking for curlopt_sslengine_default... yes
checking for curlopt_sslversion... yes
checking for curl_sslversion_default... yes
checking for CURL_SSLVERSION_TLSv1... yes
checking for CURL_SSLVERSION_SSLv2... yes
checking for CURL_SSLVERSION_SSLv3... yes
checking for curlopt_ssl_verifypeer... yes
checking for curlopt_cainfo... yes
checking for curlopt_issuercert... yes
checking for curlopt_capath... yes
checking for curlopt_crlfile... yes
checking for curlopt_ssl_verifyhost... yes
checking for curlopt_certinfo... yes
checking for curlopt_random_file... yes
checking for curlopt_egdsocket... yes
checking for curlopt_ssl_cipher_list... yes
checking for curlopt_ssl_sessionid_cache... yes
checking for curlopt_krblevel... yes
checking for curlopt_ssh_auth_types... yes
checking for curlopt_ssh_host_public_key_md5... yes
checking for curlopt_ssh_public_keyfile... yes
checking for curlopt_ssh_private_keyfile... yes
checking for curlopt_ssh_knownhosts... yes
checking for curlopt_ssh_keyfunction... yes
checking for curlkhstat_fine_add_to_file... yes
checking for curlkhstat_fine... yes
checking for curlkhstat_reject... yes
checking for curlkhstat_defer... yes
checking for curlopt_ssh_keydata... yes
checking for curlopt_private... yes
checking for curlopt_share... yes
checking for curlopt_new_file_perms... yes
checking for curlopt_new_directory_perms... yes
checking for curlopt_telnetoptions... yes
checking for curle_not_built_in... yes
checking for curle_obsolete... yes
checking for curlopt_gssapi_delegation... yes
checking for curlgssapi_delegation_policy_flag... yes
checking for curlgssapi_delegation_flag... yes
checking for Ruby 1.9 Hash... no
checking for Ruby 1.9 st.h... yes
checking for curl_easy_escape... yes
checking for rb_thread_blocking_region()... no
creating curb_config.h
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling curb_upload.c
compiling curb.c
compiling curb_easy.c
curb_easy.c: In function ‘ruby_curl_easy_resolve_mode’:
curb_easy.c:1642:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   unsigned short rm = rbce->resolve_mode;
   ^
curb_easy.c: In function ‘ruby_curl_easy_resolve_mode_set’:
curb_easy.c:1673:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     ID resolve_mode_id = rb_to_id(resolve_mode);
     ^
curb_easy.c: In function ‘cb_each_http_header’:
curb_easy.c:1855:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   VALUE header_str = Qnil;
   ^
curb_easy.c: In function ‘cb_each_ftp_command’:
curb_easy.c:1887:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   VALUE ftp_command_string = rb_obj_as_string(ftp_command);
   ^
compiling curb_postfield.c
compiling curb_multi.c
curb_multi.c: In function ‘curl_multi_free’:
curb_multi.c:67:3: warning: implicit declaration of function ‘RHASH’ [-Wimplicit-function-declaration]
   if (rbcm && !rbcm->requests == Qnil && rb_type(rbcm->requests) == T_HASH && RHASH_LEN(rbcm->requests) > 0) {
   ^
In file included from curb_easy.h:10:0,
                 from curb_multi.c:14:
curb.h:44:38: error: invalid type argument of ‘->’ (have ‘int’)
   #define RHASH_LEN(hash) RHASH(hash)->tbl->num_entries
                                      ^
curb_multi.c:67:79: note: in expansion of macro ‘RHASH_LEN’
   if (rbcm && !rbcm->requests == Qnil && rb_type(rbcm->requests) == T_HASH && RHASH_LEN(rbcm->requests) > 0) {
                                                                               ^
curb_multi.c: In function ‘ruby_curl_multi_remove’:
curb_multi.c:265:19: warning: variable ‘rbce’ set but not used [-Wunused-but-set-variable]
   ruby_curl_easy *rbce;
                   ^
curb_multi.c: In function ‘ruby_curl_multi_perform’:
curb_multi.c:581:7: warning: implicit declaration of function ‘rb_thread_select’ [-Wimplicit-function-declaration]
       rc = rb_thread_select(maxfd+1, &fdread, &fdwrite, &fdexcep, &tv);
       ^
make: *** [curb_multi.o] Error 1

make failed, exit code 2

我已经安装了所有必要的软件包:

sudo apt-get install libcurl4-openssl-dev

sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev

sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties

但仍然出现此错误。

问题可能出在检查 Ruby 1.9 Hash... no(在输出中查找此字符串。)它导致函数“RHASH”的隐式声明并且一切都失败了。

我个人认为在 ruby​​2 上安装这个 gem 没有问题。

我建议您重新安装 ruby​​2,这可能会有帮助。

使用 ruby 2.2.3 我能够通过升级 curb

来解决问题
gem install curb -v '0.8.8'