Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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
You can’t perform that action at this time.