Linuxbrewを一瞬だけ無効にする
アプリケーションによってはインストール時のビルドで/usr/include以下のライブラリを参照する場合がある.
linuxbrewを使っている場合,linuxbrewがライブラリへの参照を奪ってしまってうまくビルドできないことがあった.
根本的な解決ではないけど,とりあえず一瞬だけlinuxbrewの影響をなくすスクリプトをつくって対応した.
以下のスクリプトを~/.local/bin/detach_brewなどに保存してdetach_brew COMMANDと実行するとCOMMANDをlinuxbrewの影響を受けずに実行できる.
code:detach_brew.sh
remove_brew_from_path() {
local oldpath="$1"
local newpath=""
local pathlist x
IFS=: pathlist=(${oldpath})
for x in ${pathlist@}; do if [ ! "echo "$x" | grep -E "^$HOMEBREW_PREFIX"" ]; then
test -n "$x" && newpath="$newpath:$x"
fi
done
else
newpath="$1"
fi
echo "$newpath"
}
env -u HOMEBREW_PREFIX \
-u HOMEBREW_CELLAR \
-u HOMEBREW_REPOSITORY \
PATH="/bin:remove_brew_from_path $PATH" \
MANPATH="remove_brew_from_path $MANPATH" \
INFOPATH="remove_brew_from_path $INFOPATH" \
$@
やっていることはbrew shellenvで設定されたパスや環境変数をenvコマンドで一時的に削除しているだけ.