Lucy’s blog

プログラムで気になったことの覚書

macでKHcoderを入れようとしたらつまづいたのでメモ

人に説明するために見やすい感じにテキストマイニングしてみたいなと思って(下の記事に触発されて)KHcoderを入れてみました。
prehyou2015.hatenablog.com

===
環境
macOS Sierra 10.12.6
===

こちらの記事を参考にKHcoderを入れようとしたところ、cpanmでPermission deniedが出てつまづいたので覚書です。
qiita.com

HomebrewとRは入っていたので、mecabmysqlを入れました。

mecabインストール

$ brew search mecab
 mecab
 mecab mecab-ipadic
$ brew install mecab
$ brew install mecab-ipadic
$ mecab
常春の国マリネラ
常春	名詞,一般,*,*,*,*,常春,トコハル,トコハル
の	助詞,連体化,*,*,*,*,の,ノ,ノ
国	名詞,一般,*,*,*,*,国,クニ,クニ
マリネラ	名詞,一般,*,*,*,*,*
EOS

mysqlインストール

$ brew update
$ brew install mysql
$ brew info mysql

私の場合は5.7.21が入りました。

mysqlを起動します。

$ mysql.server start
Starting MySQL
 SUCCESS!

パスワードも設定しました。

$ mysql_secure_installation

今後はパスワードを入力して立ち上げます。

$ mysql -uroot -p
Enter password:[設定したパスワード]

curlでcpanmをインストール

$ cd /usr/bin/
$ sudo curl -LOk http://xrl.us/cpanm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   216    0   216    0     0    403      0 --:--:-- --:--:-- --:--:--   403
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   131  100   131    0     0     93      0  0:00:01  0:00:01 --:--:--   341
Warning: Failed to create the file cpanm: Operation not permitted
  0  298k    0  1918    0     0   1302      0  0:03:54  0:00:01  0:03:53  1302
curl: (23) Failed writing body (0 != 1918)

sudoなのに Operation not permitted...? と思って調べててみると、
どうやらmacのセキュリティ機能によるデフォルトの設定のようです。
こちらの記事を参考にさせていただきました。
qiita.com

まとめると、
1.Macを再起動させます。
2.立ち上がる時に、command + R を押し続けてリカバリーモードで起動します。
3.ユーティリティからターミナルを起動します。
4.以下のコマンドを打ちます。

$ csrutil status
System Integrity Protection status: enabled. 

enabledになっていると/usr/binにrootでも書き込みができないようです。

$ csrutil disable
Successfully disabled System Integrity Protection. Please resart the machine for the changes to take effect.

再起動します。これで書き込めるようになっているはずです。

$ reboot


もういちどcurlを実行すると、成功しました。

$ sudo curl -LOk http://xrl.us/cpanm
Password:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   216    0   216    0     0    368      0 --:--:-- --:--:-- --:--:--   369
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   131  100   131    0     0     97      0  0:00:01  0:00:01 --:--:--   350
100  298k  100  298k    0     0   203k      0  0:00:01  0:00:01 --:--:--  203k

実行権限を与えておきます。

$ sudo chmod +x cpanm

KHcoderをダウンロード

ここからソースコードをダウンロードして任意の場所に展開します。
私もApplications以下に配置してやってみました。
http://khc.sourceforge.net/dl.html

展開したフォルダに移動します。

cd /Applications/kh_coder/

KHcoderを起動します。

perl kh_coder.pl

perlモジュールの追加

perlモジュールが足りないと文句を言われるので追加していきます。
私は以下のモジュールを入れました。

sudo cpanm Jcode
sudo cpanm Tk
sudo cpanm DBD::CSV
sudo cpanm Spreadsheet::ParseExcel
sudo cpanm Spreadsheet::WriteExcel
sudo cpanm Unicode::String
sudo cpanm DBD::mysql
sudo cpanm Spreadsheet::XLSX
sudo cpanm Spreadsheet::ParseXLSX
sudo cpanm Clipboard
sudo cpanm Statistics::Lite
sudo cpanm Algorithm::NaiveBayes
sudo cpanm Net::Telnet
sudo cpanm YAML
sudo cpanm Text::Iconv

igraphというパッケージは最新バージョンに対応していないらしいので古いものをDLしてきました。
Index of /src/contrib/Archive/igraph
ほかのパッケージと同じ場所に置いて、Rコンソールでインストールします。

install.packages("/Library/Frameworks/R.framework/Versions/3.4/Resources/library/igraph_0.7.1.tar.gz", repos = NULL)

Tkのインストール

Tkを入れるときに以下のエラーが出たので、
! Configure failed for Tk-804.034.
調べたところ、ActivePerlというのを入れないといけないらしいです。
あと、XcodeとXQuartzも必要のようです。

・以下のページからActivePerlをDLします。
https://www.activestate.com/activeperl
・XQuartzをインストール
XQuartz
Xcodeをインストール(appストアから)

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料

ActivePerlのPATHを追加します。

$ export PATH=/usr/local/ActivePerl-5.20/bin:$PATH

X11をリンクさせる

$ sudo ln -s /opt/X11 /usr/X11

Rのパッケージを導入

RコンソールでRのパッケージを導入しました。

install.packages("RColorBrewer")
install.packages("wordcloud")
install.packages("amap")
install.packages("ggdendro")
install.packages("maptools")
install.packages("ade4")
install.packages("scatterplot3d")

設定を反映させるため必要に応じてPCを再起動しておきます。

再びKHcoderを起動してみます。

cd /Applications/kh_coder/
perl kh_coder.pl

やっとこさ立ち上がりました。
f:id:harutaromaru:20180227112855p:plain



しかし実行してみると以下のエラーが出るので、ターミナルの言語環境をSJISに変更してから起動しないといけないみたいです。
ターミナルのデフォルト言語環境はUTF8です。
ターミナル > 環境設定 > プロファイル > 詳細
f:id:harutaromaru:20180227140308p:plain

Warning message:
In Sys.setlocale(category = "LC_ALL", locale = "ja_JP.EUC-JP") :
  OS reports request to set locale to "ja_JP.EUC-JP" cannot be honored


さらにさらに、新規プロジェクトでファイルを開こうとすると、
MySQLのデータベースの処理に失敗しました。KH Coderを終了します。List DBs」のエラーが出ます。
この掲示板の質問と作者先生の回答にあるとおり、configフォルダのcoder.iniファイルでsql_usernameとsql_passwordの設定をします。
KH Coder 掲示板
ターミナルとXQuartz再起動したらちゃんと読み込んでくれました。

ちなみにMySQLでHOST名を確認する手順は以下の通りです。

$ mysql.server start
$ mysql -uroot -p
mysql> SELECT Host, User FROM mysql.user;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+

使用感は次回書きます。