MSYS2でOpen usp Tukubaiが動かなかったでござる
おぉ!待ってました。 Windows + MSYS2で心置きなくOpen usp Tukubaiが動かせそう。 と思いきや。
Open-usp-Tukubai 動かない。 MSYS2にインストールはできるのですが、 動きません。
Open-usp-TukubaiはPython2奨励なのに、 pacmanは勝手にpython3をインストールします。
そして勝手にPython3で実行しようとするので動きません。
環境
現象
くんすと氏のサイトのとおりにインストールを実行
$ pacman -U open-usp-tukubai-HEAD-1-any.pkg.tar.xz パッケージをロード... 依存関係を解決しています... 衝突するパッケージがないか確認しています... パッケージ (2) python-3.4.3-2 open-usp-tukubai-HEAD-1 合計インストール容量: 75.21 MiB インストールを行いますか? [Y/n] Y ...(省略)....
で試しにjoin0を実行してみると SyntaxErrorでまともに動いてくれません。
$ join0 File "/usr/bin/join0", line 217 print tline.getField(0) ^ SyntaxError: invalid syntax
対処方法
Python2で動かすようにすればいい。
幸か不幸かOpen-usp-TukubaiはPythonのスクリプトなので、 先頭のスクリプト起動の指定を python から python2 に変更してみる。
まずはPython2をインストール
$ pacman -S python2
join0の先頭を python2に書き換え
$ head -n 1 join0 #!/usr/bin/env python $ sed -i 's/python/python2' /usr/bin/join0 $ head -n 1 join0 #!/usr/bin/env python2
お試し実行
$ join0 Usage : join0 [+ng<fd>] key=<n> <master> <tran> Version : Fri Oct 21 11:26:06 JST 2011 Open usp Tukubai (LINUX+FREEBSD/PYTHON2.4/UTF-8)
お、動いたけど…。 全てのOpenTukubaiコマンドにこれを実行しないと…。
シェル芸スタート
まずは、ls -lでタイムスタンプでも見てみる。
$ cd /usr/bin $ ls -l | awk '$6~/10. * /' | awk '$7~/15. * /' -rwxr-xr-x 1 yusuke None 3983 10月 15 19:58 calclock -rwxr-xr-x 1 yusuke None 4735 10月 15 19:58 cgi-name ...(省略)...
2015年10月15日のファイルは全て Open usp Tukubaiのようだ。
findで絞り込んで xargsで渡す戦略でいく。
$ find -mtime 34 ./calclock ./cgi-name ./check_attr_name ./check_need_name ./cjoin0 ...(省略)...
$ find -mtime 34 -type f | xargs head -n 1 ==> ./calclock <== #!/usr/bin/env python ==> ./cgi-name <== #!/usr/bin/env python ==> ./check_attr_name <== #!/usr/bin/env python ==> ./check_need_name <== #!/usr/bin/env python ==> ./cjoin0 <== #!/usr/bin/env python ...(省略)
お、sedに食わせても大丈夫だな。
$ find -mtime 34 | xargs sed -i 's/python/python2/'
成功!
$ find -mtime 0 -type f | xargs head -n 1 ==> ./calclock <== #!/usr/bin/env python2 ==> ./cgi-name <== #!/usr/bin/env python2 ...(省略)...
$ join2 Usage : join2 [-d<string>] key=<n> <master> <tran> Version : Wed Oct 26 03:01:58 JST 2011