Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could not open library sqlite3_native.so (sequel gem) #3115

Closed
jackdesert opened this issue Aug 24, 2014 · 13 comments
Closed

Could not open library sqlite3_native.so (sequel gem) #3115

jackdesert opened this issue Aug 24, 2014 · 13 comments

Comments

@jackdesert
Copy link
Contributor

I am porting my application from MRI to Rubinius. My application is called "daily_lager", and here are the steps to pull down the source and attempt to run it under rubinius. Unfortunately, it seems to be breaking on something to do with sqlite3_native.so.

$ git clone git@github.com:jackdesert/daily_lager
$ cd daily_lager
$ git checkout rubinius
$ rbenv local rbx-2.2.7
$ bundle
$ bundle exec rackup config-daily_lager.ru
An exception occurred running /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/bin/rackup:

    LoadError::InvalidExtensionError: Could not open library /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sqlite3-1.3.9/lib/sqlite3/sqlite3_native.so - /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sqlite3-1.3.9/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_column_database_name (Sequel::AdapterNotFound)

Backtrace:

           Rubinius::NativeMethod.load_extension at kernel/common/native_method.rb:26
               Rubinius::CodeLoader#load_library at kernel/delta/code_loader.rb:234
                    Rubinius::CodeLoader#require at kernel/common/code_loader.rb:130
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:237
                          Kernel(Object)#require at kernel/common/kernel.rb:705
                              Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sqlite3-1.3.9/lib
                                                   /sqlite3.rb:6
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:243
                          Kernel(Object)#require at kernel/common/kernel.rb:705
                              Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sequel-4.13.0/lib/sequel
                                                   /adapters/sqlite.rb:1
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:243
                           Kernel(Class)#require at kernel/common/kernel.rb:705
                  Sequel::Database.load_adapter at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sequel-4.13.0/lib/sequel
                                                   /database/connecting.rb:97
                 Sequel::Database.adapter_class at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sequel-4.13.0/lib/sequel
                                                   /database/connecting.rb:26
                       Sequel::Database.connect at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sequel-4.13.0/lib/sequel
                                                   /database/connecting.rb:46
                                 Sequel.connect at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/sequel-4.13.0/lib/sequel
                                                   /core.rb:95
                               Object#__script__ at daily_lager.rb:9
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:243
                   Kernel(Rack::Builder)#require at kernel/common/kernel.rb:705
         { } in Object(Rack::Builder)#__script__ at config-daily_lager.ru:1
        BasicObject(Rack::Builder)#instance_eval at kernel/common/eval.rb:43
                       Rack::Builder#initialize at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /builder.rb:55
                                       Class#new at kernel/alpha.rb:94
                        { } in Object#__script__ at config-daily_lager.ru+9
     Rubinius::BlockEnvironment#call_on_instance at kernel/common/block_environment.rb:53
                              Kernel(Class)#eval at kernel/common/eval.rb:176
                  Rack::Builder.new_from_string at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /builder.rb:49
                       Rack::Builder.parse_file at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /builder.rb:40
 Rack::Server#build_app_and_options_from_config at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:277
                               Rack::Server#app at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:199
                       Rack::Server#wrapped_app at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:314
                             Rack::Server#start at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:250
                             Rack::Server.start at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:141
                               Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/gems/rack-1.5.2/bin/rackup:4
                             Kernel(Object)#load at kernel/common/kernel.rb:447
                               Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.7/gems/bin/rackup:23
                Rubinius::CodeLoader#load_script at kernel/delta/code_loader.rb:66
                Rubinius::CodeLoader.load_script at kernel/delta/code_loader.rb:152
                         Rubinius::Loader#script at kernel/loader.rb:649
                           Rubinius::Loader#main at kernel/loader.rb:825

System details:
Ubuntu 12.04 inside Vagrant on OSX
rubinius installed via rbenv install

@jackdesert jackdesert changed the title Could not open library sqlite3_native.so Could not open library sqlite3_native.so (sequel gem) Aug 24, 2014
@jackdesert
Copy link
Contributor Author

@jeremyevans I don't know if this is a rubinius issue or if it might have something to do with sequel

@jc00ke
Copy link
Member

jc00ke commented Aug 24, 2014

Can you try it out with the latest version of Rubinius, preferably master. Also, what OS are you on?

@yorickpeterse
Copy link
Contributor

@jackdesert sqlite3 1.3.9 should work fine with rbx 2.2.10. Sample from my local setup:

$ gem install sqlite3
Fetching: sqlite3-1.3.9.gem (100%)
Building native extensions.  This could take a while...
Successfully installed sqlite3-1.3.9
1 gem installed
$ pry
2.1.0p0 > require 'sqlite3'
=> true
2.1.0p0 > db = SQLite3::Database.new(':memory:')
=> #<SQLite3::Database:0x20560 @authorizer=nil, @busy_handler=nil, @collations={}, @encoding=nil, @functions={}, @readonly=false, @results_as_hash=nil, @tracefunc=nil, @type_translation=nil>
2.1.0p0 > db.execute('create table users ( id int(11) primary key );')
=> []
2.1.0p0 > SQLite3::VERSION
=> "1.3.9"
2.1.0p0 > Rubinius::VERSION
=> "2.2.10.n234"

@jackdesert
Copy link
Contributor Author

@jc00ke @yorickpeterse this time I installed rbx-2.2.10 (This is on Ubuntu 12.04, installed via rbenv install rbx-2.2.10) with the same result--see below. Thus far I have been unable to successfully install rubinius from the github source.

$ bundle exec rackup config-daily_lager.ru -p 8853
An exception occurred running /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/bin/rackup:

    LoadError::InvalidExtensionError: Could not open library /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sqlite3-1.3.9/lib/sqlite3/sqlite3_native.so - /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sqlite3-1.3.9/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_column_database_name (Sequel::AdapterNotFound)

Backtrace:

           Rubinius::NativeMethod.load_extension at kernel/common/native_method.rb:26
               Rubinius::CodeLoader#load_library at kernel/delta/code_loader.rb:234
                    Rubinius::CodeLoader#require at kernel/common/code_loader.rb:130
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:237
                          Kernel(Object)#require at kernel/common/kernel.rb:705
                              Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sqlite3-1.3.9/lib
                                                   /sqlite3.rb:6
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:243
                          Kernel(Object)#require at kernel/common/kernel.rb:705
                              Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sequel-4.13.0/lib/sequel
                                                   /adapters/sqlite.rb:1
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:243
                           Kernel(Class)#require at kernel/common/kernel.rb:705
                  Sequel::Database.load_adapter at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sequel-4.13.0/lib/sequel
                                                   /database/connecting.rb:97
                 Sequel::Database.adapter_class at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sequel-4.13.0/lib/sequel
                                                   /database/connecting.rb:26
                       Sequel::Database.connect at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sequel-4.13.0/lib/sequel
                                                   /database/connecting.rb:46
                                 Sequel.connect at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sequel-4.13.0/lib/sequel
                                                   /core.rb:95
                               Object#__script__ at daily_lager.rb:9
                    Rubinius::CodeLoader.require at kernel/common/code_loader.rb:243
                   Kernel(Rack::Builder)#require at kernel/common/kernel.rb:705
         { } in Object(Rack::Builder)#__script__ at config-daily_lager.ru:1
        BasicObject(Rack::Builder)#instance_eval at kernel/common/eval.rb:43
                       Rack::Builder#initialize at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /builder.rb:55
                                       Class#new at kernel/alpha.rb:94
                        { } in Object#__script__ at config-daily_lager.ru+9
     Rubinius::BlockEnvironment#call_on_instance at kernel/common/block_environment.rb:53
                              Kernel(Class)#eval at kernel/common/eval.rb:176
                  Rack::Builder.new_from_string at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /builder.rb:49
                       Rack::Builder.parse_file at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /builder.rb:40
 Rack::Server#build_app_and_options_from_config at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:277
                               Rack::Server#app at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:199
                       Rack::Server#wrapped_app at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:314
                             Rack::Server#start at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:250
                             Rack::Server.start at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/lib/rack
                                                   /server.rb:141
                               Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/rack-1.5.2/bin/rackup:4
                             Kernel(Object)#load at kernel/common/kernel.rb:447
                               Object#__script__ at /home/vagrant/.rbenv/versions/rbx-2.2.10/gems/bin/rackup:23
                Rubinius::CodeLoader#load_script at kernel/delta/code_loader.rb:66
                Rubinius::CodeLoader.load_script at kernel/delta/code_loader.rb:152
                         Rubinius::Loader#script at kernel/loader.rb:649
                           Rubinius::Loader#main at kernel/loader.rb:825

@jackdesert
Copy link
Contributor Author

@yorickpeterse here is my version of sqlite3:

$ bundle show sqlite3
/home/vagrant/.rbenv/versions/rbx-2.2.10/gems/gems/sqlite3-1.3.9

@yorickpeterse
Copy link
Contributor

What particular problems are you having when building from source? If that were to be possible we could figure out if this is an rbenv or rbx issue.

@jeremyevans
Copy link
Member

This is unrelated to Sequel, as it is an issue with an undefined symbol when loading the sqlite3_native.so file. If I had to guess, the extension was compiled against a different library version than the one currently being used.

@robin850
Copy link
Contributor

I had the same issue on my computer, running gem pristine sqlite3 fixed the problem.

@yorickpeterse
Copy link
Contributor

@jackdesert Could you try the above command (gem pristine sqlite3) and see if that fixes things? It could be that your setup is somehow loading Gems compiled for a different Ruby version.

@jackdesert
Copy link
Contributor Author

Tried with gem pristine sqlite3 But still getting the same undefined symbol: sqlite3_column_database_name (Sequel::AdapterNotFound) error

@yorickpeterse
Copy link
Contributor

Do you have the sqlite3 developer headers installed?

@yorickpeterse
Copy link
Contributor

Any update on this, does this issue still persist using the latest version of Rubinius?

@yorickpeterse
Copy link
Contributor

Closing this due to the lack of feedback since my last comment. Feel free to re-open if the issue still persists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants