雑記帳

ちょっとした文章とかメモ書きとか。

Wandboardで遊ぼう

Wandboard http://www.wandboard.org/ を入手したので色々いじくってみました。

Wandboard dualであればLinuxを動かすのにもちょうどよい性能なのでLinuxを入れてみましょう。

基本的な入れ方は、http://www.eewiki.net/display/linuxonarm/Wandboard を参考にすれば大丈夫です。

Linuxとして使うには(特にXorgを上げる場合には)、linux-swapパーティションを作りましょう。gpartedにより、ブートするmicroSDの後方1GBをlinux-swapにし、他はWikiと同様の設定とします(下図)

Screenshot_from_2013-05-07 06:21:14

Wikiではswapを作っていないので/etc/fstabも書き換えます。

/dev/mmcblk0p2   /              auto  errors=remount-ro  0   1
/dev/mmcblk0p1   /boot/uboot    auto  defaults           0   2
/dev/mmcblk0p3   none           swap  sw                 0   0

こうすることで、swapパーティションが有効になります。

また、Ubuntu11.10の元々のカーネルとWikiにある方法で作成するカーネルでは以下の違いが特に後々重大な影響※を及ぼします。

※重大な影響とは、一般ユーザーでtcp/udpが叩けなかったり、Xorgを上げても無反応になってなってしまうことを指します。

@@ -49,21 +63,9 @@ kernel/drivers/i2c/i2c-core.ko
kernel/drivers/i2c/i2c-dev.ko
kernel/drivers/i2c/busses/i2c-imx.ko
kernel/drivers/input/input-core.ko
-kernel/drivers/input/mousedev.ko
-kernel/drivers/input/evdev.ko
kernel/drivers/input/serio/serio.ko

あ…れ…evdev.koとmousedev.koがカーネルにbuiltinされてない…これでハマりました…orz evdevってXorgの入力に関わるところなんですね…知らなかった
(参考:http://www.yamasita.jp/linkstation/2012/03/120326_evdev.html)

CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_EVDEV=y

としましょう。

また、これ:

CONFIG_ANDROID_PARANOID_NETWORK=y

も後々困った事になるのでnにしておきましょう。このコンフィグが有効だとLinuxでは[sudo] rootでしかeth0をつかめなくなります。

このように。

# CONFIG_ANDROID_PARANOID_NETWORK is not set

また、後に回すとめんどくさいので起動直後に日本語ロケールを有効にします。

$ update-locale LANG=ja_JP.UTF-8 LC_MESSAGES=POSIX
$ sudo locale-gen ja_JP.UTF-8
$ sudo update-locale LANG=ja_JP.UTF-8 LC_MESSAGES=POSIX

あとは、

$ sudo apt-get install lightdm
$ sudo apt-get install xubuntu-desktop

するだけでGUI環境ができます、Ubuntu便利ダナー…

あとは、gccを入れるなり、Monoを突っ込むなり、ghcを入れるなりしましょう。どれもapt-getで入ります。

% cat /proc/cpuinfo
Processor    : ARMv7 Processor rev 10 (v7l)
processor    : 0
BogoMIPS    : 790.52

processor    : 1
BogoMIPS    : 790.52

Features    : swp half thumb fastmult vfp edsp thumbee neon vfpv3
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x2
CPU part    : 0xc09
CPU revision    : 10

Hardware    : Wandboard
Revision    : 61011
Serial        : 0000000000000000

WandboardのARM CPUはarmhfでdual coreなようですね。

% uname -a
Linux arm 3.0.35-wand3 #1 SMP PREEMPT Sat May 4 06:16:05 JST 2013 armv7l armv7l armv7l GNU/Linux

また、カーネルが古いので3.8から入ったf2fsはWikiの方法を踏襲すると使えません…残念!

追記:githubにevdevを有効にしたWandboard向けカーネルコンフィグをpushしました。
https://github.com/cosmo0920/LinuxKernelconfig/blob/master/3.0.35-wand3.config

Kernel 3.9でv4l2loopbackを使う

Kernel 3.9ではV4L2に変更があります。

「3.8までのV4L2」は以下のV4L2 int deviceが該当します。
deprecated表示になっているのでV4L2を使う際は使うのは推奨されなくなりました。
v4l2loopbackデバイスを使う際はカーネルコンフィグで有効にしましょう。

Screenshot_from_2013-04-30 23:31:06

その上のV4L2 sub-device userspace APIだけにチェックを入れた場合にv4l2loopback/webcamstudioのカーネルモジュールをinsmodしようとすると次のエラーが出ます。

$ sudo insmod webcamstudio.ko
insmod: error inserting 'webcamstudio.ko': -1 Unknown symbol in module
$ dmesg
[  ... ] webcamstudio: Unknown symbol video_ioctl2 (err 0)
[  ... ] webcamstudio: Unknown symbol video_devdata (err 0)
[  ... ] webcamstudio: Unknown symbol video_unregister_device (err 0)
[  ... ] webcamstudio: Unknown symbol video_device_alloc (err 0)
[  ... ] webcamstudio: Unknown symbol __video_register_device (err 0)
[  ... ] webcamstudio: Unknown symbol video_device_release (err 0)

また、webcamstudioは0.57系にとどまっているのではなく、より新しいものに更新しましょう。
Ubuntu12.04+で起動できない問題は既に修正済みです:
http://code.google.com/p/webcamstudio/issues/detail?id=75#c38

bundlerでmikutter

mikutterにはdevel/debian配下に開発用スクリプトがあったのですが、明らかに更新されてないのでbundlerを使ってみることにしました。

bundlerはGemfileを必要とします。

mikutter用の最低限のGemfileは次のようになります。

source "https://rubygems.org/"
ruby '2.0.0'
gem "gtk2"
gem "ruby-hmac"

これで、bundleの管理下に依存関係を解決したgemが入ります。

$ [sudo] bundle install

すると、bundlerがgemを管理するようになります。

rbenvをインストールして、更にruby-2.0.0p0をインストールした上で上記のコマンドを使えばシステムのrubyの更新が遅くても快適なruby環境が手に入ります。

rbenvを用いてインストールした場合のmikutterの起動スクリプトの一例:

#!/usr/bin/env bash
#mikutter directory
GEM=<path to mikutter>/mikutter.rb
DIR=<path to mikutter>
RUBY=/home/`whoami`/.rbenv/shims/ruby

cd $DIR
$RUBY -rubygems $GEM

追記:上の方法だと–path指定したものが読み込まれないので、
bundlerを使っているならbundle execしたほうが良さそうです。

#!/usr/bin/env bash
#mikutter directory
DIR=<path to mikutter>

source ~/.bashrc
cd $DIR
bundle exec ruby mikutter.rb

Linuxカーネル3.8でVMWare Playerを使う

カーネルを上げると何かしら動かない箇所が出てしまいます。

今度はVMWareのドライバでした…orz

環境:
Ubuntu Linux 12.04.2 LTS
Kernel 3.8.1

VMCIがコンパイルエラーとなってしまいます。
これは、Hotplug関連のマクロである__devexit_p,__devinit,__devexitなどが、カーネル3.8以降で削除されているためです。

という訳でこれを修正してみます。
linux-3.8_vmci_pci_hotplug_struct.patch:

--- vmci-only/linux/driver.c    2012-11-01 16:22:03.000000000 +0900
+++ vmci-only/linux/driver.c.edited    2013-03-01 04:21:08.402942111 +0900
@@ -124,7 +124,11 @@ static struct pci_driver vmci_driver = {
.name     = "vmci",
.id_table = vmci_ids,
.probe = vmci_probe_device,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
.remove = __devexit_p(vmci_remove_device),
+#else
+   .remove = vmci_remove_device,
+#endif
};

#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
@@ -1750,7 +1754,11 @@ vmci_enable_msix(struct pci_dev *pdev) /
*-----------------------------------------------------------------------------
*/

-static int __devinit
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
+ static int __devinit
+#else
+ static int
+#endif
vmci_probe_device(struct pci_dev *pdev,           // IN: vmci PCI device
const struct pci_device_id *id) // IN: matching device ID
{
@@ -1978,7 +1986,11 @@ vmci_probe_device(struct pci_dev *pdev,
*-----------------------------------------------------------------------------
*/

-static void __devexit
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
+ static void __devexit
+#else
+ static void
+#endif
vmci_remove_device(struct pci_dev* pdev)
{
struct vmci_device *dev = pci_get_drvdata(pdev);

このパッチを当てるには次のようにします。 vmci_patch.sh:

cd /usr/lib/vmware/modules/source
tar -xf vmci.tar
cd vmci-only
patch -p1 < [path to patchfile]
cd ..
tar -cf vmci.tar vmci-only/
#出典:http://communities.vmware.com/thread/432897

これで、パッチが当たりました。カーネルモジュールのビルドは次のようにします。

$ sudo vmware-modconfig --console --install-all

これにより、何もエラーが出ていなければ3.8でもVMWare player 5.0.1を使うことができます。

もしもkernel/version.hでエラーとなるなら次の対策もする必要があります→Linuxカーネル3.7でVMWare Playerを使う

参考:[patch] Vmware 9 on Linux Kernel 3.8rc4

追記:VMWare player 5.0.2でこの問題は解決しました。

Webcamstudioを修正して3.7.1+カーネルでも使ってみる

webcamstudio本家では永らく更新が止まっており、メンテナンスだけになってしまっているプロジェクトだそうで。

Linuxでは未だに仮想カメラとしてのこなれているソフトは少ないので修正して動くようにしてみました。

環境:Ubuntu Linux 12.04.2LTS
Kernel 3.7.9

これで動くようにしてみます。

http://code.google.com/p/webcamstudio/ にてまだ入手することができます。

先ずはwebcamstudio_0.57beta4_all.debを入手してきます。

$ sudo dpkg -i webcamstudio_0.57beta4_all.deb

当然の事ながらそのままではカーネル3.7.9には対応していないのでインストールが完了しません。

そこで、次のパッチを適用します:

–diff_webcamstudio.patch–

--- webcamstudio.c.orig	2013-02-19 07:55:42.593627911 +0900
+++ webcamstudio.c	2013-02-20 05:47:54.094668804 +0900
@@ -1435,7 +1435,9 @@ init_buffers        (struct webcamstudio
     b->length            = buffer_size;
     b->field             = V4L2_FIELD_NONE;
     b->flags             = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,6,1)
     b->input             = 0;
+#endif
     b->m.offset          = i * buffer_size;
     b->memory            = V4L2_MEMORY_MMAP;
     b->sequence          = 0;
@@ -1464,6 +1466,11 @@ init_vdev           (struct video_device
   vdev->minor        = -1;
   if (debug > 1)
     vdev->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG;
+#ifdef VFL_DIR_M2M
+  vdev->vfl_dir = VFL_DIR_M2M;
+#endif
+
   MARK();
 }

これにより、構造体からinputメンバが削られた影響を回避することができます。
(このあたりはv4l2loopbackの新しいカーネルへの対応の実装を参考にしています)
もうひとつ、Ubuntu 12.04.2LTSではjava6の提供がなくなっているのでこちらも対応が必要です。
そこで、次のパッチを適用します:

–diff_webcamstudio_shexec_modify.patch–

--- webcamstudio.orig    2012-06-20 22:31:10.117328614 +0900
+++ webcamstudio_patched    2012-06-20 22:45:07.207331138 +0900
@@ -3,10 +3,27 @@
# Patrick Balleux 2009
# Version 0.57beta4
INSTALLDIR=/usr/lib/webcamstudio
-JAVA_DIR=/usr/lib/jvm/java-6-openjdk/bin
-if [ -f $JAVA_DIR/java ]
+ARCH=$(uname -i)
+case $ARCH in
+    x86_64)
+        UNAME=-amd64
+        ;;
+    i386)
+        #UNAME=
+        ;;
+esac
+JAVA_DIR=/usr/lib/jvm/java-6-openjdk$UNAME/bin
+OPENJDK7_DIR=/usr/lib/jvm/java-7-openjdk$UNAME/bin
+ORACLE_JAVA_DIR=/usr/lib/jvm/java-7-oracle/bin
+if [ -f $OPENJDK7_DIR/java ]
then
-    JAVA_DIR=/usr/lib/jvm/java-6-openjdk/bin
+    JAVA_DIR=/usr/lib/jvm/java-7-openjdk$UNAME/bin
+elif [ -f $JAVA_DIR/java ]
+then
+    JAVA_DIR=/usr/lib/jvm/java-6-openjdk$UNAME/bin
+elif [ -f $ORACLE_JAVA_DIR/java ]
+then
+    JAVA_DIR=/usr/lib/jvm/java-7-oracle/bin
else
JAVA_DIR=/usr/lib/jvm/java-6-sun/bin
fi

ここで、

$ sudo patch `which webcamstudio` < diff_webcamstudio_shexec_modify.patch

とします。続いて、

$ sudo patch  /usr/share/webcamstudio/webcastudio-src/webcastudio.c < diff_webcamstudio.patch

とします。これによりwebcamstudio側の準備ができました。

$ sudo make install

とすると、webcamstudio.koが生成されます。

$ sudo insmod webcamstudio.ko

とした時に、何もエラーもなくdmesgが次のようであれば終了です。

$ dmesg
...
[  ...  ] v4l2loopack driver version 1.0.2 loaded
--webcamstudio--

もしも次のエラーがあった場合は次のステップへ。

$ sudo insmod webcamstudio.ko
insmod: error inserting 'webcamstudio.ko': -1 Unknown symbol in module
$ dmesg
[  ... ] webcamstudio: Unknown symbol video_ioctl2 (err 0)
[  ... ] webcamstudio: Unknown symbol video_devdata (err 0)
[  ... ] webcamstudio: Unknown symbol video_unregister_device (err 0)
[  ... ] webcamstudio: Unknown symbol video_device_alloc (err 0)
[  ... ] webcamstudio: Unknown symbol __video_register_device (err 0)
[  ... ] webcamstudio: Unknown symbol video_device_release (err 0)

カーネルモジュールのvideodev.koが読み込まれていないようです。
カーネル3.6.11からV4Lの階層が変わっているらしく、もしかするとvideodev.koがコンパイルされていないかもしれません。

$ cd <path-to-Kernelsource tree>/linux-3.7/
$ make xconfig

http://nlug.ml1.co.uk/2013/01/gentoo-kernel-3-6-11-webcams-v4l-uvc-video-kernel-config-change/3798 によると、

まず、V4Lを3.7で有効に扱うためには、
MEDIA_CAMERA_SUPPORTをyにする必要があります。

Location:
-> Device Drivers
-> Multimedia support (MEDIA_SUPPORT [=m])

これにより、CONFIG_VIDEO_V4L2_SUBDEV_APIをyにできるようになります。

Depends on: MEDIA_SUPPORT [=m] && VIDEO_DEV [=m] && MEDIA_CONTROLLER [=y] && EXPERIMENTAL [=y]

なので、このカーネルコンフィグではvideodev.koがmakeされるようになります。

参考画像:

Screenshot_from_2013-02-20 06:23:14

このカーネルコンフィグのカーネルを用いれば、/usr/share/webcamstudio/webcamstudio-src/にて

$ sudo make install

をすると

[sudo] password for <user>:
make -C /lib/modules/`uname -r`/build M=/usr/share/webcamstudio/webcamstudio-src modules_install
make[1]: ディレクトリ `/usr/src/linux-headers-3.7.9-custom-fornewercore2' に入ります
  INSTALL /usr/share/webcamstudio/webcamstudio-src/webcamstudio.ko
  DEPMOD  3.7.9-custom-fornewercore2
make[1]: ディレクトリ `/usr/src/linux-headers-3.7.9-custom-fornewercore2' から出ます
depmod -ae
WARNING: -e needs -E or -F
$ dmesg
...
[  ... ] v4l2loopack driver version 1.0.2 loaded

となり、ちゃんとロードされます。まさかカーネルコンフィグの仕業でwebcamstudioカーネルモジュールが読み込めなくなっているとは思わなかった。。。

ちゃんと起動できている。

$ webcamstudio
Using JRE: /usr/lib/jvm/java-7-openjdk-amd64/bin
OS is Linux
DEBUG: WebcamStudio video device (video0)
DEBUG: WebcamStudio video device (video0)
Starting iWebcamera Detection...
NetworkStream available on port 4888
You can use FFMPEG to connect to this stream...
ffmpeg -f ogg -i tcp://127.0.0.1:4888 test.ogg

どうやら動いているようだ。
Screenshot_from_2013-02-20 05:40:24

Linuxカーネル3.7でVMWare Playerを使う

Linuxカーネル3.7ではinclude/linux/version.hの位置が移動してます。

その為、VMWareのカーネルモジュールをインストールするときに正常なヘッダーのディレクトリでないと怒られてしまいます。以下のようなスクリプトで修正すると正常にインストールできます。

#!/usr/bin/env sh
HEAEDERSROOT=/lib/modules/`uname -r`/build
sudo ln -s ${HEAEDERSROOT}/include/generated/uapi/linux/version.h ${HEAEDERSROOT}/include/linux/version.h

参考:http://coji.coji.jp/wp/kernel3-7nvidia-linux-x86-310-19vmware-workstation9-0-1/

http://communities.vmware.com/thread/422617

Wine 1.4.1で筆圧検知を有効にしてみる

Wine1.4で試す

wine 1.5.13から筆圧検知が効かなくなってしまったので1.4.1ならどうなるかという実験のメモ。

結論からすると、効くようです

先ずは、Wineの筆圧検知を有効にするパッチを取ってきます。

http://bugs.winehq.org/show_bug.cgi?id=11846 此処から取ってきます。

特に編集もせずにこのパッチは当てることができます。

Wineのバイナリと置き換える

え?コンパイルがめんどくさい?

コンパイル済みバイナリと使用したパッチをDropboxに置いておきます。

コンパイル済みバイナリー(wine1.4.1)

上記よりダウンロードしたwinex11.drv.soとwintab32.dll.soを解凍して

  • /usr/lib/i386-linux-gnu/wine/winex11.drv.so
  • /usr/lib/i386-linux-gnu/wine/wintab32.dll.so

と入れ替えてください。

wintabを使うアプリケーションではペンタブレットの筆圧検知が使えるようになっているはずです。

SAIの場合

SAIの場合のwintabを使う設定はmisc.iniにあります。

TabletMouseSimulation = 0

の0を1にしてSAIを起動するとSAIはwintabを使うようになります。

参考:Wineの筆圧感知パッチ http://yusuke494.blog.fc2.com/blog-entry-6.html

HaskellでOpenCLを使ってみる その3

その2からだいぶ経ってしまいましたが、その3です。

前回よりもう少し汎用性を上げるために

  • OpenCLのカーネルだけではなく、入力値も読み込んでみる
  • 読み込んだ入力値を数値型へ変換する関数を実装する
  • 出力も工夫できたらいいね

ってな訳で作ってみます。

先ずは、入力値を読み込む関数から。

import qualified Control.Exception as E
-- read input value from File
numberFromFile :: IO String
numberFromFile = do let cltransformSource = "input.txt"
                    E.catch (readFile cltransformSource)
                          (onError cltransformSource)

これはその2と同じようにできますね。

ファイルから読み込んだ時はString型なのでそれを扱いやすい[CDouble]型にしてみましょう。

import Foreign.C.Types( CFloat,CDouble )
import Data.List
-- transform String to [CDouble]
toNum :: String -> [CDouble]
toNum = foldr toNumber [] . words
      where toNumber xs number = read xs:number

これでString->[CDouble]な関数ができますね。

ついでに[CDouble]->Stringな関数も作ってみましょう。

-- transform [CDouble] to String
toStrings :: [CDouble] -> String
toStrings = unlines . foldr toStr [] 
    where toStr xs number = show xs:number

その2では簡単な計算でした。今回は数式をただソースコードにしただけのフーリエ変換を実装してみます。

これらを使うHaskellのOpenCLを用いるプログラムは以下のようになります。

こうすると、例えば以下のファイル(input.txt)を食わせると

1.7071067812
0.9238795325
-0.0000000000
0.9238795325
0.2928932188
0.3826834324
2.4142135624
1.1480502971
-1.7071067812
-0.9238795325
0.0000000000
-0.9238795325
-0.2928932188
-0.3826834324
-2.4142135624
-1.1480502971

以下のように出力されるようになります。

% ./ft_1d
[0x0000000002767b88,0x0000000002780670]
[CL_DEVICE_TYPE_CPU]
[CL_DEVICE_TYPE_GPU]
Original array = 
1.7071067812
0.9238795325
-0.0
0.9238795325
0.2928932188
0.3826834324
2.4142135624
1.1480502971
-1.7071067812
-0.9238795325
0.0
-0.9238795325
-0.2928932188
-0.3826834324
-2.4142135624
-1.1480502971

Result array   = 
6.661338147750939e-16
8.000000000049777
7.938115703915682e-16
8.000000000122203
4.4260817179820244e-15
7.999999999991849
7.015391459123505e-15
6.042233352521482e-11
4.991636170995617e-15
6.041867178417157e-11
6.27586489761324e-15
7.9999999999918465
2.4970138487129154e-14
8.000000000122185
2.1255490196279483e-14
8.000000000049791

大体このプログラムでGTX550TiとGTX650Tiでは51200点までは上手く動きます。
Linuxでは重たい計算をさせても問題が無い。
GPGPUの実行時間の制限がなく、画面更新が止まるだけです。

GPUもっと活用したいなぁ…

fav2toshi_a

この記事は #fav2toshi_a Advent Calendar の12日目の記事です。

まさかとしぁさん、call_api_fav.rbの存在忘れていませんよね…?

ということで、3アカウント×250ふぁぼをとしぁさんに贈りました。

としぁさんからておくれと宣告されてしまったのは思えばこのツイートからですね:

mikutterこわい

call_api_fav.rbが生まれてしまった経緯について。

元々search_api_fav.rbという遡りふぁぼのプラグインを作っていたのですが、
これは本人のTLを公式RTも含めてふぁぼってしまうため、
RT魔には周りにも被害が及ぶという大変アレなプラグインだったわけです。

じゃあどうしようと言うので、mikutterのソースコードを眺めていたらprofile.rbに本人のツイートだけを取ってくるコードが実装されて居るじゃないですか、これは使ってみるしか無いですね!!

ってなわけで組み込んでしまったのでした。

今はなぜかとしぁさんの魔の手(https://github.com/cosmo0920/Call_API_fav/commit/bd59a84fe99085d4e4afc8fa9e1614747e8fe4e9#call_api_fav.rb)が入り、
真っ先にmikutter0.2対応されるプラグインとなりました、謎い…。

ふぁぼった中での気になったツイート

ふぁぼったツイートのなかではこのツイートが一番ておくれ感が溢れているようです:

あと目に付いたものとしてはこれですかね。最近ふぁぼってもいないツイートがふぁぼったように感じられるのはアレはツイッターの不具合だったのか。

最後に、普段からとしぁさんにあまりふぁぼを贈らないのでもっと贈るようにできたらいいかなとか。

Gentoo Prefix Ubuntuでlaymanを使う

前回の記事でUbuntuにGentoo Prefixをインストールしました。

今回はそのGentoo Prefixへlaymanをemergeするだけで使えるようにしようという記事。

laymanとは

layman とは http://en.gentoo-wiki.com/wiki/Overlay にあるように、mainのportageツリーに入っていないebuildを追加する仕組みです。

このlayman、gitやらsubversionやらmercurialに依存しているため、本来であればそれらをインストールする必要があります。

が、

Ubuntuでは

$ sudo apt-get install git subversion mercurial darcs tar

で全て入ってしまうのだからこれを使わない手はないですね。

$ emerge layman

をした後、
$EPREFIX/etc/layman/layman.cfgを以下のように編集します。

--- layman.cfg.orig    2012-11-11 18:38:20.172869912 +0900
+++ layman.cfg    2012-09-02 12:14:40.732390596 +0900
@@ -96,12 +96,12 @@ nocheck  : yes
#
#bzr_command        : /usr/bin/bzr
#cvs_command        : /usr/bin/cvs
-#darcs_command      : /usr/bin/darcs
-#git_command        : /usr/bin/git
-#mercurial_command  : /usr/bin/hg
+darcs_command      : /usr/bin/darcs
+git_command        : /usr/bin/git
+mercurial_command  : /usr/bin/hg
#rsync_command      : /usr/bin/rsync
-#svn_command        : /usr/bin/svn
-#tar_command        : /bin/tar
+svn_command        : /usr/bin/svn
+tar_command        : /bin/tar
#g-common_command   : /usr/bin/g-common

こうすることで、laymanが走るようになります。
この後は

$ layman-2.7 -a haskell

とかやってみてもいいですね。

フォロー

新しい投稿をメールで受信しましょう。

現在1,031人フォロワーがいます。