TL;DR
- Homebrew.jl でエラーが出たら以下の2つを試す:
-
Homebrew.jl
のパッケージディレクトリを手動で物理削除して、再インストールする - 別途 Homebrew で入れていた(システムの)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>
まとめに変えて
これでやっと眠れる…。