トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

MSYS2 Portableの環境を作成する

参考

https://www.yokoweb.net/2016/08/29/msys2-install/
https://yujiorama.hatenablog.com/entry/2019/07/22/095214
https://udon.little-pear.net/msys2-pacman-pgp-update/
https://blog.bachi.net/?p=5035

概要

MSYS2のPortable環境を作る。
普通にインストールしてパスを変更するだけで良さそうな気もするけど。

MSYS2 Portableを使う

MSYS2 Portable
ちょっと古いけど、pacmanでアップデートすれば特に問題ない。

.mintyrc

FontHeight=12
Locale=C
Charset=UTF-8
Blue = #7D7DFF
Term=xterm-256color
# FontSmoothing=partial

アップデート

pacman -Suy

アップデートでPGP鍵エラーが出る場合

wget http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
wget http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
pacman-key --verify msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
pacman -U --config <(echo) msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz

pacman(パッケージマージャ)の使い方

pacman -h でヘルプ。
pacman -S -h で-Sオプションのヘルプ。
pacman -Sy でパッケージリストのアップデート
pacman -Su でパッケージのアップデート(事前にupdate-coreが必要)。
pacman -Ss [pattern] でパッケージを検索。
pacman -Sl | grep [pattern] でもだいたい分かる。
pacman -S [package] でインストール。
pacman -Rs [package] でアンインストール。
pacman -Sg でパッケージグループの一覧を表示。
pacman -Qqe でインストール済みのパッケージ一覧を表示。
pacman -Si [package] で詳しい情報を表示。
pacman -Sc で使っていないキャッシュを削除。

色々インストール

pacman -S git
pacman -S tmux
pacman -S mingw32/mingw-w64-i686-gcc
pacman -S mingw64/mingw-w64-x86_64-gcc

nkfインストール

pacman -S make
wget https://osdn.jp/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz
tar zxvf nkf-2.1.4.tar.gz
cd nkf-2.1.4
make install

.bashrc変更

export PATH=${PATH}:/mingw64/bin:/mingw32/bin
# git
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
source /usr/share/git/completion/git-prompt.sh
export PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '

Git for Windows Portableを使う

Git for Windows PortableはMsys2をGit用にカスタマイズしたもの。
基本的にgitを動作させる以外に不要なものは削除されている。
そのため、通常のMsysのように利用するためには、様々なパッケージを再インストールする必要がある。

git-bash.exe を起動すると、mingw64.exeの起動と同様にmingw64/binにパスが通った状態で起動する。
Git for Windowsのgitは、Windowsのパスを普通に使えるようにするため、MinGWでコンパイルされたgitを利用しているため

mingw64\bin\git.exe

であり、/usr/bin/git.exe ではないので注意。

 HOME変更

以下のようなバッチでHOMEディレクトリを変える

@echo off
set HOME=%~dp0\home\portable
start "" git-bash.exe

 pacmanを使えるようにする

git clone --depth=1 https://github.com/git-for-windows/git-sdk-64 gfw-sdk

cp gfw-sdk/usr/bin/pacman* /usr/bin/
cp -a gfw-sdk/etc/pacman.* /etc/
mkdir -p /var/lib/
cp -a gfw-sdk/var/lib/pacman /var/lib/
cp -a gfw-sdk/usr/share/makepkg/util* /usr/share/makepkg/

pacman --database --check

curl -L https://raw.githubusercontent.com/git-for-windows/build-extra/master/git-for-windows-keyring/git-for-windows.gpg \
| pacman-key --add - \
&& pacman-key --lsign-key 1A9F3986

 色々インストール

git for windows は軽量化のため余計なファイルが削除されている。
pacmanで必要なパッケージを再インストールしておく

コンパイラとかヘッダファイルとか

pacman -S gcc mingw-w64-i686-gcc mingw-w64-x86_64-gcc
pacman -S msys2-w32api-headers mingw-w64-i686-headers-git mingw-w64-x86_64-headers-git
pacman -S binutils mingw-w64-i686-binutils mingw-w64-x86_64-binutils
pacman -S mingw-w64-i686-crt-git mingw-w64-x86_64-crt-git
pacman -S mingw-w64-i686-winpthreads-git mingw-w64-x86_64-winpthreads-git
pacman -S  windows-default-manifest mingw-w64-i686-windows-default-manifest  mingw-w64-x86_64-windows-default-manifest
pacman -S msys2-runtime-devel  msys2-w32api-runtime

wget

pacman -S libpcre2_8 libmetalink libgpgme wget

Msys2起動用のexe復活

pacman -S msys2-launcher

ツール実行でエラーになったら

strace

を使ったり、Linuxでファイルアクセスを監視するを参考に関連ライブラリを調べる

pecoを使う

msys2では、pecoではなくpercolを使う。
使い方もオプションも同じなので、percolで問題ない。

pecoを使う 非推奨

https://github.com/peco/peco/releases
ダウンロードして適当なパスに配置 or ソースを落としてコンパイル、インストール
winpty で実行する必要があるためちょっと細工が必要。
パイプで連携せずに一時ファイルで連携する。

.bashrc

 peco-select-history() {
     HISTTIMEFORMAT= history | sort -k1,1nr | perl -ne 'BEGIN { my @lines = (); } s/^\s*\d+\s*//; $in=$_; if (!(grep {$in eq $_} @lines)) { push(@lines, $in); print $in; }' > /tmp/peco-select-history
     winpty bash -c "${HOME}/bin/peco-select-history.sh"
     READLINE_LINE=$(cat /tmp/peco-select-history_2)
     READLINE_POINT=$(cat /tmp/peco-select-history_3)
 }
 bind -x '"\C-r": peco-select-history'

~/bin/peco-select-history.sh

declare l=$(peco --query "$READLINE_LINE" /tmp/peco-select-history)
echo $l > /tmp/peco-select-history_2
echo ${#l} > /tmp/peco-select-history_3

[カテゴリ: OS > Windows]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2023年01月14日 15時55分40秒