このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

MinGW/MSYSのブートストラップ

参照:

http://sourceforge.net/projects/mingw/files/ の "Download mingw-get-setup.exe" をクリックすると、 mingw-get-setup.exe が落ちてくる。

これはブートストラップ用のプログラムで、実行すると、mingw-getがインストールされる。mingw-getがパッケージマネージャ。インストール時にGUIサポートをチェックしておかないとさすがに使いにくい。

デフォルトでは、C:/MinGW/ にmingw-getをインストールする。コマンドは C:/MinGW/bin/mingw-get.exe だけが入る。c:/MinGW/libexec/mingw-get/ の下にDLLやヘルパーコマンド群。Lua言語でカスタマイズできるようだ。c:/MinGW/var/cache/mingw-get/packages/ にアーカイブ(.tar.xzファイル)がキャッシュされる。c:/MinGW/var/lib/mingw-get/data/ に大量のメタデータらしきもの。

GUImingw-getは使いにくいUI。パッケージを選んでから、メニューからアクションを選ぶという操作(たぶん)。

bashだけを選んでインストールすると、c:/MinGW/msys/1.0/ に一式出来る。が、動かない。パスを設定すると動く。

Git for Windowsの構造と利用

Git/bin/ には、

  • サイズ140,288 git.exe
  • サイズ32,768 bash.exe
  • サイズ32,768 sh.exe

bash, shはハードリンクじゃなくて、ほんとにコピーしている。ハードリンクを調べるには、管理者権限で、fsutil hardlink list ファイル名 とする。140K, 32Kだから非常に小さい。スタブだと分かる。

Git/cmd/ は、

  • サイズ140,288 git-gui.exe
  • サイズ140,288 git.exe
  • サイズ140,288 gitk.exe

これらもスタブで実体ではない。git関連だけが cmd/ に入っている。

Git/usr/bin/ は、

  • 2,060,758 bash.exe
  • 2,060,758 sh.exe

2メガあるから、bashの実体だろう。msys/1.0/bin/のbashは、563,200 bash.exe なので約1/4。

Git/mingw64/bin/ に、

  • 1,813,497 git.exe

これがGitの実体らしい。

パスの通し方

現状は、

  1. C:\Installed\MinGW\msys\1.0\bin
  2. C:\Installed\MinGW\bin
  3. C:\Installed\Git\cmd

この状況では、

  • sh → C:\Installed\MinGW\msys\1.0\bin\sh.exe
  • gcc → C:\Installed\MinGW\bin\gcc.exe
  • gitk → C:\Installed\Git\cmd\gitk.exe

となる。

次のように変更する。

  1. C:\Installed\Git\bin
  2. C:\Installed\Git\usr\bin
  3. C:\Installed\MinGW\bin
  • sh → C:\Installed\GitW\bin\sh.exe
  • gcc → C:\Installed\MinGW\bin\gcc.exe
  • gitk → 使えない

git-guiとgitkが使えなくなるが、git自体は C:\Installed\GitW\bin\git.exe を経由して使えるはず。

後で試してみる。

[追記]Git bash(git for windowsbash)を使いたいなら、

  1. C:\Installed\Git\usr\bin
  2. C:\Installed\MinGW\bin

だけでもいいかもしれない。bash, sh, その他は Git\usr\bin\ にあり、それは /usr/bin/ に見えている。/bin/sh, /bin/bash は必要だが、Git\bin\ にモノがあるから、パスはなくてもいいだろう。C:\Installed\Git\bin\ = /bin/ にパスを通さないと動かないものはないはず。[追記]

PowerShellのスタートアップファイル群

現状は次のようになっている。

  1. try $PROFILE
  2. C:\Users\hiyama\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    1. try $env:HOME\.profile.ps1
    2. try $env:HOME\configs\powershell\.profile.ps1
  3. C:\Users\hiyama\Work\configs\powershell\.profile.ps1
    1. try ${DOTFILES}\.profile.common.ps1
    2. try ${DOTFILES}\.profile.g.$group.ps1
    3. try ${DOTFILES}\.profile.h.$THIS_HOST.ps1
  4. C:\Users\hiyama\Work\configs\powershell\.profile.common.ps1
    1. try $DOTFILES/functions/common.dsrc.ps1
  5. C:\Users\hiyama\Work\configs\powershell/functions/common.dsrc.ps1
  6. C:\Users\hiyama\Work\configs\powershell\.profile.g.desktop.ps1

変更予定

  1. $PROFILE
    1. try ${PS_CONFIG_DIR}\.profile.ps1
  2. ${PS_CONFIG_DIR}\.profile.ps1
    1. try ${PS_CONFIG_DIR}\.profile.common.ps1
    2. try ${PS_CONFIG_DIR}\.profile.g.$GROUP.ps1
    3. try ${PS_CONFIG_DIR}\.profile.h.$THIS_HOST.ps1

この後で、関数を定義したユニット(非公式モジュール)を読み込む。${PS_CONFIG_DIR}/scripts/ とかの下にあるフィルを列挙してソート順に全部読みこむでいいと思う。読み込みは、${PS_CONFIG_DIR}\.profile.ps1 で
行えばいいか。

次で出来るだろう。

ls  ${SCRIPTS_DIR}\*.ps1 | %{$_.fullname} | %{ . $_ }

パスの調整

  • お尻の\は取る。
  • Windows的に同じ名前が複数入っているのを除く。
  • パーセント入りパスは展開しておく。bashに引き継がれるときにマズイ。
  • C:\Installed\MinGW\bin を前に持って来る。

次は当面要らない。

  1. C:\Program Files\Haskell\bin
  2. C:\Installed\Haskell Platform\2014.2.0.0\lib\extralibs\bin
  3. C:\Installed\Haskell Platform\2014.2.0.0\bin
  4. C:\Installed\Haskell Platform\2014.2.0.0\mingw\bin
  5. C:\Program Files\Calibre2\
  6. C:\Installed\Perforce\DVCS\
  7. C:\Installed\cmigemo-default-win64