Archive for the ‘環境構築’ Category

(環境構築メモ) Mac OS X 10.11.x + Freemind + brew + gnuplot + Python 3.5.1 + virtualenv + scikit-learn + matplotlib + pandas + mecab + mecab-python

月曜日, 1月 11th, 2016

10.9からOS更新をサボっていたのですが、来年度から新入生相手にプログラミング教えることもあってなるべく同じ環境にしてた方がつまづくポイントを押さえておきやすいよねということで、バックアップ取ってから環境構築中です。昔はOS更新時にどのデータを移行するか選択できたのだけど、今はできないのね。細かいことを気にしないのであれば、ほぼOSアップデートするだけで済みました。

以下は比較的良く使うツール群(表題に列挙)を使えるようにするまでの道のりです。(学科専用のie-pedia的なものがあると嬉しいのかなと思いつつ、ブログにメモを残しておこう。


Freemind

これ使えないと泣けるぐらいには必須アプリ。もともとインストールしてあったのは0.9.0なんですが、起動しようとするとJRE1.6入れろと怒られます。アプリ自体を更新したら良いかと思って最新版1.1.0をインストールしてみるものの状況変わらず。1.6 or laterって書いてるのにー。仕方ないのでJRE1.6入れてみると、今度は1.1.0起動できず。0.9.0は起動できるようになったのでひとまずこれで済ますことに。


Xcode + Command Line Tools

  • Xcodeはインストール後に起動して「Xcode and iOS SDK License Agreement」にAgree。
  • その後、ターミナルから「xcode-select –install」で Command Line Toolsのインストール。

Homebrew

  • デフォルトの/usr/local以下を使うのは気持ちが悪いのでインストール先を /opt/homebrewに変更。ちなみに MacPorts の名残りで /opt/local も残ってたのだけど、これは消して置くのが正解でした。
sudo mkdir /opt/homebrew
cd /opt
sudo chown ${USER}:staff homebrew
curl -L https://github.com/Homebrew/homebrew/tarball/master | tar xz --strip 1 -C homebrew
brew update
brew upgrade
  • インストール後、PATHに/opt/homebrew/binを追加。

  • Gnuplot + AquaTerm + XQuartz

    brew install homebrew/dupes/libiconv
    brew link libiconv -force
    brew install gnuplot --with-aquaterm --with-x11
    

    Python 3.5 + virtualenv

    • 数ヶ月前に3.5を試した限りではトラブルが多かったけど、先月出てた3.5.1は大丈夫そう。ということで、本家サイトから最新版3.5.1をダウンロードしてインストール。
    • 標準のパッケージ管理ディレクトリにあれこれ追加インストールするのは使い勝手がよろしくないので virtualenv で環境作ってそこで作業。以下は実際には試していません(以前作業したものがそのまま使えた)。
    # virtualenv, virtualenvwrapperのインストール
    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
    
    # virtualenv の設定
    # ~/.zshrc に以下の設定を追加。
    # 下記if文で指定した WORKON_HOME に仮想環境が構築される。
    # 不要になったらここを削除しよう。
    if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
        export WORKON_HOME=$HOME/.virtualenvs
        source /usr/local/bin/virtualenvwrapper.sh
    fi
    
  • Python 3.5.1用の環境構築。ここではpy35という名前をつけています。正しく動くなら、買いコマンド実行後にプロンプトに (py35) が追加されるはず。
  • mkvirtualenv --python=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 py35
    

    scikit learn, matplotlib, pandasのインストール

    • インストールそのものはすぐ終わり。py35の環境で下記を実行するだけ。
    pip install -U numpy scipy matplotlib scikit-learn
    pip install pandas
    
  • ただしこのままではmatplotlibがうまく起動せず。~/.matplotlib/matplotlibrcに下記を設定すると良いらしい。
  • backend : TkAgg
    
  • ここまでにインストールしたパッケージのバージョン(pip freezeの結果)。
  • cycler==0.9.0
    matplotlib==1.5.1
    numpy==1.10.4
    pandas==0.17.1
    pyparsing==2.0.7
    python-dateutil==2.4.2
    pytz==2015.7
    scikit-learn==0.17
    scipy==0.16.1
    six==1.10.0
    wheel==0.24.0
    

    mecab + unidic + mecab-pythonのインストール

    brew install mecab
    brew install mecab-unidic
    
  • unidicを参照するように、/opt/homebrew/etc/mecabrc を以下のように編集。
  • dicdir = /opt/homebrew/lib/mecab/dic/unidic
    
  • mecabが/usr/local/etc/mecabrcを参照しちゃうので、そこにリンクを貼っておく。
  • ln -s /opt/homebrew/etc/mecabrc /usr/local/etc/mecabrc
    
  • mecab-python-0.996.tar.gzをダウンロードして、下記の通りsetup.pyを修正。
  • # 元の記述
    def cmd2(str):
        return string.split (cmd1(str))
    # 変更後
    def cmd2(str):
        return cmd1(str).split()
    
  • 下記の手順でmecab-pythonをインストール。
  • export CFLAGS=-Qunused-arguments
    export CPPFLAGS=-Qunused-arguments
    python setup.py build
    sudo python setup.py install
    

    注意点して、brew版mecabには-Ochasen出力オプションが無いらしい。このため、例えばここのコード例にあるように「mecab = MeCab.Tagger(‘-Ochasen’)」するとRuntimeErrorになります。-Ochasenを諦めて、「mecab = MeCab.Tagger()」として標準出力にした上で、ステミング時にはfs[6]参照してたところをfs[7]にすると良さそうです。少なくとも上記ページのコードはこれで動きました。

    半角スペース問題 (Visual Studio 2015 + .NET Micro Framework SDK)

    金曜日, 10月 16th, 2015

    Microsoftの IoT + M機械学習なワークショップイベントらしいIoT 初めの一歩~まずは試してみよう ‼ モノの接続からデータ分析までに参加してみようかと。参加してみようと思ったのは大分前ですが、科研費申請とかB3の仮配属チェックとか環境構築の手間(OS自体古い環境しないから環境構築するならOSから)とか、MicroUSBケーブル持ってないとかの積み重ねで足踏みが続いてました。過去形。

    いくつか大きいタスクを一時的に解消したので、気分転換兼ねて環境構築し始めたのが昨日。そんなに時間かからないだろうと高を括っていたのですが、休憩挟みつつ終わったのは24時過ぎ。しくしく。ハマったポイントをまとめつつ整理してみよう。

    ハマったポイントその1、学科ライセンス(DreamSpark)でのアカウント取得。パスワード失念してた(酷)ので再設定から。え、そこで躓くの?と自分でもびっくりですが、これがなかなかうまく再設定できず。パスワードに設定できる文字についての説明で「文字、'<',、、、を除く」みたいな記述をしてて「文字が使えない?」と謎だったんですが、最終的にはキャラクタも駄目で数字のみでどうにか通りました。「どうにか」がポイントで、最初そう解釈して数字だけでのパスワード設定しようとしても通らず。あれこれ試して数十分かけてもう一度再設定し直しから始めると、今度は数字のみパスワードで通るという。もう、意味不明です。

    ライセンスを取得してOSインストール。Visuau StudioもDream Sparkでいけるはずですが、なんとなく Community Edition をチョイスしてインストール。ここまでは問題無し。

    ハマったポイントその2、.NET Micro Framework SDKのインストール。結果的にはOSへのログインアカウント名に半角スペースが含まれることによるトラブル。気づいてみれば(納得したくないけど)納得できるけど、そもそもデフォルトアカウント名を半角スペースで作ったのはMS自身だぞ。。症状的には「netmfvs 14.vsixを起動しても何も反応しない」。グーグル先生にお伺いをした結果辿り着いたのがVS2015に.NET MicroFrameworkのテンプレートがつくれないで全く同じ症状でした。このページでは拡張子VSIXの関連付け(対応アプリへの紐付け)がおかしくなっていたという話ですが、

    あと、2015のVSIXInstallerはユーザーアカウント名によっては起動できないバグ(スペースが入っているとダメとか)があるので、ユーザー名が半角アルファベットのみのユーザーアカウントを作って試してみるとか。

    が合致してました。やめてくださいお願いします。。

    後はMicro USBケーブル買うの忘れなければ準備が終了だな。

    ソーシャル・ブックマークで(行く予定の)お店を管理

    月曜日, 9月 1st, 2014

    人気が出てるのか廃れつつあるのか、一部の「公開することに抵抗が無い」人たちだけに留まっているのか分かりませんが、ソーシャルブックマークなお話。

    個人的には2006,7年頃ぐらいからdelicious/NAL2を使ってて、そこがサイト移行前後あたりで動作怪しくなったタイミングからhatena/tnalを使うようになりました。データ移行もできたんだけど、何となくリフレッシュしたい気分だったので引き継いでません。deliciousも残ったままなので今でも見れるし。

    一般的なソーシャルブックマークの利点としては「自分and/or他の人がブクマしてる記事群から検索できる=単純に検索エンジン使うよりも質の高いページが見つかりやすい(はずだ)」というもの。今で言うイイネ!と一緒。FBと違うのは、ブックマーク管理機能しか無かった(最近はそうでもない)ぐらいか。ただし、FB同様に「botアカウントなりで偽装する」みたいなのはやっぱりあって、利用ユーザが中途半端に多くでもアレでソレ。だからGunosyみたいなリコメンド・サービスも出てるのは理解できなくはないです。

    個人的な使い方としては、okinawaタグ+recommendationタグとかタグを複数付けて後で見つけやすくしておいたり(naha+cafeとか、ginowan+foodとかあれこれ組み合わせ検索したり)、教えてもらったお店をatodeタグつけておいて後で行く時に探しやすくしたり。atodeタグは消化したら(実際に出かけたら)、感想次第でrecommendationに変更したり、ただatodeタグ消したり。食事以外だとslabタグで学生実験ネタになりそうだなと思うのを登録したり。

    あと、ブックマークじゃないですがgoogle mapsで美味しかったお店を登録してました(過去形)。もう数年単位で更新してないし、閉店しても削除したりしてないので古臭すぎるか。

    という感じであれこれ「登録する」というサービスは「どう使うか」次第でいろんなことに使えますね。というお話(なのか?)。

    PD2、NAL研週ゼミ、PostgreSQLリストア時のトラブル

    木曜日, 7月 3rd, 2014

    今日はPD2とNAL研週ゼミで、合間に昨日のPostgreSQLリストア時のトラブルをチェックしてました。大凡の目処が立って良かった。

    PD2の11回目は先週の続き。最終課題「情報工学科のCMを制作」に向けて各自のアイデアを考えて来てもらったのが先週の課題で、今週はそれを持ち寄り互いに披露し合って討論題材とし、目標像に落とし込むというのが目標でした。が、どこまでやれてるのかは謎か。実際問題として「一度決めたはずの目標像が進むにつれて*思ってたのと違う*」とか良くある話だし。それでも、決められた期間(時間)で収めることを前提に計画立てて行動し、躓いたならそれはどこか、何故そうなったのか、を経験して欲しいです。そのための実習形式課題なので。経験せずに済ませるなら適当にレポート書かせて終わりますが、それを求めている授業じゃないです。デザイン(設計)に関連した失敗を含む様々な経験をして欲しい

    PMで院生も来てたので河野研/長田研でのmercurial/gitlabの使い方を聞いてみたり。河野研は論文やソース等をmercurialで管理してて、論文ならそのリポジトリを先生に伝えてメール指導/直接pushで指導されたり、印刷して持ってくる場合には赤ペン先生したりとその時々でやりやすい形で指導してるらしい。こういう添削を一通りcommitログ化しておくと、添削システム作成用のデータセットにも使えそうではあるのだけど、明確な良し悪し以外のルール化は難しそう。長田研のこの間の勉強会話は、gitlab上でのコメントを使ってみ遊んだという話だったらしい。


    m_2014070309232753b5210fe90d4

    週ゼミは久しぶりに全員集合。最近は「まず院生の進捗確認&討論してから4年次に1回以上質問させる」という風にやってみてるのですが、院生にも予想外の質問が出て説明する練習になって良さげらしい。本当は自分からどしどし質問して欲しいのだけど、そうなる切っ掛け作りになるなら強制しても良いか。

    NNでの深層学習のDropout周りのアンサンブル学習効果について検証使用としている玉城くんは、まずはDropout率を変更してみての精度チェック。Dropout率が高くなる=稼働するユニット数が減ると「瞬間的な学習効果(1度の重み更新度合い)が高くなる」らしく、ユニット数が減った状態でBPしてるなら確かにそうかという話。当面はDropout自体に手を加えてみての検証をしてみる方向に。

    トピックモデルLDA結果へ「分かり易いラベル」を付けようとしている慶留間くんは、HDP-LDAで得られるトピック数と、その際のトピックの中身自体に疑問があるとのことで、自身でチェックできる分かり易いデータセットを構築して再建してみることに。

    小説読んだ際の感情を推定しようとしている平良くんは、認知評価を含めた(というか認知的評価を確認できる)アンケートを作成してみたので、検証できそうかを確認するため研究室メンバ内でもやってみてくれという報告。第一被験者になった人はありがとうございます(これからもお願いしますw)。


    m_2014070310432753b533cf9434d m_2014070310495953b53557e7dd0

    PostgreSQLのリストア問題は、

    • (1) pg_dump 時に owner 関連を含まないように dump させても alter owner するような SQL を出力しやがること。
    • (2) 古いPostgreSQLでのエンコーディング問題の逃げ方を参考に進めると、出力されるエラー行には何も問題が無いこと。(実際にはその前で別のエラーが出てたのだけど、それがなかなか再現しなかったために気付くのに時間がかかった)。
    • (3) pg_restore が素のSQLに対応していない(何でだよ)ので tar でやってたのだけど、エラー箇所が「行(とエンコーディングで問題あるんじゃない?というヒント)」しか出さないこと。(該当行を探すのにいちいち展開+関係しそうなファイル探し+該当行チェック、という手順を踏む必要がある)

    で、ようやく問題特定できたので、修正できるようになりました。どのぐらい修正箇所あるか分からないけど、素直に delete しまくった方が早い気がしなくもない。もともと綺麗なデータセットではないので多少データ件数減っても問題無いし。ま、続きは明日やろう。この辺りの問題は MySQL では一度も遭遇したことがないので、個人的にDB構築するなら二度と PostgreSQL は触りたくないな。と思えるぐらいには面倒くさい。。

    トランセンデンス->ゲームAI、古いPostgreSQL周りのエンコーディングトラブル

    水曜日, 7月 2nd, 2014

    トランセンデンスはまだ見てません(前置き)。

    今日は短めの会議が一件あっただけで他は空いてた一日でした。オープンキャンパスの方も基本的には資料作成を一応終えている(チェック待ち)し。ということで午前中は読みたかった記事やらをあれこれチェック。

    人工知能が意識を持つのは遠くない? – 「トランセンデンス」トークイベントは技術的特異点に因んだテーマにもなっている映画「トランセンデンス」の紹介記事というか、逆方向の記事らしい。特異点のキーでもある「汎用人工知能(Artificial General Intelligence; AGI)」はここでいろいろ話も進めているらしい。人工知能学会も最近特集が出てました。毛色が大分変わりますが、ゲームの中の人工知能なる三宅先生のスライドや関聯論文が。ゲームの進化と共に進化が求められたNPCの「表向きに見える歴史」と「裏側を支えて来た歴史」がずらずら出てきて面白い。

    午後は堀川くんのツイート収集スクリプトを別サーバに移行しようと四苦八苦してました。いや、まだ現在進行形か。一応目処が付きつつありますが、古いPostgresには encoding 周りのバグが残ってるらしく、こんな感じでチェックしながら対応せざるをえない雰囲気。ちなみに今回は「同一バージョンでの dump&restore」なんだけど、同じ状況です。しくしく。古いバージョンに残ってるなら、今のバージョンに頑張って restore しても後でまた問題が出てくるので、一度 Postgres 最新版をインストールしてからにした方が良さげか。

    というか一番時間かかったのはスキーマ dump->restore するだけで何故か失敗してたこと。ここはencoding関係ないけど「validじゃない」と言われ続けてた。mysqlだとdump&restoreでつまづいた記憶は一度もないんだけどな。。

    Mac OS X 10.9 から Finder の反応が遅い?

    日曜日, 2月 2nd, 2014

    Mac OS X 10.9にアップグレードしてから、何やら Finder さんがとても重い。新しくFinder開こうとすると数秒かかることも。えー。

    ということであれこれググったら割と良くある状況っぽい。例えばApple側でも同じ対処を案内みたいな話も出ているらしい(この方法の出典は見つけられず)。で、こっちの方法は試してみても「ちょっと改善するけどまだまだ遅いし、そもそもリストは使いづらい」ということで個人的にはNG。

    osx 10.9 finder slow ぐらいでググるとHow to Disable App Nap in OS X Mavericksなページが。バックグラウンドにあるアプリの消費エネルギーを抑えるために App Nap が導入されてて、これを消せば何とかなるんじゃないかとか書いてる記事がいくつかちらほら。具体的には

    sudo defaults write com.apple.Finder NSAppSleepDisabled -bool YES
    

    という具合。上記でオフにしてOS再起動すると気にならないぐらいには改善。CPU使用率眺める限りでは無駄にエネルギー食ってる風でもなさげだし、取りあえずこれで良いか。

    MBP新装&OSアップグレード

    月曜日, 1月 20th, 2014

    ノートPC本体とOSメジャーアップデート(10.8.x->10.9.x)を同時にやったのでどちらの影響か分からないですが、気になる点がちらほら。

    • 通知: 超絶うざい機能。うざいので10.8時に全部OFFしてたのだけど、多くがONに戻ってた。移行アシスタントの問題? 設定し直すのは良いけど「全部OFF」かアプリ単位でのOFFぐらいは欲しい。アプリ毎に通知方法毎にOFFするとか面倒。更にアプリ毎に「Mail.app初起動すると新たに通知設定される(のでまた設定しないといけない)」のは大分頭に来る。
    • 解像度: 17インチ1920×1200から15インチ2880×1800(疑似1920×1200)。基本的には17インチに近い感覚で使用できてるか。PDF論文を見開きでも読める。
    • 重量: 3.4kg(カバー付き)->2.0kg。流石にこれだけ軽くなるのは嬉しいですが、やっぱり17インチ欲しいですAppleさん。
    • 電源: MagSafe->MagSafe 2になって、磁力が大分強くなった? 外れ難くなったら Safe じゃないと思うんだが。それとも古い方が磁力弱まってるだけなんだろうか。
    • miniDisplayPort -> Thunderbolt: あれ、miniDisplayなポート無くなったの?? と思ったらThunderboltが互換になってたのね。公式サイトでオプション販売してたのに挿せないの?と怒髪するところでした。
    • メール.app: 添付ファイルをクイックルックするために2回クリックしないといけないって全然クイックじゃない。。
    • カレンダー.app: メジャーアップデートの度に使いづらく(スケジュール登録するためのアクション数が増えてる)なってるなぁ。ただし、7.0から「returnキーで確定終了」できるようになったのは許す。前々回までそれでできてたのが前回できなくなり、今回復活しただけなんだけど。
    • マップ.app: 一度起動してぐりぐり動かしてDockから削除しました。
    • アクティビティモニタ.app: CPU使用率ビューを拡大縮小できるようにして欲しい。
    • Mission Control: 「ウインドウをアプリケーション毎にグループ化」しておくと「Command+Space」で同一アプリ内の複数ウインドウをスイッチできるのだけど、一部で具合が悪い。気づいたのは Mail.app。メール単体のウィンドウ同士ではスイッチできるけど、Mail.app本体に移ると「そこで選択してるメールの最下部」まで移動するモードになってしまう。最下部まで移動したらまた個別ウインドウにスイッチできるんだけど、そうじゃないって。
    • scikit-learn, scipy, numpy / Python: 標準インストールされてるPythonはまだ2.7系列らしい。それはともかく、scikit-leanがライブラリからなくなってたというか、標準で numpy, scipy が入るようになったのね。import numpy できたのでライブラリ周りが丸々コピーされたのかと勘違いしてました。微妙に easy_install / pip / setuptools / distribute あたりのバージョンの整合性取れてないのが困りものだけど、一度全ライブラリ抹消して作り直した方が良いのかしら。今回は「sudo easy_install distribute」で更新して様子見。setuptools は更新止まり気味で、distribute に移行しつつあるらしい。
    • スクロール操作がたまにおかしい?。再現状況がまだ確定できないけど「2画面(miniDisplay利用)+ミラーリング無し+非アクティブなウインドウのスクロール」を操作しようとするとできないことがたまに。具体的にはPDFを別モニタに出力しておいて、ノートPC側モニタで別アプリをアクティブ・ウインドウ(メモ書きとか)にしてる状況。PDF/プレビュー.app側をアクティブにし直すと直る事もあるし、それぐらいじゃ直らないことも。いまいち再現条件が良く分からないな。
    • miniDisplay接続先のモニタ・ビュー(操作スペース)が1つしかない。10.8まではPC側の操作スペース毎に外部接続の操作スペースが個別に用意されていたのだけど、10.9では操作スペースを移動してもminiDisplay側は変わらない(何を言ってるか伝わらなさそう)。これは不便。
    • テキストエディット.app: ダブルクォーテーション等が勝手に違うコードに変換されるなと思ったら「スマート引用符」とかのスマートhogeが追加されてるらしい。余計な事をしなくて良いのに。
    • スリープ: 復帰スピードがMBP17+10.8と比較して圧倒的に遅くなった。MBP17ではディスプレイを開いてる間に既に大抵復帰し終えてるのが、MBP15+10.9は「あれ、ひょっとしてバッテリー0%?」と勘違いすることもあるぐらい遅い。復帰スピードの幅も広く、体感で3〜10倍は遅い。

    Xbench 1.3でのベンチマーク結果は以下の通り。グラフィックス周りはOpenGLでは3倍近く上がってますが、Quartzは0.5倍ぐらいになっちゃってるな。Retinaに最適化されてないだけ?

    本体 MacBook Pro 17-inch, Mid 2009 MacBook Pro 15-inch, Late 2013
    CPU 2.8 GHz Intel Core 2 Duo 2.3 GHz Intel Core i7
    メモリ 4 GB 1067 MHz DDR3 16 GB 1600 MHz DDR3
    グラフィックス NVIDIA GeForce 9400M 256 MB NVIDIA GeForce GT 750M 2048 MB
    OS OS X 10.8.5 OS X 10.9.1
    Results 229.31 339.31
    System info
    Xbench Version 1.3 1.3
    System Version 10.8.5 (12F45) 10.9.1 (13B3116)
    Physical RAM 4096 MB 16384 MB
    Model MacBookPro5,2 MacBookPro11,3
    Drive Type APPLE SSD TS256A APPLE SSD SM1024F
    CPU Test 199.82 341.71
     GCD Loop 327.80 17.28 Mops/sec 326.66 17.22 Mops/sec
     Floating Point Basic 158.61 3.77 Gflop/sec 277.46 6.59 Gflop/sec
     vecLib FFT 133.21 4.39 Gflop/sec 294.76 9.72 Gflop/sec
     Floating Point Library 316.87 55.18 Mops/sec 606.93 105.68 Mops/sec
    Memory Test 203.52 773.55
     System 281.70 773.17
      Allocate 1416.57 5.20 Malloc/sec 2493.63 9.16 Malloc/sec
      Fill 186.86 9085.63 MB/sec 473.82 23038.07 MB/sec
      Copy 217.75 4497.64 MB/sec 730.69 15092.07 MB/sec
     Stream 159.30 773.94
      Copy 151.14 3121.71 MB/sec 847.44 17503.62 MB/sec
      Scale 156.73 3237.91 MB/sec 728.56 15051.89 MB/sec
      Add 165.04 3515.70 MB/sec 808.19 17216.23 MB/sec
      Triad 165.20 3534.09 MB/sec 725.44 15518.89 MB/sec
    Quartz Graphics Test 311.15 173.26
     Line 339.32 22.59 Klines/sec [50% alpha] 209.57 13.95 Klines/sec [50% alpha]
     Rectangle 369.59 110.34 Krects/sec [50% alpha] 188.27 56.21 Krects/sec [50% alpha]
     Circle 284.30 23.17 Kcircles/sec [50% alpha] 170.64 13.91 Kcircles/sec [50% alpha]
     Bezier 286.74 7.23 Kbeziers/sec [50% alpha] 169.42 4.27 Kbeziers/sec [50% alpha]
     Text 293.09 18.33 Kchars/sec 142.62 8.92 Kchars/sec
    OpenGL Graphics Test 118.56 330.56
     Spinning Squares 118.56 150.39 frames/sec 330.56 419.33 frames/sec
    User Interface Test 154.12 276.47
     Elements 154.12 707.31 refresh/sec 276.47 1.27 Krefresh/sec
    Disk Test 209.80 952.55
     Sequential 139.62 662.08
      Uncached Write 187.01 114.82 MB/sec [4K blocks] 1871.65 1149.17 MB/sec [4K blocks]
      Uncached Write 163.03 92.24 MB/sec [256K blocks] 817.84 462.73 MB/sec [256K blocks]
      Uncached Read 77.91 22.80 MB/sec [4K blocks] 297.37 87.03 MB/sec [4K blocks]
      Uncached Read 230.82 116.01 MB/sec [256K blocks] 1085.01 545.32 MB/sec [256K blocks]
     Random 421.80 1697.09
      Uncached Write 281.62 29.81 MB/sec [4K blocks] 1221.69 129.33 MB/sec [4K blocks]
      Uncached Write 305.23 97.71 MB/sec [256K blocks] 1595.67 510.83 MB/sec [256K blocks]
      Uncached Read 1183.84 8.39 MB/sec [4K blocks] 3602.13 25.53 MB/sec [4K blocks]
      Uncached Read 552.06 102.44 MB/sec [256K blocks] 1576.96 292.62 MB/sec [256K blocks]

    Installing Octave 3.6.4 on Mac OS X 10.8.4 with MacPorts

    土曜日, 6月 15th, 2013

    Matlab / Octave 用に書かれたソースがあって、動作確認しながら勉強してみるかということで Octave インストールしてみようとしたものの、homebrew, MacPorts, Fink どれでもすんなりはインストールできなかったので、試行錯誤してインストールした記録を残しておきます。

    以下は XcodeCommand Line ToolsXQuartz (X11)、そしてMacPortsをインストールしたばかりの状態からの手続きです。ちなみにこれだけで /opt が 3.1G になります。わーい。

    途中、epstool が自動インストールできずに中断されてしまっているんですが、理由が良く分からないな。


    試した環境

    OS: Mac OS X 10.8.4
    Xcode: 4.6.3
    MacPorts: 2.1.3
    Octave: 3.6.4


    Octaveインストールの手順

    # 1回目の octave-devel インストール(途中で死ぬ)。
    % sudo port install octave-devel +atlas+docs

    # エラー1回目

    —> Installing python27 @2.7.5_0
    —> Activating python27 @2.7.5_0
    Error: org.macports.activate for port python27 returned: Image error: /Applications/MacPorts/Python 2.7/Build Applet.app/Contents/Info.plist already exists and does not belong to a registered port. Unable to activate port python27. Use ‘port -f activate python27’ to force the activation.
    Error: Failed to install python27

    # 指示通りに無理矢理 activate する。
    % sudo port -f activate python27

    To make python 2.7 the default (i.e. the version you get when you run ‘python’),
    please run:

    sudo port select –set python python27

    # 指示通りにデフォルトを python27 にする。
    % sudo port select –set python python27


    # python27 周りの問題を解決できたので、
    # octave-devel インストールの続き。(2回目)

    % sudo port install octave-devel +atlas+docs

    # エラー2回目

    —> Installing aquaterm @1.1.1_0
    —> Activating aquaterm @1.1.1_0
    Error: org.macports.activate for port aquaterm returned: Image error: /Applications/MacPorts/AquaTerm.app/Contents/Info.plist already exists and does not belong to a registered port. Unable to activate port aquaterm. Use ‘port -f activate aquaterm’ to force the activation.
    Error: Failed to install aquaterm

    # 指示通りに無理矢理 activate する。
    % sudo port -f activate aquaterm


    # aquaterm 周りの問題を解決できたので、
    # octave-devel インストールの続き。(3回目)

    % sudo port install octave-devel +atlas+docs

    # エラー3回目

    Error: The following dependencies were not installed: epstool ghostscript xorg-libXext xorg-libX11 xorg-libxcb doxygen graphviz gd2 xpm xorg-libXt libLASi pango Xft2 xrender cairo xorg-xcb-util gobject-introspection harfbuzz xorg-libXaw groff xorg-libXmu texlive texlive-basic texlive-bin poppler xorg-libXp texlive-documentation-base texlive-bin-extra dvipng latexmk texlive-latex pdfjam texlive-latex-recommended pgf texlive-context texlive-fonts-recommended texlive-math-extra texlive-metapost texlive-xetex texlive-generic-recommended texlive-documentation-english texlive-fontutils lcdf-typetools ps2eps texlive-lang-czechslovak texlive-lang-dutch texlive-lang-english texlive-lang-french texlive-lang-german texlive-lang-italian texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish texlive-luatex texlive-latex-extra texlive-pictures gnuplot pstoedit ImageMagick transfig

    # 依存関係の都合でインストールできなかったパッケージ一覧の、
    # 一番最初に出てきたパッケージ epstool を個別にインストールしてみる。

    % sudo port install epstool

    # epstool をインストールできたので、
    # octave-devel インストールの続き。(4回目)

    % sudo port install octave-devel +atlas+docs
    # -> 終了。

    Mac OS X 10.7.5 -> 10.8.2 アップグレードメモ(感想、mecab、libsvm周り)

    月曜日, 2月 11th, 2013

    実際に作業してたのは金曜日の話ですが、レポート採点、(主査分の)修論指導に目処が付いたということもあって、バックアップとってから隙間時間にOSアップグレードしてみました。これでようやく 10.8.x系 Mountain Lion です。

    Xcode本体は残ってるけど Command Line Tools は入れ直す必要があるけど、それ以外の開発関連ライブラリは残っているしそのまま使えているっぽい。そういう点では10.6->10.7ほど大きなギャップは無いらしい。mecab/libsvmあたりを入れ直してみても良さそうではあるけど、それはまたの機会にしておこう。

    • gcc が消えてたので Xcode -> Preferences -> Downloads -> Command Line Tools からインストール。gccのバージョンは「i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)」らしい。iOS Simulator は取りあえず放置。普段使って無いし。
    • Javaはどうなのかと「java -version」したら

      No Java runtime present, requesting install.

      と言われて、ソフトウェア・アップデートが起動してそのままJavaのインストールが始まった。デフォルトでインストールされるバージョンは「java version “1.6.0_37″」らしい。って古いままなのか。

    • 折角の機会なのでJDK 7 Installation for Mac OS Xの通りにJDK 7インストール&デフォルトバージョンとして指定しておこう。と思ったら新版インストールしたらデフォルトで新しい方が選択される。変更したい時は/usr/libexec/java_homeを使うのね。
    • 前回10.7系にアップグレードした時はpythonのライブラリやmecabとかが消えてたのだけど、今回はどちらも残ったまま普通に使えているっぽい。mecabはMacPortで/opt/にインストールしてるから消える訳は無いけど、後でまたソースからインストールできないか試してみよう。
    • ということで開発環境はそれほど弄らずに移行できているらしい。
    • Spotlightの右側にある箇条書きアイコンは「通知」らしい。デフォルトでカレンダーの「今日の予定」が書かれてたのでそっちとの連携かと思ったらメール/リマインダー等々いくつかとの「通知」連携らしい。必要性を全く感じないので取りあえずカレンダーだけ残して暫くそのままに。
    • Mail.appは「送信メール」が送信済みだけじゃなくて受信箱側にもくるし、配送されてきたらそっちが優先表示されるのか。これならGmailでのMailman問題やGoogle Groupsでの問題は気にならなくなるか。ちゃんと配送されていれば、だけど。
    • Mail.appで、複数メールを選択した時に「各メールを少しずつ斜めにずらして重ねてるように描画する」のはOFFにできないのかなw
    • モニタの輝度が勝手に変わるなと思ったら「輝度を自動調節」がデフォルトでONになってるのか。邪魔なのでOFF。通常作業では輝度最低レベルで何も問題無いです。
    • キーボードのバックライトが点灯する設定に戻ってたのですが、オフィシャルな消し方が良く分からず。F5キーによる輝度調整で最低レベルに設定するのがオフィシャルなの?
    • (例えばテキストエディタ等で)ファイル保存する際に、ローカルディスクに加えてiCloudに保存するとかも直接指定できるのか。使い方次第では便利? ただし、全てのアプリに共通している機能ではないらしい。

    Mac OS X 10.6.8 -> 10.7.3 アップグレードメモ(感想、mecab、libsvm周り)

    木曜日, 3月 22nd, 2012

    今更ですが10.6.8から10.7.x系にアップグレードしました。

    10.6.8での開発環境に不具合出たのが切っ掛け。ここで原因追及するぐらいなら安定し始めてるかもしれない最新版でやってみようぐらいの気持ちで。作業前後でもリプライ頂いたのですが、Xcode3,4共存もできるみたいだし(参考: @shinji_kono先生@shima__shima先生)。

    あちこちはまったけど、特に分かり難かったのは python 周りのライブラリの導入方法。

    必要に応じてxcode-selectすること。

    通常easy_install or pip経由でインストールするか、ソース持ってきて手動で「python setup.py build; sudo python setup.py install」することになるけれども、そのままではこのbuildが通らない。多分クリーンインストールしてると問題なら無いと思うけど、私のように10.6.8からアップグレードしたケースでは10.6.sdkを参照しようとするので、次のように環境変数指定する必要があるっぽい。-archは必要無さそうだけど、念のため。「-L/opt/local/lib」はmacoprtsで入れたライブラリを参照させる場合の話で、そうじゃなければ適宜省略/編集すべし。

    % env CC=/usr/bin/gcc CFLAGS=”-O -g -isysroot /Developer/SDKs/MacOSX10.7.sdk -arch x86_64 -L/opt/local/lib” python setup.py build

    以下、時系列順に気になった点をメモ。


    • ダウンロード版は、ダウンロード後にすぐ起動してアップグレードするか否かだけの選択肢で進む。(10.5->10.6時には/Applications, /Users とか残すディレクトリを選択できた気がするのだけど、今回はそういう選択肢は用意されていない)
    • 「/Applications/Mac OS X Lion インストール.app」内のInstallESD.dmgでブートディスク作れるらしい。 QT Mac OX X Lionの起動ディスクの作成方法 – [モ]Modern Syntax
    • 上記アップグレードイメージは、アップグレード終了後には削除されてる。
    • アップグレード直後は動作がもっさりしてる気もするけど、裏でMail.appのデータ移行中なのでそれ次第かな。Spotlight周りもありそう。あと想像してたけどgcc消えたw
    • Mail.appはスレッド表示できるようになったのね。フォルダ上のどこにあってもスレッドとしてみれるのは嬉しい。(ヘッダしか見てないと思うから、これで意図的に2通使ってスパム表示させるとか何かやれそうな予感)
    • Finderは「環境設定」と「表示>ステータスバー」あたりで元表示に戻せる。
    • App Store経由でXcode4インストールすると、結構長時間「インストール中」のままになる。「購入済み」タブで進捗状況が見れる。
    • 終わったタイミングで「/Developer/Applications/Xcode.app」を起動するも、古いのが立ち上がる。ここでJava要求されるので、指示通りにインストール。(古いのが残ってるってことはgccも残ってる?)
    • Xcode4は「/Applications/Xcode.app」にインストールされる。起動後、起動すると古いのを消すかどうか聞かれます.あと,コマンドラインツールとかは起動後に Preferences > Downloads で別途インストールです.gcc は LLVM ですが… あと,場合によっては xcode-select を使う必要もあったりするらしい。
    • あれこれmecab, mecab-ipadic, libiconvと格闘するもmecabさんが文字化けしてしまう。
    • 手動で入れた「/usr/local/{lib,include}」側のlibiconvを参照すると、mecabコンパイル時点でこける(x86_64用のlibiconv_openとかが見つからないとかか宣う)。しかし、libiconv使うサンプルプログラムは普通にコンパイル通って実行も問題無し。一方、標準or古い「/usr/{lib,include}」側のlibiconvを参照すると、mecabはコンパイルできるものの、文字化け。参照方法をいくつか試してみても状況変わらず。ぐぬぬぬ。
    • 参考までにmacports側で入れたら正常に動くか確認してみようと「sudo port install mecab」するとXcodeが古すぎる(10.7.xならXcode4にしろ)と言われる。
    • 「xcode-select -print-path」で「/Developer」(Xcode3.xが入ってるトップディレクトリ)になってたので、「xcode-select -switch /Applications/Xcode.app」と指定すると「/Applications/Xcode.app/Contents/Developer」を参照するように。
    • これでport動くようになったのでmecabインストール。
    • % sudo port install mecab
      % sudo port install mecab-ipadic-utf8
      (このままだと /opt/local/lib/mecab/dic/ がeuc参照してるので変更)
      % cd /opt/local/lib/mecab/dic/
      % sudo ln -snf ipadic-utf8 sysdic

    • portで入れたmecabだと、これで文字化けせずに動く。手動コンパイルした方だと、「手動mecab+portのIPA辞書」でも「portのmecab+手動IPA辞書」でも化ける。手動コンパイルは両方とも不具合あるってこと?
    • ここでxcode-selectし直す前にlibiconv入れてた(それで問題無かったけど)ことに気付き、最後の一確認ということでlibiconv, mecab, ipadic をコンパイルし直してみる。が、/usr/local/以下のlibiconv参照するとやっぱりmecabのコンパイルでこける。/usr/以下のデフォルトだか古い環境の残り物だかを参照するとコンパイルできるけど、文字化け。ぐぬぬぬ。
    • 不具合のあるmecab, ipadicが邪魔にならないように make uninstall して暫く放置(portのほう使う)。
    • mecab-python(pythonバインディング)さんのインストール。普通に「python steup.py build」するとgcc-4.0とかMacOSX10.6.sdkを参照しちゃうので、build時に環境変数を指定してやる必要あり。なお、10.7.3からなのか、私の環境ではMacOSX10.7.sdkが/Applications/Xcode.app/以下のかなり深い場所にあったので、事前にlnしてからやってます。
    • % sudo ln -snf /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk /Developer/SDKs/MacOSX10.7.sdk
      % env CC=/usr/bin/gcc CFLAGS=”-O -g -isysroot /Developer/SDKs/MacOSX10.7.sdk -arch x86_64 -L/opt/local/lib” python setup.py build
      % sudo python setup.py install

    • RMeCabさんのインストール。といっても原則として「パッケージをインストールする」になっちゃって、そのソースパッケージでは「/usr/local/lib/libmecab.2.dylib」を参照してたりする。コンパイル済みでどうしようもないので、lnすることに。
    • % sudo ln -snf /opt/local/lib/libmecab.2.dylib /usr/local/lib/libmecab.2.dylib

    • libsvmさんのインストール。前回の通りに進めると「手順6 Python用 shared libraryのインストール」で「-sonameなんてオプション知らない」と言われる。ググった限りでは作成されるライブラリ名の指定っぽい。ここでサジェストされてるように-install_nameするとOK。手順7以降は前回の要領でやれました。
    • % cd python
      % c++ -shared -dynamiclib -Wl,-install_name,libsvm.so.2 ../svm.o -o libsvm.so.2
      % sudo cp libsvm.so.2 /usr/local/lib/


    多分、これでいろんなケースに対応できるんじゃないかと思うが。。。