Ruby: Bundle install failed
Bundlerでgemのインストールが失敗した場合の原因と解決策
概要
bundle installでgemのインストールが失敗する場合のエラーです。
エラーメッセージ
```
An error occurred while installing nokogiri (1.13.0), and Bundler cannot continue.
Make sure that gem install nokogiri -v '1.13.0' --source 'https://rubygems.org/' succeeds before bundling.
```
原因
- ネイティブ拡張のビルド失敗: C拡張のコンパイルエラー
- 依存ライブラリの不足: libxml2等がない
- Rubyバージョンの不一致: gemが要求するバージョンと異なる
- 権限の問題: システムディレクトリへの書き込み権限
解決策
1. 依存ライブラリをインストール
```bash
Ubuntu/Debian
sudo apt-get install build-essential libssl-dev libreadline-dev zlib1g-dev
nokogiri の依存
sudo apt-get install libxml2-dev libxslt1-dev
pg gem の依存
sudo apt-get install libpq-dev
mysql2 gem の依存
sudo apt-get install libmysqlclient-dev
macOS
brew install libxml2 libxslt ```
2. bundle config でオプション指定
```bash
nokogiri でシステムライブラリを使用
bundle config build.nokogiri –use-system-libraries
mysql2 のソケット指定
bundle config build.mysql2 –with-mysql-config=/usr/bin/mysql_config
pg の設定
bundle config build.pg –with-pg-config=/usr/bin/pg_config ```
3. 特定gemを個別インストール
```bash
詳細なエラーを確認
gem install nokogiri -v ‘1.13.0’ – –use-system-libraries
成功したら bundle install を再実行
bundle install ```
4. Rubyバージョンを確認
```bash
現在のバージョン
ruby -v
Gemfileで要求されるバージョン
cat .ruby-version
rbenv/rvm でバージョン切り替え
rbenv install 3.2.0 rbenv local 3.2.0 ```
5. キャッシュをクリア
```bash
bundle のキャッシュをクリア
bundle clean –force rm -rf vendor/bundle
gem のキャッシュをクリア
gem cleanup ```
6. パスを指定してインストール
```bash
プロジェクトローカルにインストール
bundle config set –local path ‘vendor/bundle’ bundle install ```
よくある間違い
- sudo bundle install を使う(権限問題の元)
- 開発用ヘッダをインストールしない
- 古いBundlerを使い続ける
関連エラー
関連エラー
Ruby の他のエラー
この記事は役に立ちましたか?