2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Homebrew.jl で git 周りのエラーに遭遇したときの対処法

Posted at

TL;DR

  • Homebrew.jl でエラーが出たら以下の2つを試す:
    • Homebrew.jl のパッケージディレクトリを手動で物理削除して、再インストールする
    • 別途 Homebrew で入れていた(システムの)git をアップグレードする

環境

  • Mac OSX 10.11.6 El Capitan12
  • Julia v0.6.1
  • git v2.x.x(Homebrew でインストール → /usr/local/bin/git

改めて説明

macOS で Julia 使ってて、色々な外部パッケージをインストールしてると、パッケージによっては Homebrew.jl に依存していていつの間にかインストールされたりします。
そしてこれが、長く使ってるとエラーが出ることがよくあります。どのようなエラーなのかというと、状況としてはパッケージのアップデート時や他のパッケージインストール時、エラーの種類は、git 関連。

最近遭遇したエラーと、それをどう解決したかのメモを残しておきます。
全ての人に当てはまるとは限りませんが、誰かの何かしらの参考になれば。

ケース1

以下のようなエラーが出ることがありました。

julia> Pkg.build("Homebrew")
INFO: Building Homebrew
 : 《中略》
Error: git: /path/to/userhome/.julia/v0.6/Homebrew/deps/usr/Library/Taps/homebrew/homebrew-core/Formula/git.rb:190: syntax error, unexpected $undefined, expecting keyword_end
      \thelper = osxkeychain
       ^
==============================[ ERROR: Homebrew ]===============================

LoadError: ArgumentError: `brew info` failed for String["git"]!
while loading /path/to/userhome/.julia/v0.6/Homebrew/deps/build.jl, in expression starting on line 2

================================================================================

================================[ BUILD ERRORS ]================================

WARNING: Homebrew had build errors.

 - packages with build errors remain installed in /path/to/userhome/.julia/v0.6
 - build the package(s) and all dependencies with `Pkg.build("Homebrew")`
 - build a single package by running its `deps/build.jl` script

================================================================================

julia> 

つまり Homebrew.jl のビルド時に「`brew info` が失敗する」というもの。
「パッケージをビルドし直すには Pkg.build("Homebrew") してみてね」と言われるんですけれど、何度実行しても同じエラーが出ます。

解決策

よく分からないのですが、このエラーが出たら「最初から作り直す」のが正解っぽいです。
参考→ https://github.com/JuliaPackaging/Homebrew.jl/issues/206

手順としては以下:

  • パッケージディレクトリ内の、Homebrew ディレクトリを(物理)削除する。
    • 通常、ユーザホームディレクトリ直下の .julia/v0.6/Homebrew/ となります。
  • Julia の REPL に戻って、Pkg.update() を実行する。
    • 依存関係から Homebrew.jl を再インストール・再ビルドしてくれる。
$ cd ~/.julia/v0.6
$ rm -rf Homebrew
julia> Pkg.update()
INFO: Updating METADATA...
 : 《中略》
INFO: Installing Homebrew v0.5.9
INFO: Building Homebrew
INFO: Downloading brew...
 : 《後略》

julia>

何事もなく完了すればOK。

ケース2

なんかもっとやばそうな「git コマンドがそもそもまともに動いてなさそう」なエラー↓が出る場合もありました。

julia> Pkg.build("Homebrew")
INFO: Building Homebrew
fatal: Unable to find remote helper for 'https'
fatal: Unable to find remote helper for 'https'
Error: Fetching /path/to/userhome/.julia/v0.6/Homebrew/deps/usr failed!
Fetching /path/to/userhome/.julia/v0.6/Homebrew/deps/usr/Library/Taps/homebrew/homebrew-core failed!
git: 'rebase' is not a git command. See 'git --help'.
git: 'rebase' is not a git command. See 'git --help'.
==============================[ ERROR: Homebrew ]===============================

LoadError: failed process: Process(`/path/to/userhome/.julia/v0.6/Homebrew/deps/usr/bin/brew update --force`, ProcessExited(1)) [1]
while loading /path/to/userhome/.julia/v0.6/Homebrew/deps/build.jl, in expression starting on line 2

================================================================================

================================[ BUILD ERRORS ]================================

WARNING: Homebrew had build errors.

 - packages with build errors remain installed in /path/to/userhome/.julia/v0.6
 - build the package(s) and all dependencies with `Pkg.build("Homebrew")`
 - build a single package by running its `deps/build.jl` script

================================================================================

julia>

実際に git --help するとちゃんと rebase はちゃんとあるのに、このエラーが出る。

解決策

この場合は、私が別に Homebrew でインストール3していた git の側に問題があったようで、そちらをアップグレードしたら治りました。

参考→ https://github.com/JuliaPackaging/Homebrew.jl/issues/211#issuecomment-347919388

shell> brew upgrade git
Updating Homebrew...
==> Auto-updated Homebrew!
 : 《中略》
==> Upgrading 1 outdated package, with result:
git 2.15.1
==> Upgrading git
==> Downloading https://homebrew.bintray.com/bottles/git-2.15.1.el_capitan.bottl
Already downloaded: /path/to/userhome/Library/Caches/Homebrew/git-2.15.1.el_capitan.bottle.tar.gz
==> Pouring git-2.15.1.el_capitan.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions and functions have been installed to:
  /usr/local/share/zsh/site-functions

Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/git
==> Summary
🍺  /usr/local/Cellar/git/2.15.1: 1,488 files, 34.4MB

julia> Pkg.build("Homebrew")
INFO: Building Homebrew
Already up-to-date.

julia> 

まとめに変えて

これでやっと眠れる…。

  1. おそらく Sierra/High Sierra でも同様です(ていうかまだ Sierra 以降にアップグレードしてなかったりする…)

  2. (ていうか Sierra 以降にアップグレードしたら同じ問題がまた起きそうな気がする…)

  3. /usr/local/〜 以下で各種コマンドや shared library を管理する(システムレベルの)Homebrew と、Julia で管理している Homebrew とが混在(しかも複数バージョン Julia インストールしていたり JULIA_PKGDIR 指定して環境を分けている場合はさらに複数存在)していると、色々めんどくさいことになります…。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?