sci

最果て風呂

Windows XP に MSYS2 をインストールした

Windows に MSYS2 をインストールしてみた。ここからダウンロードしてインストーラを実行するも 68% の進捗でインストールが終わらない。何度やってもダメだった。プロセスマネージャを見てみると、bash が動いていて、これを kill するとインストーラが(エラーで)終了する。この bash って古い msys の方が動いているのだろうか?

仕方がないので tar.xz の方をダウンロードして解凍。msys32/ 内の autorebase.bat をダブルクリックしてしばし待つ。msys2_shell.bat をダブルクリックすると msys シェルが動いた。プロセスマネージャで確認すると、mintty が動いている。

ウインドウのタイトルバーをクリックして設定してやるとターミナルで UTF-8 が使えるので便利だし、ウインドウの大きさも自由に変えることができるので快適。ただ、自ビルドの CUI Vim を使うと端末がうんともすんとも言わなくなってしまう。

とりあえずこの環境で mto.c をビルドしてみたら Panther と同じエラーが出た。

>cc mto.c
mto.c: In function 'strCdrReplace':
mto.c:74:5: error: 'for' loop initial declarations are only allowed in C99 mode
     for (int i = 0; i < elemSize; ++i) {
     ^
mto.c:74:5: note: use option -std=c99 or -std=gnu99 to compile your code
mto.c: In function 'strCarReplace':
mto.c:92:5: error: 'for' loop initial declarations are only allowed in C99 mode
     for (int i = 0; i < elemSize; ++i) {

gcc のバージョンが新しいからかメッセージが親切だわ。

修正してみたけどなんかビルドができない。古い MinGW と何かバッティングでもしているのだろうか?基本環境だけで、開発環境まではインストールされないとか?

パッケージ管理

システムの管理には pacman というものを使うみたいだ。とりあえず下記のコマンドを実行した。

pacman -Suy
pacman -S base-devel
pacman -S msys2-devel

やけに時間がかかったけれど、この状態で mto.c をビルドしたらちゃんと動くバイナリを作成することができるようになった。GCC は 4.9.2 だ。これで MinGW 古いは削除しちゃっても良さそう。

トップの msys32 ディレクトリ以下には下記のディレクトリが作成されるのだが、上記のコマンドでインストールしたものは、usr/ 以下に入る。また、ダウンロードしたアーカイブは msys32/var/cache/pacman/pkg 以下に保存される。

dev
etc
home
mingw32
minge64
opt
tmp
usr
var

ターミナルで確認すると msys2/usr/bin/bin になってるのね。あと python2.7.10 が入っていた。Vim は 7.4.872 という比較的新しいものがあったのでこれをインストールした。

Vim

自作のプラグインを読み込む時に下記のエラーが出るし、日本語も文字化けしてしまうわ……。ダメだわこれ。

Undefined variable: s:save_cpo
Invalid expression: s:save_cpo
No such variable: "s:save_cpo"
No string under cursor

アンインストールするには下記。簡単だね。

pacman -R vim

アンインストールしてから再度インストールした。日本語の文字化けは .vimrcset termencoding=cp932 が原因だったの。utf-8 にすれば問題ない。ただ、skk.vim での入力で、▽や▼が半角扱いになって表示が崩れてしまう。これは skk_marker_white とかにすることで回避できる。プラグインの方はちょっとわからん。

Git

git が上手く動かないので pacman でインストールした。どうやら、msys2/home/noz/.ssh を作成するようだわ。

Gems

python3 と ruby をインストール。emacs はどうするか悩み中。

gem install twitter をすると unf というライブラリのネイティブビルドでエラーになってしまう。.gem/ruby/2.1.0/extensions/x86-msys/2.1.0/unf_ext-0.0.7.1/mkmf.log を見ると、gmpcrypt が無いみたいだわ。そこで下記を実行してから再度挑戦したらインストールが完了した。jekyll ではさらに libffi を要求した。

pacman -S gmp
pacman -S gmp-devel
pacman -S crypt
pacman -S libcrypt
pacman -S libcrypt-devel
pacman -S libffi
pacman -S libffi-devel

一応、msys2 に入れた gem は sinatra, sqlite3, twitter, jekyll の 4 つ。関連する gem も入ったけど。