Skip to content

Instantly share code, notes, and snippets.

@tamamushi
Last active May 3, 2016 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tamamushi/982bdb32e6150abc8398 to your computer and use it in GitHub Desktop.
Save tamamushi/982bdb32e6150abc8398 to your computer and use it in GitHub Desktop.
Macの環境構築とエラー&問題対処系に関するTips集

Mac縛りで環境整備に関するTips & 各種エラー対処系等のTips集

  • Macの環境構築を自動化する
  • 古いMacでgitした時にSSL証明書の認証?エラー
    error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Macの環境構築を自動化する

Homebrewのインストール

1.xcode command line toolsのインストール

Downloads for Apple Developersに行きCommand Line Toolsをダウンロードし、 インストールを実行する。インストールが完了したら以下のコマンドを実行。

$ sudo xcodebuild -license

パスワードを聞かれるので、login時のパスワードを入力し、最後に大文字の 「G」、その後「agree」で終了

参考:教授でもできる、Command Line Toolsのinstallation

2.Homebrewのインストールを実行

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

homebrewをインストールしたらbrew doctorで問題がないかをチェック

Your syste is ready brew.

が出ればインストール完了。 最新版へのアップデート

$ brew update

バージョンチェック

$ brew -v

参考:パッケージ管理システム Homebrew

rbenv, ruby(2.0以上)をインストール

brew-cask関連のコマンド実行時にrubyの2.0以上が必要になる為、rbenvでrubyの バージョン管理を出来るようにしつつ、最新のrubyに更新する。

1.rbenvのインストール

brew install rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
brew install ruby-build
brew install rbenv-gemset
brew install rbenv-gem-rehash
source ~/.bash_profile  

確認

rbenv --version          バージョン確認
rbenv install --list     インストール可能なバージョン一覧
rbenv install [version]  rubyのインストール
rbenv rehash             rbenvの再読み込み
rbenv global [version]   デフォルトで利用するrubyのバージョン

2.rubyのインストール

最新版のrubyをインストール

$ rbenv install 2.2.4      rbenvでrubyをインストール
$ rbenv global 2.2.4       インストールしたrubyをデフォルト設定
$ ruby -v                  バージョンの確認

参考:Homebrewのインストールとrbenvのインストールまで Mac編

brew-file, brew-cask, brew-versionのインストール

  1. brew-file
    Homebrewでインストールしたパッケージを複数マシン間での 環境の同一維持にBrewfileを利用する際、Githubでファイル管理を 一元化する

  2. brew-cask
    Homebrewを使ったGUIアプリのパッケージ管理ツール

  3. brew-version

1.brew-fileのインストール

Githubを使う場合にDNSで名前解決出来る必要がある為、以下を設定。 名前解決が問題ない場合は設定の必要はない。
DNSサーバーの設定

networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
networksetup -setdnsservers Ethernet 8.8.8.8 8.8.4.4
GithubへSSH鍵の登録

Github用の鍵を作る

$ ssh-kegen -f ~/.ssh/id_rsa_github    
$ ls .ssh/
id_rsa_github  id_rsa_gitub.pub

SSHの設定

$ vi ~/.ssh/config

Host gitub.com
  User            git
  HostName        github.com
  IdentityFile    ~/.ssh/id_rsa_github
  IdentitiesOnly  yes

GitHubへの公開鍵登録方法
Githubの歯車アイコン→左メニューのSSH keys→Add SSH keyボタンでkey欄に公開鍵を貼り付けます。.pubフィルを 貼り付ける

cat ~/.ssh/id_rsa_github.pub | pbcopy

でファイル内容をクリップボードにコピーできる。

接続テスト

$ ssh -T git@gihub.com
Hi <ユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.

これでbrew-fileの利用準備完了。

brew install rcmdnk/file/brew-file

インストールが完了したらBrewfileのレポジトリを登録。

brew file set_repo -r [Githubのアカウント名]/Brewfile

初期化

brew file init

参考:Homebrew-fileでhomebrewでインストールしたパッケージの管理をする
参考:brew-file: MacのHomebrewでBrewfileを扱うbrewallを改名した
参考:Brew-fileでMacのパッケージを簡単に管理する

3.brew-caskのインストール

brew install caskroom/cask/brew-cask

brew-cask export HOMEBREW_CASK_OPTS="--appdir=/Applications"

brew-version brew tap caskroom/versions

brew cask search dropbox

brew file brew cask install dropbox

S3fs導入した時のHowTo

インストール環境 OS: MacOS X 10.9.2

fuse4x

fuse4xをネットで良くあるbrew install fuse4xでインストールしようと したらno available formula for fuse4xってエラーになってしまった。

brew search fuse4xで探してtapで追加と言うのもあったので、試して 見るもどこのカテゴリ(?)をtapすれば良いのかの情報が返ってこず。 ※何も返って来なかった。

参考:brew installでError: No available formulaが返る時

仕方が無いので、fuse4xの公式っぽい所からdmgをダウンロードしてインストール

後から以下のリンクを発見。
Mac OS X Mavericksでs3fsを使ってS3バケットをマウントする fuse4xはhomebrew/fuse/fuse4xhomebrew/fuse/fuse4x-kextでインストールできるようです。

参考:fuse4x - download page:latest version 0.9.2(2012/08/30 update)
参考:fuse4x faq

s3fs-cloudpackと関連モジュール

s3fs-cloudpackのインストールにはcurlとlibxml2のインストールが必要。

$ brew install curl
$ brew install libxml2

sf3-cloudpack(s3fs-c)のインストール ※s3fs-cloudpackとs3fs-cは同じもの?結局、s3fs-cをインストールした。

$ git clone https://github.com/leo-project/s3fs-c.git
$ ./configure
$ make & make install
$ echo AccessKey:SecretKey > ~/.passwd-s3fs
$ chmod 600 /etc/.passwd-s3fs  ※権限を適切に設定しないと怒られる

ここでsf3fs-cのconfigureでは特に何も指定せずに通ったが、色々と有ったので 一応s3fs-cloudpackのインストール時の作業履歴も後ろに追記しておく。

AccessKeyとSecretKeyが間違っていてもs3fs-cだとマウントできてしまい エラーなどが表示されない。間違った状態でマウントされたディレクトリをlsとか やっても何も表示されなかったので、問題の原因が初め解らなかった。
s3fsだとkeyが間違ってるってエラーが出たのでそこでkeyの間違いに気づいて 修正。でも今度はs3fsだとマウント出来ても一部のファイルしか表示されず。 s3fs-cでそんなような事があるような事が書いてあったので、s3fs-cに戻し たら無事全て表示された。派生バージョンのものが色々有ったりして良く 解らなかった。

使い方

S3のバケットbucket_nameを/mntにマウント

$ sudo s3fs bucket_name /mnt -o allow_other
$ df -h
Filesystem       Size   Used  Avail Capacity   iused    ifree %iused  Mounted on
/dev/disk0s2     465Gi  261Gi  203Gi    57%  68552816 53333926   56%   /
devfs            213Ki  213Ki    0Bi   100%       736        0  100%   /dev
s3fs@fuse0       64Gi    0Bi   64Gi     0%         0        0  100%   /mnt

umountは通常通りumount マウントポイントで行けます。

$ umount /mnt
$ df
Filesystem       Size   Used  Avail Capacity   iused    ifree %iused  Mounted on
/dev/disk0s2     465Gi  261Gi  203Gi    57%  68552816 53333926   56%   /
devfs            213Ki  213Ki    0Bi   100%       736        0  100%   /dev

オプションは以下の様なものが有ります。

  • allow_other  他のユーザーでの利用を許可する
  • url HTTPSで通信したい場合に利用(url=https://s3.amazonaws.com)

s3fs-cloudpackインストール時の色々な問題等

$ curl -OL https://github.com/memorycraft/s3fs-cloudpack/tarball/master
$ tar xvzf master & cd memorycraft-s3fs-cloudpack-a5e4da3/
$ chmod 755 configure
$ ./configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

s3fs-cloudpackの./configure時にpkgconfigがないというエラー。 確かにpkgconfigが無さそうだったのでソースからインストール

後で調べたらbrewでインストール出来ました。brew install pkgconfig

$ curl http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz -o pkgconfig.tgz
$ tar -zxf pkgconfig.tgz && cd pkg-config-0.28
$ ./configure 

configure: error: Either a previously installed pkg-config or "glib-2.0 >= 2.16" could 
not be found. Please set GLIB_CFLAGS and GLIB_LIBS to the correct values or pass 
--with-internal-glib to configure to use the bundled copy.

※./configureのエラー
$ ./configure --with-internal-glib && make install

ここで再度./configureを実行。今度はlibcurlとlibxml2.0が無いというエラー。 この時点で既にインストールしていたがbrewを使ったインストールだとpkgconfig が参照する情報が所定の場所に配置されない為エラーになるとの事

参考:macでspdylayのbuildもくしくはhomebrewとpkg-config

pkg-config は環境ごとのライブラリがどこにあるのかを探すためのツール。
spdylay もビルド時に、そのマシンのライブラリをどっから取ってくるのかを pkg-config で調べている。
brew で入れた zlib には pkgconfig 用のファイルがあったので、楽そうだからそれを使った。
自分の環境では
/usr/local/Cellar/zlib/1.2.7/lib/pkgconfig/zlib.pc がそれにあたる。
これを以下に置けば良い。
/usr/lib/pkgconfig

libcurlとlibxml2.0のpkgconfig向けの情報を配置する。

$ sudo ln -s /usr/local/Cellar/libxml2/2.9.2/lib/pkgconfig/libxml-2.0.pc  /usr/local/lib/pkgconfig
$ sudo ln -s /usr/local/Cellar/curl/7.44.0/lib/pkgconfig/libcurl.pc /usr/local/lib/pkgconfig

これでやっと./configureが通る。そしてmakeでまたエラー。 今度はXcodeのgcc辺りでエラーになってるっぽい。Xcodeのgccが古いバージョンのせいで使えない関数 使ったりとかそんな感じのエラーが出てたので、gccのバージョンを新しいのに入れ替える。

参考:Homebrewでgcc4.7を入れる

$ brew doctor
  # brew doctorでエラーが出ないことが条件との事。warningはいくつか出たがエラーは
  # 出なかった為とりあえず実行。

$ brew tap homebrew/versions
$ brew install gcc47
$ sudo mv /usr/bin/gcc /usr/bin/gcc.old
$ sudo mv /usr/bin/g++ /usr/bin/g++.old
$ sudo ln -sf /usr/local/bin/gcc-4.7 /usr/bin/gcc
$ sudo ln -sf /usr/local/bin/g++-4.7 /usr/bin/g++

ここまでやってやっとmake & make install出来ました。

###参考

git cloneでSSL証明書エラーが出た時の対処

Mac系に関する情報源

とりあえず今回やった対処法としては

  1. http://curl.haxx.se/からcacert.pemを持ってくる(←何かはまだ解ってない::2016/05/04)

  2. /usr/share/curl/を作る。自分の環境で箱のディレクトリが無かった。
    他のディレクトリでも多分問題ない?

  3. cacert.pemを/usr/share/curl/curl-ca-budle.crtとしてコピーしてくる

  4. git config/usr/share/curl/curl-ca-bundle.crtの場所をhttp.sslcainfoとして指定する。

    sudo git config --global http.sslcainfo /usr/share/curl/curl-ca-bundle.crt

以上でgit cloneは出来る様になりました。

尚、理屈と具体的な解説は以下で

SSL通信時発生する証明書エラーとその仕組みを理解する

CAのダウンロード先

その他の情報源

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment