cygwin に jupyter を入れる

経緯

Ctrl+d で落ちない python コンソールなんてありえない!

方法

python3-pip と python3-zmq を cygwin のインストーラで入れる.
(英語サイトでは bundled zmq とか書かれてるやつ)

pip3 install jupyter

他にも何か pip で入らなさそうなモジュールとかあったら,bundled を探してみるとあるかも.

Cygwin で Cron を動かす

インストール

cron と cygrunsrv を cygwin でインストール済とする.
合わせて,nkfも入れてあると便利.

nkf を入れる場合,gcc-coreとmakeも入れておくこと.

サービスに登録

昔は cygrunsrv を叩いていたが,今は cron-config でできる.
要,管理者権限.

予断だが ssh-server なんかも ssh-host-config でできるらしい.

yes/no で聞かれているところは基本 yes.
入力を促されるところは CYGWIN は空欄,パスワードは Windows のログオンパスワード.

もしエラーが起こった時に,日本語で読みたい場合は,

cron-config 2>&1 | nkf -u

とかしておくと便利.

cron を開始

うまく開始する条件がよく分からんが,たまに上でうまく動作しないことがある.
一応,こうなっていれば成功のはずなのに,なぜかスクリプトの出力をファイルにリダイレクトさせたはずの出力が得られないことがある.

$ cygrunsrv -Q cron
Service             : cron
Display name        : Cron daemon
Current State       : Running
Controls Accepted   : Stop
Command             : /usr/sbin/cron -n

そういう時は,サービスの再起動が良い.
要管理者権限.

$ net stop cron 2>&1 | nkf -u
$ net start cron 2>&1 | nkf -u

これはメッセージが日本語確定なので,nkfを使う.
で,その後ステータスを見て, Current State が Runnning でなければ,cygrunsrv で開始させる.

$ cygrunsrv -S cron

異なる環境で共通の.vimrcを使う

前提

gitなどで設定ファイルを管理していて,どのマシンでも同じ設定をgit cloneですぐに引っ張れるようにしている.
こうするとスタートアップは用意であるものの,環境依存の設定のためエラーを吐いたり最悪の場合は動作しないことがある.
今回はその中でも vim の場合.

対処法

vimの設定は.vimrcや.gvimrc(vim.gtkなど)などで設定する.
.vimrcなどの中では条件分岐が使える.
1を返す関数がTrueを,0を返す関数がFalseを意味する.
has('feature')が便利で,OSによる分岐や:versionで出力されるfeatureの有無(+/-)による分岐が可能.

例えば,pluginのsingletonはclientserverを必要とするが,cygwinでコンソールでのみvimを使う場合にエラーを吐く.
これを防ぐためには

if has('clientserver')
    call singleton#enable()
endif

などとすればどちらにも対応できる.

windows7でzshがエラーを起こす

以前,WinXP でも起こったんだけど,いつの間にか直ったので気にしていなかった.
cygwin を入れて c:\cygwin\bin へ path を通して zsh を実行すると,下記のようなエラーが出る.
(cygwin.bat はもう何年も使っていないので分かりません.)

12 [main] zsh 3704 C:\cygwin\bin\zsh.exe: *** fatal error - unable to remap C:\cygwin\lib\zsh\4.3.4\zsh\newuser.dll to same address as parent(0x410000) != 0x990000

[LOOX U] Cygwinのzshが動かない によれば,ashからrebaseallコマンドを実行すると良いらしい.
※ hadacchi はエラー起こしていた窓を閉じてしまい,もうエラーが出ないので,上記サイトのエラー文をコピペさせていただいた.

早速,タスクマネージャから zsh を全て落として,ash を起動し rebaseall と打つと,タスクマネージャ上で色んなタスクのPIDががらっと代わった.
で,また zsh を起動すると,.zshenv がないよとかいうメッセージが出てきて,成功.

ちなみにこの rebaseall というコマンドを bash から実行しようとしたところ,「ash か dash からしか実行できないよ」ってエラーが出てきた.
つまり,今後は cygwin 入れる時に ash は外せないということか.

python へ パッケージをインストール

[hadacchi_blog : memcachedとpython (修正追記)](/p_blog/article.php?id=706)で書いた記事に更に追記.
cygwinのpythonにパッケージを追加したくなったので,やってみた.

  1. [setuptools](http://pypi.python.org/pypi/setuptools#downloads)のソースをDL.
  2. 次のコマンドでsetuptoolsをインストール.
    $ tar xzf setuptools-0.6c9.tar.gz # ファイル解凍
    $ cd setuptools-0.6c9
    $ ./setup.py build
    $ ./setup.py install # なんで,buildとinstallがいるのかよく分からん
  3. [python-memcache](http://www.tummy.com/Community/software/python-memcached/)をダウンロード.
  4. setuptoolsと同じ要領でインストール.
    $ ./setup.py build; ./setup.py install # 1行にまとめただけ