0

Homebrew & zshインストール、初期設定時の備忘録

Homebrewってなに?

Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化する
パッケージ管理システムのひとつである

実行ファイルや設定ファイル、ライブラリetcを一つのファイルとしてまとめているものをパッケージと呼びます。
パッケージ管理システムとはこのパッケージのインストール(アンインストール)作業を一元的管理するものです。
パッケージやライブラリの依存関係などが管理できます。
ちなみにパッケージ管理には、
・バイナリを取得するもの
・ソースコードを取得してビルドするもの
のパターンがあるみたいです。
1バイナリとはソースコードを予めビルドした成果物を配布していることを指すようです。
なので1バイナリは2ビルドよりも早くインストールできる特徴を持っているようです。
それに対して2ビルドは、自分のmacでビルドするので自分のmacに最適化出来る特徴を持っているようです。

homebrewを入れる

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
==> This script will install:
 /usr/local/bin/brew
 /usr/local/Library/...
 /usr/local/share/man/man1/brew.1

Press RETURN to continue or any other key to abort
 ==> /usr/bin/sudo /bin/mkdir /usr/local
 Password:
 ==> /usr/bin/sudo /bin/chmod g+rwx /usr/local
 ==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local
 ==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew
 ==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
 ==> Downloading and installing Homebrew...
 fatal: unable to access 'https://github.com/Homebrew/homebrew/': SSL certificate problem: Invalid certificate chain  ←☆

どうやらsslとgit周りで問題が起こっているらしい。
Google先生いわく
期限が切れたsslのとある証明書を削除する必要があるらしい!
Fix for an Expired Intermediate SSL Certificate Chain

上記を参考に
失効したdigiCert High Assurence EV Root CA SSL証明書を削除
スクリーンショット 2015-03-06 18.08.27

■再度

 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 It appears Homebrew is already installed. If your intent is to reinstall you
 
should do the following before running this installer again:
 rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup

■走行する前にrmしろ!と指示があるので正直に実行

$ rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
bash: brew: command not found ←???

 ・

 ・

!!!

brew cleanupはいらんわな。

$ rm -rf /usr/local/Cellar /usr/local/.git

こんどこそ、改めて・・・

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 ==> This script will install:
 /usr/local/bin/brew
 /usr/local/Library/...
 /usr/local/share/man/man1/brew.1
Press RETURN to continue or any other key to abort
 ==> Downloading and installing Homebrew...
 remote: Counting objects: 234913, done.
 remote: Compressing objects: 100% (104/104), done.
 remote: Total 234913 (delta 66), reused 0 (delta 0), pack-reused 234809
 Receiving objects: 100% (234913/234913), 30.39 MiB | 1.53 MiB/s, done.
 Resolving deltas: 100% (176155/176155), done.
 From https://github.com/Homebrew/homebrew
 * [new branch] master -> origin/master
 HEAD is now at 493edcf Remove unnecessary nil check
 ==> Installation successful!
 ==> Next steps
 Run `brew doctor` before you install anything
 Run `brew help` to get started

$ brew -v

Homebrew 0.9.5

Homebrewがインストール後、はじめに正常性を確認するのがお決まりのようなので、

以下コマンド実行。

$ brew doctor

Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry and just ignore them. Thanks!

Warning: Your Xcode (6.1) is outdated
Please update to Xcode 6.1.1.
Xcode can be updated from the App Store.

早速なんかでた!!!

Xcodeのバージョンを6.1なにがしにあげましょう、とあるので指示に従いVERUP。
AppStoreからXcode 6.1 を落とす

スクリーンショット 2015-03-06 18.34.24

■ヴァージョン上げ完了したら、再度正常性確認。

$ brew doctor

Your system is ready to brew.

これでHomebrewの正常に使えるようです。

ちなみに、他のパッケージ管理システムのMacPortなどを入れていたりすると競合がおこりWarningがでるようです。

混在させておくと良くないみたいなのでアンインストールしておくことを推奨します。

導入時のお決まり、brew自体のUPDATE

$ brew update
Already up-to-date.

Homebrewで管理されているパッケージは次々とバージョンが上がっている為、
Homebrew自体をインストール時から放っておくと、古いバージョンのパッケージをインストールされかねない。
何かをインストールする際には brew update とまずは唱えましょう。

■パッケージのインストール方法

[ 書式 ] brew install [formula]
$ brew install sl
===> Downloading https://github.com/mtoyoda/sl/archive/5.02.tar.gz
##############################################################100%
===> make -e
        /usr/local/Cellar/sl/5.02: 5 files, 36K, built in 7 seconds

sl -a
スクリーンショット 2015-04-04 18.14.39

*蛇足*slはUNIX OSコマンドでした!
スクリーンショット 2015-03-08 02.21.18
/usr/localの中のCellorディレクトにパッケージがインストールされ、
binにシンボリックリンクが作られます。

いいイメージがありましたので紹介させていただきます。
スクリーンショット 2015-03-08 01.20.45

brewというのは「醸造する」という意味にあたるんですね。(今更)
ということで、homebrewとは「ユーザが自らパッケージをビルドして使用する」ことのメタファーで
ビールを自家醸造して保存する・飲む」ことを意味しているのです。
手順(調理法formula)通りにパッケージをビルド(醸造)して保存(/usr/local/cellerに格納)して、
使う(/usr/loca/binにリンク)
ってことのようです。

$ ls -l /usr/local/
total 80
-rw-r--r-- 1 updeepdj admin 1241 3 6 18:16 LICENSE.txt
-rw-r--r-- 1 updeepdj admin 1103 3 6 18:16 CONTRIBUTING.md
-rw-r--r-- 1 updeepdj admin 3160 3 6 18:16 CODEOFCONDUCT.md
-rw-r--r-- 1 updeepdj admin 23781 3 6 18:16 SUPPORTERS.md
-rw-r--r-- 1 updeepdj admin 2064 3 6 18:16 README.md
drwxr-xr-x 5 updeepdj admin 170 3 6 19:55 share
drwxr-xr-x 4 updeepdj admin 136 3 6 19:55 opt
drwxr-xr-x 4 updeepdj admin 136 3 6 19:55 etc
drwxr-xr-x 4 updeepdj admin 136 3 6 19:55 bin
drwxr-xr-x 10 updeepdj admin 340 3 6 19:55 Library
drwxr-xr-x 4 updeepdj admin 136 3 6 19:55 Cellar ←★
$ ls -l /usr/local/Cellar/
total 0
drwxr-xr-x 3 updeepdj admin 102 3 6 19:55 openssl
drwxr-xr-x 3 updeepdj admin 102 3 6 19:55 wget

/usr/local/Cellar/に各パッケージをインストール

$ ls -l /usr/local/bin/
total 16
-rwxr-xr-x 1 updeepdj admin 791 3 6 18:16 brew
lrwxr-xr-x 1 updeepdj admin 30 3 6 19:55 wget -> ../Cellar/wget/1.16.2/bin/wget ←★ 
 → /usr/local/bin/に各パッケージのシンボリックリンクを配置

■ Formulaとは?

HomebrewでインストールするパッケージのURLやビルドの手順が書かれたスクリプトです。Formulaファイルは/usr/local/Library/Formula以下にあります。インストールするツールは、全てこのFormulaを使います。

■入れたツールを優先して使う$PATHの設定

Homebrewは、デフォルトで/usr/local/binをで使用します。
ここには、パスが通っているので特に設定を変更する必要はありません。

しかし、Mac OS X にプリインストールされているツール、
例えば Ruby、Git、zshなどをHomebrewで入れ直す場合は、
/usr/local/binを優先されるようにしなければなりません。

この設定を行わないと使うことができません。

デフォルトで入っているツールを入れ直したとき、
警告やエラー警告を出してくれるので、それに従って設定すれば大丈夫です。
ですが、エラーが出るのも気分が悪いので予め設定しておきます。

■$PATH の設定手順

$PATHを設定する方法には/etc/pathsを編集する方法シェルのユーザ環境設定ファイル、

例えば.bash_profileファイルや.bashrcファイルに記述する方法などがあります。

今回はターミナルのデフォルトのシェル、bashの.bash_profileに設定していきます。

HOMEディレクトリの.bash_profileに以下コマンドより追記する。

***ファイルがない場合は新規作成してください。***

$ { echo export PATH='/usr/local/bin:$PATH'; echo export PATH='/usr/local/sbin:$PATH' } >> ~/.bash_profile

■環境変数$PATHに反映されたか確認

$ echo "$PATH" | gsed 's/:/\n/g' ←*1
/usr/local/bin ←★ok
/usr/local/sbin ←★ok
/usr/bin
/usr/sbin
/bin
/sbin
*1:macにプリインストールされてるposix準拠のsed(/usr/bin/sed)ではなく、gnu準拠のsed(僕の場合は/usr/local/bin/gsed)でないと上記置換処理は正常に動かないです。念の為。
参考:改行に置換するためのワンライナー集(tr/sed/perl) 、あとmac標準のsedはposix準拠なのでgnu準拠のsedを使いましょう!

◆homebrewでzshを入れる
macにはデフォルトでzshが入っているらしいのだけれど、下記理由によりhomebrew経由でインストールしたものを使う
Mac 標準のはバージョンが古すぎる
これを最新版にアップグレードしても、Mac OS をアップグレードすると古いバージョンに戻されてしまう恐れがある
ターミナルから Mac 標準の zsh を起動すると、読み込まれる設定ファイルに制限が加わってしまう
スクリーンショット 2015-03-06 21.22.55

しかしインストールしただけではまだログインシェルとして使うことが出来ません。
まずは zsh という名のシェルのパスをターミナルに認識させます。/etc/shells というファイルを開いて、いちばんうしろに以下のように追記します。
スクリーンショット 2015-03-06 21.51.57

これでターミナルが新しい zsh を認識するようになります。

最後にターミナル起動時こいつが使用されるようにデフォルトシェルに設定for updeepdj.
Password for updeepdj: ← パスワード

■zshがログインシェルとして環境変数にセットされているか、確認。

$ echo $SHELL
/usr/local/bin/zsh ←★ok

oh-my-zshのテーマをいれてみる
スクリーンショット 2015-03-06 21.30.42

.zshrc は最小構成で、まずは。

# Path to your oh-my-zsh installation.
export ZSH=/Users/updeepdj/.oh-my-zsh
ZSH_THEME="robbyrussell"

plugins=(git)

source $ZSH/oh-my-zsh.sh

# Hachim Specific ini

# 環境変数LANGをja_JP.UTF-8へ設定
export LANG=ja_JP.UTF-8

## 補完機能の強化
autoload -U compinit
compinit

## 補完候補一覧でファイルの種別をマーク表示
setopt auto_list

## 補完候補を一覧表示
#setopt list_packed
## 補完候補のカーソル選択を有効に
zstyle ‘:completion:*:default’ menu select=1

PROMPT=”%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg_no_bold[yellow]%}%1~ %{$reset_color%}%#”
RPROMPT=”[%{$fg_no_bold[yellow]%}%?%{$reset_color%}]”

#現在の入力で始まる過去のコマンドだけが表示
[[ -n “${key[PageUp]}” ]] && bindkey “${key[PageUp]}” history-beginning-search-backward
[[ -n “${key[PageDown]}” ]] && bindkey “${key[PageDown]}” history-beginning-search-forward

– –

■homebrewの使い方一覧をまとめていた記事を見つけたので紹介させていただきます。

brew install foo fooをインストール
brew install --HEAD foo fooのHEADバージョンをインストール
brew install --force --HEAD foo fooの新しいHEADバージョンをインストール
brew search インストール可能なすべてのformulaを表示
brew search foo インストール可能なformulaからfooを検索
brew search /foo/ 正規表現fooを検索
brew list インストール済みのformulaeを表示
brew list foo fooのインストールしたファイルを表示
brew info --github foo foo formulaのGithub履歴ページをブラウザで表示
brew info インストール済みのHomebrewパッケージのサマリーを表示
brew info foo インストール済みのfooのすべての情報を表示
brew home HomebrewのWebサイトをデフォルトブラウザで表示
brew home foo fooのWebサイトをデフォルトブラウザで表示
brew update HomebrewのformulaeとHomebrew自体をアップデート
brew remove foo fooのアンインストール
brew create [url] ダウンロード可能なファイルのURLのformulaを生成してBREWEDITORかEDITORで指定されているエディタで開く
brew create url-of-tarball --cache formulaを生成して、tarballをダウンロードする。md5をformulaテンプレートに追加する。
brew create --macports foo どのようにfooをインストールするか調べるために、MacPortsパッケージ検索ページでfooを検索する。
brew create --fink foo Finkで同様のことを行う。
brew edit foo formulaをHOMEBREWEDITORかEDITORで開く
brew link foo fooのインストールされたファイルのHomebrew prefixシンボリックリンク作成する。(Homebrewでインストールすると自動的に行われる。DIYインストールを行った場合に有用。
brew unlink foo Homebrew prefixシンボリックリンクを削除する。
brew prune Homebrewprefixからデッドシンボリックリンクを削除する。
brew outdated 利用可能なアップデートバージョンが存在するformulaを表示する。新しいバージョンをインストールするにはbrew install fooを実行する。
brew upgrade 利用可能なアップデートバージョンが存在するformulaをすべてアップグレードする。
brew --config Homebrewのシステム設定を表示する
brew --prefix Howebrew prefixのパスを表示する。(普通は /usr/local)
brew --prefix (formula) インストールされたformulaのパスを表示する。
brew --cellar Homebrew Cellarのパスを表示する。(普通は /usr/local/Cellar)
brew --cache Homebrew キャッシュダウンロードのパスを表示する。(普通は ~/Library/Caches/Homebrew)
brew doctor インストールの一般的な問題をチェックする。
brew audit すべてのformulaeのコードとスタイルの問題を検査する。
brew cleanup foo インストールしたすべてもしくは特定のformulaeの古いバージョンをcellarから削除する。すべての場合はbrew cleanupを実行する。
■参考記事

homebrewとは何者か。仕組みについて調べてみた


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です