- Macの環境構築を自動化する
- 古いMacでgitした時にSSL証明書の認証?エラー
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
-
-
Save tamamushi/982bdb32e6150abc8398 to your computer and use it in GitHub Desktop.
Downloads for Apple Developersに行きCommand Line Toolsをダウンロードし、 インストールを実行する。インストールが完了したら以下のコマンドを実行。
$ sudo xcodebuild -license
パスワードを聞かれるので、login時のパスワードを入力し、最後に大文字の 「G」、その後「agree」で終了
参考:教授でもできる、Command Line Toolsのinstallation
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
homebrewをインストールしたらbrew doctor
で問題がないかをチェック
Your syste is ready brew.
が出ればインストール完了。 最新版へのアップデート
$ brew update
バージョンチェック
$ brew -v
brew-cask関連のコマンド実行時にrubyの2.0以上が必要になる為、rbenvでrubyの バージョン管理を出来るようにしつつ、最新のrubyに更新する。
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のバージョン
最新版のrubyをインストール
$ rbenv install 2.2.4 rbenvでrubyをインストール
$ rbenv global 2.2.4 インストールしたrubyをデフォルト設定
$ ruby -v バージョンの確認
参考:Homebrewのインストールとrbenvのインストールまで Mac編
-
brew-file
Homebrewでインストールしたパッケージを複数マシン間での 環境の同一維持にBrewfileを利用する際、Githubでファイル管理を 一元化する -
brew-cask
Homebrewを使ったGUIアプリのパッケージ管理ツール -
brew-version
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-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 [email protected]
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のパッケージを簡単に管理する
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
インストール環境 OS: MacOS X 10.9.2
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/fuse4x
とhomebrew/fuse/fuse4x-kext
でインストールできるようです。
参考:fuse4x - download page:latest version 0.9.2(2012/08/30 update)
参考:fuse4x faq
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)
$ 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のバージョンを新しいのに入れ替える。
$ 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出来ました。
###参考
- GithubのプライベートリポジトリからcloneするときにSSLエラーが出た場合の対応策
- またGithubからcloneするときにSSLエラーが出たので、DigiCertのSSL証明書を追加して解決
↑上2番目は一番目の問題解決後に再発した時に対応したもの。2番めを見る限り、1番目実行時期の問題?
とりあえず今回やった対処法としては
-
http://curl.haxx.se/からcacert.pemを持ってくる(←何かはまだ解ってない::2016/05/04)
-
/usr/share/curl/を作る。自分の環境で箱のディレクトリが無かった。
他のディレクトリでも多分問題ない? -
cacert.pemを/usr/share/curl/curl-ca-budle.crtとしてコピーしてくる
-
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
は出来る様になりました。
尚、理屈と具体的な解説は以下で
CAのダウンロード先