2

Rails サーバーを起動できません。エラーは次のとおりです。

$ rails server
/usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2a.rb:8:in `require': libmysqlclient.so.18: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2/mysql2.so (LoadError)
    from /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2.rb:8:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/marslo/Study/Codes/Ruby/RailsBegin/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

しかし!mysql2.so は fuond になることができます !!! :

 $ ls -al /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2/mysql2.so
-rwxr-xr-x 1 root root 131K Oct  7 00:31 /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2/mysql2.so

ソースコードからmysql をインストールしました。そして、それは次の場所にインストールされました:

$ whereis mysql
mysql: /usr/local/mysql

を使用して gem でmysql2をインストールしようとしましたが--with-mysql-config、すべて正常に動作します。

$ sudo gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions.  This could take a while...
Successfully installed mysql2-0.3.13
1 gem installed
Installing ri documentation for mysql2-0.3.13...
Installing RDoc documentation for mysql2-0.3.13...

ここに私のdatabase.yml :

development:
  adapter: mysql2
  encoding: utf8
  database: RailsBegin_development
  pool: 5
  username: root
  password: passwd
  host: localhost
  socket: /tmp/mysql.sock

ここに私のデータベース:

mysql> SHOW DATABASES;
+------------------------+
| Database               |
+------------------------+
| information_schema     |
| RailsBegin_development |
| mysql                  |
| performance_schema     |
| test                   |
+------------------------+
5 rows in set (0.00 sec)

ここに私のバンドルのインストール

$ bundle install
Using rake (10.1.0) 
Using i18n (0.6.5) 
Using minitest (4.7.5) 
Using multi_json (1.8.1) 
Using atomic (1.1.14) 
Using thread_safe (0.1.3) 
Using tzinfo (0.3.37) 
Using activesupport (4.0.0) 
Using builder (3.1.4) 
Using erubis (2.7.0) 
Using rack (1.5.2) 
Using rack-test (0.6.2) 
Using actionpack (4.0.0) 
Using mime-types (1.25) 
Using polyglot (0.3.3) 
Using treetop (1.4.15) 
Using mail (2.5.4) 
Using actionmailer (4.0.0) 
Using activemodel (4.0.0) 
Using activerecord-deprecated_finders (1.0.3) 
Using arel (4.0.0) 
Using activerecord (4.0.0) 
Using coffee-script-source (1.6.3) 
Using execjs (2.0.2) 
Using coffee-script (2.2.0) 
Using thor (0.18.1) 
Using railties (4.0.0) 
Using coffee-rails (4.0.0) 
Using hike (1.2.3) 
Using jbuilder (1.5.1) 
Using jquery-rails (3.0.4) 
Using json (1.8.0) 
Using mysql2 (0.3.13) 
Using bundler (1.3.5) 
Using tilt (1.4.1) 
Using sprockets (2.10.0) 
Using sprockets-rails (2.0.0) 
Using rails (4.0.0) 
Using rdoc (3.12.2) 
Using sass (3.2.12) 
Using sass-rails (4.0.0) 
Using sdoc (0.3.20) 
Using turbolinks (1.3.0) 
Using uglifier (2.2.1) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

何が悪いのかわからない。誰もが私を助けることができますか?前もって感謝します!!

============

更新 1

mysql2 をアンインストールし、0.3.11として再インストールしました:

$ sudo gem install mysql2 -v 0.3.11 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-mysql-lib=/usr/local/mysql/lib --with-mysql-bin=/usr/local/mysql/bin
Fetching: mysql2-0.3.11.gem (100%)
Building native extensions.  This could take a while...
Successfully installed mysql2-0.3.11
1 gem installed
Installing ri documentation for mysql2-0.3.11...
Installing RDoc documentation for mysql2-0.3.11...

Gemfile を更新します。

gem 'mysql2', '~> 0.3.11'

バンドルを再度インストールしますが、 0.3.13はインストールされたままです。:

$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Using rake (10.1.0) 
Using i18n (0.6.5) 
Using minitest (4.7.5) 
Using multi_json (1.8.1) 
Using atomic (1.1.14) 
Using thread_safe (0.1.3) 
Using tzinfo (0.3.37) 
Using activesupport (4.0.0) 
Using builder (3.1.4) 
Using erubis (2.7.0) 
Using rack (1.5.2) 
Using rack-test (0.6.2) 
Using actionpack (4.0.0) 
Using mime-types (1.25) 
Using polyglot (0.3.3) 
Using treetop (1.4.15) 
Using mail (2.5.4) 
Using actionmailer (4.0.0) 
Using activemodel (4.0.0) 
Using activerecord-deprecated_finders (1.0.3) 
Using arel (4.0.0) 
Using activerecord (4.0.0) 
Using bundler (1.3.5) 
Using coffee-script-source (1.6.3) 
Using execjs (2.0.2) 
Using coffee-script (2.2.0) 
Using thor (0.18.1) 
Using railties (4.0.0) 
Using coffee-rails (4.0.0) 
Using hike (1.2.3) 
Using jbuilder (1.5.1) 
Using jquery-rails (3.0.4) 
Using json (1.8.0) 
Installing mysql2 (0.3.13) 
Using tilt (1.4.1) 
Using sprockets (2.10.0) 
Using sprockets-rails (2.0.0) 
Using rails (4.0.0) 
Using rdoc (3.12.2) 
Using sass (3.2.12) 
Using sass-rails (4.0.0) 
Using sdoc (0.3.20) 
Using turbolinks (1.3.0) 
Using uglifier (2.2.1) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

ここに宝石リスト

$ gem list | grep mysql2
mysql2 (0.3.13, 0.3.11)

ちなみに、(ソースコードでインストールされる) mysql の所有者はmysqlです:

$ ls -al
total 160K
-rw-r--r--  1 mysql mysql  18K Sep 10 15:38 COPYING
-rw-r--r--  1 mysql mysql 2.5K Sep 10 15:38 README
-rw-r--r--  1 mysql mysql  87K Sep 10 15:38 INSTALL-BINARY
drwxr-xr-x  2 mysql mysql 4.0K Oct  1 23:51 docs/
drwxr-xr-x  3 mysql mysql 4.0K Oct  1 23:51 include/
drwxr-xr-x  3 mysql mysql 4.0K Oct  1 23:51 lib/
drwxr-xr-x 10 mysql mysql 4.0K Oct  1 23:52 mysql-test/
drwxr-xr-x 28 mysql mysql 4.0K Oct  1 23:52 share/
drwxr-xr-x  2 mysql mysql 4.0K Oct  1 23:52 scripts/
drwxr-xr-x  4 mysql mysql 4.0K Oct  1 23:52 sql-bench/
drwxr-xr-x  4 mysql mysql 4.0K Oct  1 23:52 man/
drwxr-xr-x  3 mysql mysql 4.0K Oct  1 23:52 support-files/
-rw-r--r--  1 mysql mysql  943 Oct  1 23:55 my.cnf
drwxr-xr-x  2 mysql mysql 4.0K Oct  1 23:57 bin/
drwxr-xr-x  6 mysql mysql 4.0K Oct  7 01:04 data/

ただし、 ruby​​ の所有者はrootです。

それは許可の問題のためですか?

====================

更新 2

--platform=rubyを指定してmysql2 バージョン: 0.3.11をインストールします。

$ sudo gem uninstall mysql2
$ sudo gem install mysql2 -v 0.3.11 --platform=ruby -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-mysql-lib=/usr/local/mysql/lib --with-mysql-bin=/usr/local/mysql/bin
$ rm -rf Gemfile.lock
$ bundle install

mysql 変数は次の方法で見つけることができます。

$ mysqladmin variables

そして、NodeJSをインストールします。

$ sudo apt-get install nodejs

そして、それは動作します!!

$ rails server
=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-10-07 21:08:06] INFO  WEBrick 1.3.1
[2013-10-07 21:08:06] INFO  ruby 1.9.3 (2013-06-27) [i686-linux]
[2013-10-07 21:08:06] INFO  WEBrick::HTTPServer#start: pid=3676 port=3000

mysql サーバーの起動を忘れないでください。

$ sudo service mysql start

====================

アップデート 3

CentOS の NodeJS インストール:

$ sudo yum groupinstall 'Development Tools'
$ mkdir nodjs && cd $_
$ wget http://nodejs.org/dist/node-latest.tar.gz
--2013-10-12 16:01:53--  http://nodejs.org/dist/node-latest.tar.gz
Resolving nodejs.org... 165.225.133.150
Connecting to nodejs.org|165.225.133.150|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13633041 (13M) [application/octet-stream]
Saving to: “node-latest.tar.gz”

100%[============================================================================>] 13,633,041   513K/s   in 36s

2013-10-12 16:02:31 (375 KB/s) - “node-latest.tar.gz” saved [13633041/13633041]
$ tar xzf node-latest.tar.gz
$ cd node-v0.10.20/
$ ./configure
$ make
$ sudo make install

===================

ノート

  • これは許可の問題とは関係ありません
  • Gemfileで何かが更新された場合は、bundle installを実行する前にまずGemfile.lockを削除します。
4

3 に答える 3

3

これを GemFile に追加して、Bundlingを再gem 'mysql2', '~> 0.3.11'試行してください。

于 2013-10-06T17:14:10.240 に答える