Erro de instalação do MySQL2: Falha ao criar a extensão nativa do GEM
-
25-09-2019 - |
Pergunta
Estou tendo alguns problemas ao tentar instalar mysql2
Gem para trilhos. Quando tento instalá -lo executando bundle install
ou gem install mysql2
Isso me dá o seguinte erro:
Erro de instalação do MySQL2: Erro: Falha ao criar a extensão nativa do GEM.
Como posso consertar isso e instalar com sucesso mysql2
?
Solução
No Ubuntu/Debian e outras distribuições usando aptidão:
sudo apt-get install libmysql-ruby libmysqlclient-dev
Pacote libmysql-ruby
foi eliminado e substituído por ruby-mysql
. este é onde eu encontrei a solução.
Se o comando acima não funcionar porque libmysql-ruby
Não pode ser encontrado, o seguinte deve ser suficiente:
sudo apt-get install libmysqlclient-dev
Em Red Hat/Centos e outras distribuições usando Yum:
sudo yum install mysql-devel
No Mac OS X com Homebrew:
brew install mysql
Outras dicas
Estou em um mac e uso Homebrew Para instalar programas de código aberto. Eu tive que instalar as ferramentas Mac Dev para instalar o Homebrew, mas depois disso foi simples:
brew install mysql
Para instalar o MySQL. Eu não tive um problema no MySQL Gem desde então.
Aqui está uma solução para o Usuários do Windows, espero que ajude!
Usando o MySQL com Rails 3 no Windows
Instale o Railsinstaller -> www.railsinstaller.org (Eu o instalei para C: Rails)
Instale o MySQL (Eu usei o MySQL 5.5) -> dev.mysql.com/downloads/installer/
--- para instalação MySQL ---
Se você ainda não tem esses dois arquivos instalado, você pode precisar deles para fazer seu mysql
vcredist_x86.exe -> http://www.microsoft.com/download/en/details.aspx?id=5555DOTNETFX40_FULL_X86_X64.EXE -> http://www.microsoft.com/download/en/details.aspx?id=17718
Use a máquina de desenvolvedor de instalação padrão-MySQL Server Config-
Porta: 3306
Nome do serviço do Windows: MySQL55
Raiz Mysql: raiz (você pode alterar isso mais tarde)
(nome de usuário: root)
-MySQL Server Config---- para instalação MySQL ---
--- Instale o MySQL2 Gem ---
Importante: Faça isso com a linha de comando Git Bash(Isso foi instalado com Railsinstaller) -> BASH START/GIT
Gem Install MySQL2-'---with-mysql-lib = "C: Arquivos de programas mysql mysql server 5.5 lib" ---with-mysql-include = "C: Arquivos de programas mysql mysql Server 5.5 incluir"'
Agora a jóia deveria ter instalado corretamente
Por fim, copie o arquivo libmysql.dll de
C: Arquivos de programas mysql mysql server 5.5 lib
para
C: Rails Ruby1.9.2 bin
--- Instale o MySQL2 Gem ---
Agora você poderá usar seu aplicativo Rails com o MySQL, se não tiver certeza de como criar um aplicativo Rails 3 com o MySQL leia ...
--- Obtenha um aplicativo Rails 3 indo com o mysql ---
Prompt de comando aberto (não Git Bash) -> Iniciar/CMD
Navegue até a sua pasta (c: sites)
Crie um novo aplicativo Rails
rails new world
Exclua o arquivo c: sites mundial public index.html
Edite o arquivo C: sites World config rotes.rb
Adicione esta linha -> raiz: para => 'Cidades#Índice'
Prompt de comando aberto (gerar visualizações e controladores)
rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer
Edite o arquivo C: sites World App Models City.rb para ficar assim
class City < ActiveRecord::Base
set_table_name "city"
end
Edite o arquivo c: sites mundial config database.yml para se parecer com isso
development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock
Adicione ao GemFile
gem 'mysql2'
Abrir prompt de comando Windows CMD, não Git Bash (execute seu aplicativo!)
Navegue até a pasta do aplicativo (C: Sites World)
rails s
Abra seu navegador aqui -> http: // localhost: 3000
--- Obtenha um aplicativo Rails 3 indo com o mysql ---
Eu tenho vários computadores, processador de 32 e 64 bits, eles são executados no Ubuntu Linux, Maverick (10.10).
Eu tive o mesmo problema, e para mim, osudo apt-get install libmysql-ruby libmysqlclient-dev
fez o trabalho !!!
Outra maneira de usuários do MacOS
Se você usou "Brew" para instalar o MySQL:
gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config
xxx = versão da gema mysql2 que você deseja instalar
aaa = a versão do mysql que você instalou ls /usr/local/Cellar/mysql
Para encontrar isso.
Você já tentou usar
gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib
Para especificar a localização do diretório TheBase, bem como o caminho para as bibliotecas MySQL necessárias para concluir a instalação do GEM?
Fontes:Erro de instalação do MySQL GEM: Falha ao criar uma extensão nativa do GEM Fóruns do MySQL :: Ruby :: Ajuda necessária para a instalação da ligação MySQL para Ruby
Se você estiver usando o yum, tente:
sudo yum install mysql-devel
Isso resolveu meu problema uma vez no Windows:
subst X: "C:\Program files\MySQL\MySQL Server 5.5"
gem install mysql2 -v 0.x.x --platform=ruby -- --with-mysql-dir=X: --with-mysql-lib=X:\lib\opt
subst X: /D
Se você ainda está tendo problemas….
Tente instalar
sudo apt-get install ruby1.9.1-dev
Eu tive esse problema no Windows 7. Este é aparentemente um problema de incompatibilidade e a solução é a seguinte:
Faça o download do libmySQL.dll
Arquivo de um instalador de Instantrails mais antigo. Está disponível no Instantrails Github Repo.
Em seguida, copie esse arquivo na sua pasta Ruby/Bin.
Agora, você está pronto para ir;)
Por Macos Mojave:
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
Eu também recebi esse erro. Resolvido instalando pacotes de desenvolvimento. Estou usando Arch e foi:
sudo pacman -S base-devel
que instalou:
m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config
Mas acho que realmente precisava de fazer e GCC. A saída de erro disse (na minha máquina, entre outros):
"Você precisa instalar as ferramentas de desenvolvimento primeiro."
Então foi uma decisão óbvia e ajudou.
Você tem que instalar algumas dependências
sudo apt-get install libmysql-ruby libmysqlclient-dev
No Debian Stretch, o pacote que funcionou para mim foi padrão-libmysqlclient-dev
sudo apt-get update && apt-get install -y default-libmysqlclient-dev
Eu estava enfrentando esse erro no meu Mac e descobri que precisava atualizar do MySQL 32bit para o MySQL 64 bits para obter esse erro para desaparecer. Eu estava executando o OSX 10.6 em um Intel MacBook Pro com Ruby 1.9.2 e Rails3.0.0
Eu também precisava instalar o Xcode para obter utilitários do UNIX como "Make" necessários para compilar a gema.
Depois que isso foi feito, pude executar o GEM Install MySQL e GEM Instale MySQL2 sem erro.
No meu caso, isso ajudou:
$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
Então:
gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
Resultado:
Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed
Veja este post (Aviso: idioma japonês dentro).
Para o usuário do Windows: você define a lib e inclui caminho do seu MySQL, por exemplo, se você estiver usando o xampp, você pode ter assim:
gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'
A solução funciona apenas no Mac OS X
Se você instalou o MySQL com o Homebrew, o que funcionou para mim foi desinstalar o MySQL e instalar o MySQL Community Edition no site do MySQL (https://www.mysql.com/).
Após a instalação, basta entrar novamente no comando para gem install mysql2
ou se necessário, sudo gem install mysql2
, se você estiver obtendo permissão negado problemas.
Eu criei a jóia construída no Mac OS X 10.6.6 por 1) Garantir que o pacote de ferramentas do desenvolvedor esteja instalado 2) Faça o download do pacote MySQL atual (5.5.8 no meu caso) da fonte 3) Instalando a ferramenta CMake do cmake.org 4 ) Seguindo as instruções na seção 2.11 da fonte de instalação dos arquivos de distribuição MySQL 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include
A jóia foi construída com sucesso, mas há dois erros na documentação que o RDOC e o RI reclamam. Mas agora, quando tento exigir 'mysql2', eu recebo um
LoadError: no such file to load -- mysql2/mysql2
Eu esperava que o erro que receberia era que o libmysqlclient.16.dylib não pudesse ser encontrado porque descobrimos isso em outra postagem (pesquise install_name_tool).
Meu $ PATH possui/usr/local/mysql (é onde estão localizadas minhas fontes e arquivos construídos), por isso estou um pouco perplexo. Se alguém pensa, voltarei a voltar depois de algumas horas de sono.
Se ainda estiver obtendo erro, siga as etapas da instalação do MySQL2 Gem no Rails 3 em -
http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html
onde a maioria do usuário conseguiu instalar o MySQL2 Gem.
Depois de obter os problemas do MySQL-DEV, pode ser necessário remover a instalação ruim do MySQL2. Observe atentamente as mensagens após a instalação do $ Bundle. Você pode precisar
rm -rf vendor/cache/
rm -rf ./Zentest
Isso limpará a instalação ruim do MySQL2 para que uma instalação final de $ pacote possa criar uma boa.
Faça o download da versão certa do mysqllib.dll e copie -a para Ruby Bin realmente funciona para mim. Siga este link Plases MySQL2 Gem compilado para biblioteca de clientes mysql errada
Recebi as "você precisa instalar as ferramentas de desenvolvimento primeiro". Erro ao tentar instalar a jóia mysql2 Depois de atualizar para o Mac OS X Mountain Lion. Aparentemente, fazer essa atualização remove os compiladores da linha de comando.
Consertar:
- Desinstalei minha versão muito antiga do Xcode (execute o script desinstale em /desenvolvedor /biblioteca). Em seguida, excluiu o diretório /desenvolvedor.
- Fui para a AppStore e baixou o Xcode.
- Iniciou o Xcode e entrou nas preferências -> Downloads e instalou as ferramentas de linha de comando.
Você está tendo esse problema porque não instalou o MySQL. Antes de instalar o MySQL2 Gem. Instale o MySQL. Depois disso, o MySQL2 Gem instalará.
Eu só queria adicionar esta resposta especificamente para Usuários de Mac.
Meu servidor estava funcionando perfeitamente bem até eu atualizar meu xcode. Enquanto inicia meu servidor Rails, o erro foi mostrado assim
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/user/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb --with-mysql-
checking for rb_thread_blocking_region()... /Users/user/.rvm/rubies/ruby-1.9.3-
p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an
executable file. (RuntimeError)
E havia sugestão para instalar o MySQL2 Gem no final da mensagem de erro. Então, quando tentei instalá -lo, recebi o erro como mencionado acima desta pergunta. O erro que recebi é o seguinte
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
Assim, como sugerido neste post, tentei 'Brew Install MySQL' e isso desistiu dizendo que a versão MySQL assim e já instalada. Mas houve aviso antes de dizer
Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license
Então eu tentei isso sudo xcodebuild -license
e tipo 'concordo' no final. Você precisa ser raiz para concordar com a licença.
Depois disso, tentei novamente a instalação do pacote e tudo está funcionando bem normalmente. [Mesmo devido a essa atualização do Xcode, eu também tive problemas com minha torre.
libmysql-ruby
foi eliminado e substituído. Novo comando:
sudo apt-get install ruby-mysql libmysqlclient-dev
Desculpe por isso deve ser um comentário sobre Resposta do SpacEmonkey Mas minha não tenho reputação suficiente para fazê -lo.
Quero acrescentar que, se você estiver usando o MariaDB em vez do MySQL no CentOS 7, você só precisa instalar o pacote mariadb compartilhado para corrigir o erro.
yum install MariaDB-shared -y