brew-cask でのインストール先を変更する際に発生するシンボリックリンクの問題
Caskroom の場所の変更
Caskroom の場所が /opt/homebrew-cask/Caskroom から /usr/local/Caskroom へ変更.
brew cask doctor
などで以下の Warning を確認.
==> Homebrew-cask Install Location:
<NONE>
Warning: The default Caskroom location has moved to /usr/local/Caskroom.
Please migrate your Casks to the new location, or if you would like to keep your
Caskroom at /opt/homebrew-cask/Caskroom, add the following to your HOMEBREW_CASK_OPTS:
--caskroom=/opt/homebrew-cask/Caskroom
For more details on each of those options, see https://github.com/caskroom/homebrew-cask/issues/21913.
Warningの内容から対応としては以下の二択.
- --caskroom=/opt/homebrew-cask/Caskroom オプションを付けて従来の場所(/opt/homebrew-cask/Caskroom)を使用
- /opt/homebrew-cask/Caskroom から /usr/local/Caskroom へファイルを移行
ファイル移行時に生じた問題
GitHubのIssues では簡単な移行方法として
mv /opt/homebrew-cask/Caskroom /usr/local
を紹介していたが,実行すると brew-cask で入れたものが使用不可.
目に見えた症状としては,以下の通り.
- Lanchpad,Dock で app が見つからない
- Alfred から app が見つからず,はてなマークが出ている
brew-cask で入れた app のシンボリックリンクの参照先を変更していないのが原因.
解決策
以下の手順により,問題は解決.
シンボリックリンクを修正.
以下のシェルスクリプトを実行.
IFS(区切り文字)を関数のスコープの中で収めて無名関数として実行(zsh).
() {
local IFS=$'\n'
local cask_app_symboliclink_dir=$HOME/Applications
local old_room=/opt/homebrew-cask
local new_room=/usr/local
for dest in `\ls -d $cask_app_symboliclink_dir/*.app`; do
if [ -h $dest ]; then
src=`readlink $dest | sed -e "s@$old_room@$new_room@"`
sudo ln -sf $src $dest
fi
done
}
Lanchpad および Dock の正常動作確認.
Alfred の設定を修正
次に Alfred を起動.Lanchpadから,またはopen "/usr/local/Caskroom/alfred/<お使いのversion>/Alfred 2.app/Contents/Preferences/Alfred Preferences.app"
で Alfred Preferences が起動.
- Features -> Search Scope の +ボタン をクリック
- Command + Shift + G で /usr/local/Caskroom を入力,追加
- /opt/homebrew-cask/Caskroom にカーソルを合わせて delete キーで削除
Alfred の正常動作確認.
以上で新しい Caskroom への移行完了.
Author And Source
この問題について(brew-cask でのインストール先を変更する際に発生するシンボリックリンクの問題), 我々は、より多くの情報をここで見つけました https://qiita.com/naomaruru/items/cfae7de4ce2d67b45a10著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .