mysql2 не удалось установить пакет - PullRequest
0 голосов
/ 23 июня 2018

Я уже несколько часов зацикливаюсь на этой проблеме, и ничего из того, что я нашел ранее об этой проблеме, похоже, не работает. Ниже приведен вывод mysql2, когда я запускаю bundle install:

Fetching mysql2 0.4.5
Installing mysql2 0.4.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/MYUSERNAME/Desktop/MY_PROJECT/vendor/ruby/2.4.0/gems/mysql2-0.4.5/ext/mysql2
/Users/MYUSERNAME/.rbenv/versions/2.4.2/bin/ruby -r ./siteconf20180623-40170-ndn6t0.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/8.0.11/bin/mysql_config
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for rb_big_cmp()... yes
-----
Using mysql_config at /usr/local/Cellar/mysql/8.0.11/bin/mysql_config
-----
checking for mysql.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Setting rpath to /usr/local/Cellar/mysql/8.0.11/lib
-----
creating Makefile

current directory: /Users/MYUSERNAME/Desktop/MY_PROJECT/vendor/ruby/2.4.0/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/MYUSERNAME/Desktop/MY_PROJECT/vendor/ruby/2.4.0/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR="
compiling client.c
In file included from client.c:1:
In file included from ./mysql2_ext.h:41:
./result.h:24:3: error: unknown type name 'my_bool'
my_bool *is_null;
^
./result.h:25:3: error: unknown type name 'my_bool'
my_bool *error;
^
client.c:507:3: error: use of undeclared identifier 'my_bool'
my_bool res = mysql_read_query_result(client);
^
client.c:509:19: error: use of undeclared identifier 'res'
return (void *)(res == 0 ? Qtrue : Qfalse);
                ^
client.c:828:3: error: use of undeclared identifier 'my_bool'
my_bool boolval;
^
client.c:859:7: error: use of undeclared identifier 'boolval'
    boolval = (value == Qfalse ? 0 : 1);
    ^
client.c:860:17: error: use of undeclared identifier 'boolval'
    retval = &boolval;
                ^
client.c:863:10: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
    case MYSQL_SECURE_AUTH:
        ^~~~~~~~~~~~~~~~~
        MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.11/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
MYSQL_DEFAULT_AUTH,
^
client.c:864:7: error: use of undeclared identifier 'boolval'
    boolval = (value == Qfalse ? 0 : 1);
    ^
client.c:865:17: error: use of undeclared identifier 'boolval'
    retval = &boolval;
                ^
client.c:896:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                    ^
client.c:1285:38: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
return _mysql_client_options(self, MYSQL_SECURE_AUTH, value);
                                    ^~~~~~~~~~~~~~~~~
                                    MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.11/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
MYSQL_DEFAULT_AUTH,
^
12 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/MYUSERNAME/Desktop/MY_PROJECT/vendor/ruby/2.4.0/gems/mysql2-0.4.5 for inspection.
Results logged to /Users/MYUSERNAME/Desktop/MY_PROJECT/vendor/ruby/2.4.0/extensions/x86_64-darwin-17/2.4.0-static/mysql2-0.4.5/gem_make.out

An error occurred while installing mysql2 (0.4.5), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.5'` succeeds before bundling.

In Gemfile:
mysql2

Это соответствующая часть моего Gemfile:

gem 'rails', '5.1.4'
gem 'mysql2', '0.4.5'

Я использую MacOS High Sierra и установил MySQL через Homebrew. Я попытался запустить как bundle install --system, добавить /tmp/mysql.sock в мой database.yml (он уже был там), а также переустановить практически все соответствующие инструменты dev в моей системе, и все безуспешно.

Стоит также отметить, что я делал это в прошлом без проблем ... Я не совсем уверен, что изменилось, но, похоже, это проблема только в моей системе.

Спасибо за любую помощь, вы можете предоставить

ОБНОВЛЕНИЕ: У меня есть возможность установить должным образом mysql2 v0.4.5 при запуске gem install mysql2 -v '0.4.5' -- --srcdir=/usr/local/Cellar/mysql/8.0.11/include/

1 Ответ

0 голосов
/ 12 июля 2018

Таким образом, проблема закончилась тем, что homebrew недавно сделал mysql v8.xx стандартной установкой, и я запустил обновления homebrew, которые отняли у меня стандарт, поддерживаемый нашей кодовой базой ... Отмеченный на будущее.Как только я привел свою системную версию mysql вниз, чтобы точно отразить то, что искал mysql2, это сработало.

...