Help us understand the problem. What is going on with this article?

`~/.stack`のシンボリックリンク先を変えたらおかしくなった

環境

~/.stackをdotfileで管理しており、それをGithubで管理しています。
gitレポジトリの管理にはghqを使用しています。

問題

ghqのアップデートによって、デフォルトのパスが~/.ghqから~/ghqに変わりました(隠しディレクトリではなくなった)。
それに応じてdotfileから出しているシンボリックリンクもパスを変更したのですが、その後stackがうまく動かなくなりました。

$ stack build
Found an invalid compiler at "/Users/me/ghq/github.com/Cj-bc/dotfiles/dotfiles/stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc-8.6.5": Received ExitFailure 126 when running
Raw command: /Users/me/ghq/github.com/Cj-bc/dotfiles/dotfiles/stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc-8.6.5 --info
Standard error:

/Users/me/ghq/github.com/Cj-bc/dotfiles/dotfiles/stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc-8.6.5: line 9: /Users/me/.ghq/github.com/Cj-bc/dotfiles/dotfiles/stack/programs/x86_64-osx/ghc-8.6.5/lib/ghc-8.6.5/bin/ghc: No such file or directory
/Users/me/ghq/github.com/Cj-bc/dotfiles/dotfiles/stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc-8.6.5: line 9: exec: /Users/me/.ghq/github.com/Cj-bc/dotfiles/dotfiles/stack/programs/x86_64-osx/ghc-8.6.5/lib/ghc-8.6.5/bin/ghc: cannot execute: No such file or directory

解決策

パスは変えたはずなのですが、依然どこかで~/.ghq以下を参照しているようです。

1. ghcを再ビルドさせる

$ rm -rf ~/.stack/programs/x86_64-osx/*

2. snapshotsを削除する

パッケージのファイルが足りないと言われるので、~/.stack/snapshots/を削除します。

There are files missing in the 'lens-4.17.1' package,
try running 'ghc-pkg check'.

この時、ghc-pkg checkをしても何も出力されません。stack exec ghc-pkg checkを実行してください。

ack -l '.ghq' | xargs -L1 gsed -i "s/\.ghq/ghq/g"等で置換をこころみましたが、別の問題が発生したので素直にsnapshot消しました。

Cj-bc
#shellscript #vim 最近は #haskell 始めた
https://github.com/Cj-bc
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした