pg gem при установке выдает ошибку в Redhat - PullRequest
0 голосов
/ 24 сентября 2019

Я выполняю gem install pg для установки pg и последующего выполнения сценариев chef на компьютере Redhat AWS.Я получаю следующую ошибку:

gem install pg Building native extensions. This could take a while...
ERROR:  Error installing pg:
       ERROR: Failed to build gem native extension.

current directory: /opt/chef/embedded/lib/ruby/gems/2.5.0/gems/pg-1.1.4/ext/opt/chef/embedded/bin/ruby -r ./siteconf20190924-20230-k0ngu5.rb extconf.rb
checking for pg_config... yes
Using config values from /bin/pg_config
checking for libpq-fe.h...
*** 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
       --with-opt-include
       --without-opt-include=${opt-dir}/include
       --with-opt-lib
       --without-opt-lib=${opt-dir}/lib
       --with-make-prog
       --without-make-prog
       --srcdir=.
       --curdir
       --ruby=/opt/chef/embedded/bin/$(RUBY_BASE_NAME)
       --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=${pg-dir}/include
       --with-pg-lib
       --without-pg-lib=${pg-dir}/lib

/opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:467:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first.
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:601:in `try_cpp'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:1162:in `block in find_header'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:959:in `block in checking_for'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:350:in `block (2 levels) in postpone'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:320:in `open'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:350:in `block in postpone'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:320:in `open'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:346:in `postpone'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:958:in `checking_for'
       from /opt/chef/embedded/lib/ruby/2.5.0/mkmf.rb:1161:in `find_header'
       from extconf.rb:54:in `<main>'

To see why this extension failed to compile, please check the mkmf.log
which can be found here:

/opt/chef/embedded/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/pg-1.1.4/mkmf.log

extconf failed, exit code 1

Я пытаюсь сделать это с пользователем root.Я также установил postgresql-devel с использованием yum и попытался указать --with-pg-include там, где находится libpq-fe.h (предлагается в некоторых других публикациях), но не смог решить проблему.

1 Ответ

1 голос
/ 24 сентября 2019

Сначала вам нужно установить инструменты сборки (то есть компилятор C и связанные с ними инструменты), а также заголовки разработки для вашего сервера postgres, чтобы иметь возможность компилировать гем.

Для RedHat вы должны иметь возможностьПолучите все необходимые инструменты с помощью

yum install autoconf bison flex gcc gcc-c++ gettext kernel-devel make m4 ncurses-devel patch
yum install postgresql-devel

С Chef 14 вы можете использовать встроенный build_essential ресурс для установки необходимых пакетов компилятора.В старых версиях вы можете использовать поваренную книгу build-essential .

...