ほんとのこと知りたいだけなのに。

夏休みはもうおわり。

Chef-zero のインストール

openSUSE 13.2 がリリースされるので 再インストールする必要があります。

最近、再インストールする回数も増えているので Chef を利用することにしました。

とりあえず今回はインストールだけしてみます。

インストール

Chef Development Kit

以下をダウンロード

Red Hat Enterprise Linux 7
Works on 64 bit (x86_64) versions of Red Hat Enterprise Linux and CentOS 7

サイトにしたがって以下のコマンドでインストール。

sudo rpm -Uvh chefdk-0.19.6-1.el7.x86_64.rpm

~/Downloads> sudo rpm -Uvh chefdk-0.19.6-1.el7.x86_64.rpm
root's password:
warning: chefdk-0.19.6-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:chefdk-0.19.6-1.el7              ################################# [100%]
Thank you for installing Chef Development Kit!

んでバージョンを確認する。

~/Downloads> chef --version
Chef Development Kit Version: 0.19.6
chef-client version: 12.15.19
delivery version: master (802e801d920ea6b6d48db735aa7c6e7a6194bea4)
berks version: 5.1.0
kitchen version: 1.13.2

knife-zeroをインストール。 なんか警告でてるけど無視。

~/Downloads> sudo chef gem install knife-zero
Fetching: knife-zero-1.17.1.gem (100%)
WARNING:  You don't have /root/.chefdk/gem/ruby/2.3.0/bin in your PATH,
      gem executables will not run.
Successfully installed knife-zero-1.17.1
1 gem installed

おわり

つぎはリポジトリを作って、ちょっと動かしてみるところまでやります。

OSインストール後のやつだと面倒です。

なのでユーザー追加後にいつも実施している内容を自動かしてみます。

参照

続・openSUSE に MeCab をインストール

先日 MeCab を xx 経由でインストールしましたが、どうやらこれではイマイチみたい。

openSUSE に MeCab をインストール

なので今回は再度インストールします。

発生した問題

libmecab-dev(かな?)相当のものがインストールされていないっぽい。

mecab-python3 をインストール中に mecab.h が無いと叱られた。

> sudo pip3 install mecab-python3
       : 
       : 
    MeCab_wrap.cxx:3052:19: fatal error: mecab.h: No such file or directory
     #include "mecab.h"
                       ^

MeCab 自体は動くんだけれども。。。。

再度インストール

それではインストール開始。

ダウンロード

本家 の以下のメニューにあるものをダウンロードする。

ダウンロード > MeCab 本体 > Source

解答&インストール

本家の方法ですんなりインストール。

Downloads> tar zxvf mecab-0.996.tar.gz
    :
mecab-0.996/Makefile.am
Downloads> cd mecab-0.996/
mecab-0.996> ./configure
    :
config.status: executing default commands
mecab-0.996> make
    :
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996'
mecab-0.996> make check
    :
==================
All 3 tests passed
==================
make[2]: Leaving directory '/home/somewrite/Downloads/mecab-0.996/tests'
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996/tests'
make[1]: Entering directory '/home/somewrite/Downloads/mecab-0.996'
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996'
mecab-0.996> sudo make install
    :
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996'
mecab-0.996> mecab -v
mecab of 0.994

ついでに mecab-python3 をインストール

問題なく通過

mecab-0.996> sudo pip install mecab-python3
Collecting mecab-python3
  Using cached mecab-python3-0.7.tar.gz
Installing collected packages: mecab-python3
  Running setup.py install for mecab-python3 ... done
Successfully installed mecab-python3-0.7

おわり。

はやく zypper でインストールできるようになると良いですね。

burgled-batteries をどのように利用するかを考えてみる。

Pythonのプログラムをどう動かすか。 ちょいと整理してみる。

github.com

概要

ストーリーとしては以下のような感じでしょうか。 このストーリーで実装してみます。

  1. Python でプログラムを書く。 書いたプログラムはファイルに保管しておく。
  2. burgled-batteries でそのファイルを読み込む。
  3. Pythonの関数をCL上で定義する。
  4. CL上から定義した関数を実行する。

実装

Python でプログラムを書く。

# coding: utf-8
# HelloWorld.py
def test_func(name):
    return "Hello world! " + name

burgled-batteries でそのファイルを読み込む。

> (ql:quickload :burgled-batteries)
(:BURGLED-BATTERIES)
> (in-package :burgled-batteries)
#<PACKAGE "BURGLED-BATTERIES">
> (startup-python)
; No value
> (import "sys")
0
> (run "sys.path.append('/home/someml/junk')")
; No value
> (import "HelloWorld")
0
> (run "HelloWorld.test_func('yanqirenshi')")
"Hello world! yanqirenshi"

Pythonの関数をCL上で定義する。

> (defpyfun "HelloWorld.test_func" (name))
HELLOWORLD.TEST_FUNC

CL上から定義した関数を実行する。

> (helloworld.test_func "yanqirenshi") 
"Hello world! yanqirenshi"

おわり

想像以上にすんなり出来ました。 これでPythonでプログラムを書けば寄さそう。

あとは引数の引き渡しと、戻値の受け取りで他のデータタイプで上手に出来れば問題なさそう。

FFIは文字コードまわりで躓くこともよくあるし。

まぁ難しい場合DB経由でデータの受け渡しすれば良いのでなんとかなるかな。