読者です 読者をやめる 読者になる 読者になる

A Way of Code

興味の赴くままに書き綴っていきます。

GitをupgradeしたらWarning: Non-libraries were installed to "lib".と表示された

Homebrew Git

結論:気にするな
(Conclusion: Ignore it.)

homebrewからgitをupgradeしたら、Warningが出たので調べてみました。

  1 ==> Caveats
  2 Bash completion has been installed to:
  3   /usr/local/etc/bash_completion.d
  4 
  5 The 'contrib' directory has been installed to:
  6   /usr/local/share/git-core/contrib
  7 Warning: Non-libraries were installed to "lib".
  8 Installing non-libraries to "lib" is bad practice.
  9 The offending files are:
 10 /usr/local/Cellar/git/1.7.9.3/lib/Git.pm
 11 ==> Summary
 12 /usr/local/Cellar/git/1.7.9.3: 1155 files, 23M, built in 98 seconds

気にするな、と言われても気になってしまう方は、警告の表示をみていきましょう

1-6行目のCaveats

#caveartsは「注意」という意味で、何かを利用するとき等に誤解させないための注意喚起のために使われたりしますね。warningほど重大じゃない感じ。
CaveatsはHomebrewの機能で、Formulaをインストールするときのプロセスとして一番最後に処理されます。Caveatsを表示したい場合は、Formulaにcaveatsメソッドを実装します。
んで、GitのFormulaでは、caveatsメソッド内で、2-6行目のメッセージしか作っていないので、7行目以降はCaveatsによるものではないですね。
GitのFormualをみると、2-6行目は必ず出力されるようになっていて、

  • Bash completionは/usr/local/etc/bash_completion.dにインストールしておいたからね!
    • Bashで自動補完をするためのスクリプト。zshな方は使っちゃダメ
  • contribディレクトリは/usr/local/share/git-core/contribにインストールしたよ!
    • contribは本体ではない付属品・寄贈品を入れておくディレクトリ。

という意味。#改めて書く程のことでもないけど、何故か自然と筆が進んでしまう

7-10行目のWarning

これが気になったところ。
adamv氏によると、推奨されていない場所に何かをインストールした場合に、それを検出する仕組みをHomebrewに設けたらしい。
https://github.com/mxcl/homebrew/issues/10562

今回は、/usr/local/Cellar/git/1.7.9.3/lib/Git.pmというライブラリファイルではないものが、本来ライブラリを入れるべきlibディレクトリにインストールされて、警告が出たようです。(これは本来、./lib/site_perl/に入れるべきものかなぁ。)
どちらかと言うと、Homebrewの利用者側に対する警告ではなく、Formulaの作成者側に向けた警告のようですね。

#ちなみに、この検知によるissueの投稿が多いので、検知の仕組みを外そうかと思っているらしい。

11-12行目

インストールが成功したときに表示されるいつものメッセージですね

ということでした