2016年11月2日水曜日

Homebrewを使ったpyenvのセットアップ(El Captan+zsh)

Homebrewを使ったzsh+prezto環境でのpyenvの構築手順メモ。

1. pyenvのインストール
$ brew update
$ brew install pyenv

2. 環境変数の設定
.zshrcに以下の行を追加する。Preztoの場合はどこに独自設定を書けばいいんだろうと思ったんだけど、普通に.zshrcに書けばいいらしいからPreztoはあんまり関係なかった。

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
3. python環境のインストール
デフォルトで使えるバージョンはsystemのみ。
追加できるバージョンは以下で確認できる。
$ pyenv install -l
で確認したあと、
$ pyenv install 2.7.12
みたいにして任意のバージョンをインストールする。 pyenv環境にインストールすみのバージョンは
$ pyenv versions
で確認できる。 任意のディレクトリで
$ pyenv local 2.7.12
のようにすると、そのディレクトリに.python-versionというファイルが作られ、これが反映されてそのディレクトリ内でpythonコマンドを実行した時だけそのバージョンのPythonで実行されるようになり、ディレクトリを抜けるとglobalなpythonのバージョンに自動で切り替わる。globalなバージョンを変更するときは
$ pyenv global 2.7.12
とすると、ローカルに.python-versionがないディレクトリで実行される(globalな)pythonのバージョンを設定できる。

pyenv installでエラーになるときの対応

macOS(正確にはEl Capitan)のpyenvで特定のバージョンのpythonをインストールしようとしたときにエラーになることがありました。曰く:

$ pyenv install 2.7.12                                                                                                               +[master]Downloading Python-2.7.12.tar.xz...-> https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xzInstalling Python-2.7.12...ERROR: The Python zlib extension was not compiled. Missing the zlib?
Please consult to the Wiki page to fix the problem.https://github.com/yyuu/pyenv/wiki/Common-build-problems

調べると、 zlibのヘッダが見つかってないのでCFLAGS環境変数を設定するか、xcode-select --install を実行してXCodeコマンドラインツールを再度設定するとのこと(OSをアップグレードした後とかは必要だそう)。

今回はxcode-selectのほうを試して正常にインストールできるようになりました。
$ xcode-select --install   
として出てくるダイアログ経由でXcodeのコマンドラインツールをインストールしたあと、
$ pyenv install 2.7.12                                                                                                               +[master]Downloading Python-2.7.12.tar.xz...-> https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xzInstalling Python-2.7.12...Installed Python-2.7.12 to /Users/Kurosawa_Hiroyuki/.pyenv/versions/2.7.12 

としてインストールが成功するようになりました。

2016年7月1日金曜日

macOSのdocker toolboxをproxy環境下で使うために必要だった設定

proxy環境下でdocker toolboxを使った場合に必要だった設定のメモ
具体的には2つ別の設定をする必要があったのでメモ。
良く考えればそうなんだけど、そもそもの構成を理解してなかったというのもある。



1.boot2docker内からproxy接続するための設定

以下のファイルを編集
$ sudo vi /var/lib/boot2docker/profile

export http_proxy=http://xxx.xxx.xxx.xxx:xxxx
...
みたいに書く。

その上で、
$ sudo /etc/init.d/docker restart

これでboot2docker内ではdockerコマンドが通るようになる
$ docker search hello-world
みたいな感じ

2.osx上のdockerコマンドがboot2dockerに接続するための設定
osx上のdockerコマンドは裏でデフォルト2376ポートでboot2dockerと通信することで
透過的なコマンドを実現しているようで(※)、これはproxyを介さないようにする必要がある。

proxy設定によっては不要なんだろうけれど、特定のポートしか許可してなかったりする場合にはこの設定が必要

具体的にはexport no_proxy=xxx.xxx.xxx.xxxのような感じで環境変数に設定する。
設定するIPアドレスは
$ docker-machine ls
のURLとか、
$ docker-machine env 環境名
のDOCKER_HOSTで出てくるIPアドレスが対象である。

<追記>
macOS上のipアドレスとVirtualbox上のipアドレスのマッピングは
VBoxManageコマンドで可能そう(まだ試してない)

https://skatsuta.github.io/2015/08/13/docker-machine-port-forwarding/

<さらに追記>
というかVirtualboxのGUIから普通にできたので通常はそれ使えばいいと思った。

2015年8月20日木曜日

Google Chrome 44でユーザ切り替えメニューを左上に戻す

以前の chrome://flags からは "enable-new-avatar-menu" の項目が消されてしまっていたので超不便になった。

chrome.exeの起動オプションで指定すれば依然、無効化することが可能
"<Chromeのパス>\chrome.exe" --disable-new-avatar-menu

2015年6月26日金曜日

Symfony2でテーブルからEntityを生成する方法

1.テーブルを作成・変更
 2.テーブルからマッピング情報を生成
$ app/console doctrine:mapping:import yml 
3.マッピング情報からEntityを生成 
$ app/console doctrine:generate:entities 
4.crudを生成 
$ app/console doctrine:generate:crud 
すでに存在する場合は--overwriteオプションで上書き

2015年2月13日金曜日

Raspbianでnetatalkを使ってTime Capsuleを使うインストールメモ

raspbianにおいてnetatalk3でtimemachineを使う方法。 といいつつまだうまく言っていないので途中経過。 必要パッケージインストール https://www.davidschlachter.com/misc/netatalk3rpi を参考にした $ sudo apt-get install avahi-daemon bison build-essential checkinstall cracklib-runtime db-util db5.1-util groff libacl1 libacl1-dev libattr1 libavahi-client-dev libavahi-client3 libavahi-common3 libc6 libcomerr2 libcrack2 libcrack2-dev libcups2 libdb-dev libdb5.1 libdbus-1-dev libdbus-glib-1-dev libevent-dev libgcc1 libgcrypt11-dev libgcrypt11 libglib2.0-dev libgnutls26 libgssapi-krb5-2 libk5crypto3 libkrb5-3 libkrb5-dev libldap-2.4-2 libldap2-dev libpam-cracklib libpam-modules libpam0g libpam0g-dev libssl-dev libtool libtracker-extract-0.14-0 libtracker-extract-0.14-dev libtracker-miner-0.14-0 libtracker-miner-0.14-dev libtracker-sparql-0.14-0 libtracker-sparql-0.14-dev libwrap0 libwrap0-dev lsof netbase perl procps quota rc systemtap-sdt-dev tracker tracker-explorer tracker-extract tracker-gui tracker-miner-fs tracker-utils zlib1g $ sudo git clone git://git.code.sf.net/p/netatalk/code netatalk $ sudo ./bootstrap spotlightサポートを有効にするには--with-tracker-pkgconfig-version=0.14の指定が必要らしい $ sudo ./configure --with-init-style=debian --with-tracker-pkgconfig-version=0.14 $ sudo make $ sudo make install mountコマンドで外付けディスクをマウント hfs+でジャーナリングが有効な場合にはreadonlyでしかマウントされないらしいので無効にする http://support.apple.com/ja-jp/HT2355 /usr/local/etc/afp.confを編集して、マウントしたディスクを指定 起動 $ /usr/local/etc/afp.conf <その他の参考> http://qiita.com/soramugi/items/cce8bb19aaa5604e0607 http://takuya-1st.hatenablog.jp/entry/2014/04/07/013519 http://netatalk.sourceforge.net/3.0/htmldocs/installation.html#compiling-netatalk https://www.davidschlachter.com/misc/netatalk3rpi

2015年1月29日木曜日

Pythonの要点だけ: proxy越しのpipでcertificate error

OSX上のPythonでproxy越しのpipでインストールを試みると、
Certificate Error: hostname '<PROXY>' doesn't match either of 〜 以下略
のようなエラーになって動かなくなっていました。

Python自体のバージョンが2.7.7だったので、2.7.9にアップデートしたところ解消したというメモ。

Homebrewを使っていたので
$ brew upgrade python
これでOKでした。