我在aws上使用ec2并试图部署我的rails应用程序。我成功git克隆我的应用程序到我的ec2用户然后尝试捆绑安装但由于gem pg没有工作。我不知道为什么我不能进行捆绑安装。我尝试了几种堆栈溢出的解决方案,但任何事情都不起作用。需要你的帮助。
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Rubygems 2.0.14.1 is not threadsafe, so your gems will be installed one at a time. Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation.
Using rake 11.1.1
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.8.4
Using thread_safe 0.3.5
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile2 2.0.0
Using rack 1.6.4
Using mime-types 2.99.1
Using arel 6.0.3
Using execjs 2.6.0
Using debug_inspector 0.0.2
Using sass 3.4.21
Using byebug 8.2.2
Using net-ssh 3.1.0
Using coffee-script-source 1.10.0
Using thor 0.19.1
Using concurrent-ruby 1.0.1
Using multi_json 1.11.2
Installing pg 0.18.4 with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby2.0 extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib64
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby2.0
--with-pg
--without-pg
--enable-windows-cross
--disable-windows-cross
--with-pg-config
--without-pg-config
--with-pg_config
--without-pg_config
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/
Gem files will remain installed in /home/ec2-user/.gem/ruby/2.0/gems/pg-0.18.4 for inspection.
Results logged to /home/ec2-user/.gem/ruby/2.0/gems/pg-0.18.4/ext/gem_make.out
Using bundler 1.11.2
Using tilt 2.0.2
Using spring 1.6.4
Installing sqlite3 1.3.11 with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby2.0 extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib64
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby2.0
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/
Gem files will remain installed in /home/ec2-user/.gem/ruby/2.0/gems/sqlite3-1.3.11 for inspection.
Results logged to /home/ec2-user/.gem/ruby/2.0/gems/sqlite3-1.3.11/ext/sqlite3/gem_make.out
Using rdoc 4.2.2
Using tzinfo 1.2.2
Using nokogiri 1.6.7.2
Using rack-test 0.6.3
Using mail 2.6.3
Using autoprefixer-rails 6.3.3.1
Using uglifier 2.7.2
Using binding_of_caller 0.7.2
Using net-scp 1.2.1
Using coffee-script 2.4.1
Using sprockets 3.5.2
An error occurred while installing pg (0.18.4), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling.
我的宝石文件在
之下source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails_12factor', group: :production
gem 'bootstrap-sass'
gem 'rails', '4.2.5.1'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'capistrano', '~> 3.4.0'
group :development, :test do
gem 'sqlite3'
end
group :development, :test do
gem 'pg'
end
group :development, :test do
gem 'byebug'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
end
答案 0 :(得分:1)
错误在堆栈跟踪中可见:
Can't find the 'libpq-fe.h header
您没有构建PG适配器所需的libpq标头。确保安装了PostgreSQL和dev依赖项(libpq-dev软件包)。
此外,您需要清理Gemfile
。您有3个等效的group :development, :test do
声明。
另外,您可以在相同的环境中导入Sqlite3和PG宝石。对您的数据库做出决定,并只使用其中一个。
最后但并非最不重要的是,您没有为生产声明数据库,因此您的生产部署将失败。
答案 1 :(得分:0)
在Linux上,确保安装这两个
sudo apt-get install postgresql
sudo apt-get install pgadmin3
bundle install
答案 2 :(得分:0)
混合答案,我们有一些对我有用的东西,只需运行:
sudo apt-get install postgresql libpq-dev
这将安装postgresql
(如果尚未安装)并安装丢失的库(libpq-dev
)。您可以在错误消息中看到:
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header