Вы используете Windows, OS X или какую-то версию Linux? Вы используете платформу Haskell? Была ли у вас раньше версия ghc или cabal? В случае с дистрибутивом Linux, конечно, могут возникнуть тонкости в работе вашего менеджера пакетов. (В частности, следы старого ghc и старого каталога ~ / .ghc / могут быть источником проблем.)
Вот несколько элементарных мыслей, которые можно встретить на #haskell с такими проблемами. (Мое понимание, конечно, не совсем адекватное):
Главный вопрос, кажется, заключается в том, почему вас пригласили сделать то, что должно быть локальной установкой с sudo? Для глобальной установки (cabal install pony --global), конечно, потребуются привилегии, если ghc и его библиотеки находятся в /usr/... или другом защищенном месте, но в противном случае sudo против не sudo не зависит от места установки. То, что вы делаете с cabal install pony --user (теоретически --user является значением по умолчанию), не требует прав суперпользователя. (Иногда в OS X я обнаруживал, что права запрашиваются там, где нужно вызвать gcc, но обычно это было из-за любопытства по поводу моей настройки.) Но в любом случае sudo не влияет на то, куда cabal их помещает: неявное --user и явный --global, и более конкретные заклинания для развития, делают это.
Если вы сделаете ghc-pkg list, например, он разделит пакеты по разным местам, в которых они зарегистрированы, в соответствии с двумя или более package.conf.d каталогами, которые он суммирует. На моем ноутбуке сейчас это
/Users/applicative/.ghc/x86_64-darwin-7.0.3/package.conf.d/...
для местных вещей в ~/.cabal/lib/... и охраняемых
/Library/Frameworks/GHC.framework/Versions/7.0.3-x86_64/usr/lib/ghc-7.0.3/package.conf.d
для вещей, которые были установлены глобально с помощью установщика Haskell Platform (это место связано с некоторыми особенностями OS X, ghc, ghci и т. д. где-то в лесу, но связано с символической ссылкой на /usr/bin). Файлы conf для разных пакетов сообщают вам, где именно были установлены библиотеки. Так, например о священной библиотеке base,
$ cat base-4.3.1.0-f5c465200a37a65ca26c5c6c600f6c76.conf
говорит мне:
import-dirs:
/Library/Frameworks/GHC.framework/Versions/7.0.3-x86_64/usr/lib/ghc-7.0.3/base-4.3.1.0
library-dirs:
/Library/Frameworks/GHC.framework/Versions/7.0.3-x86_64/usr/lib/ghc-7.0.3/base-4.3.1.0
В любом случае, где ghc-pkg list говорят, что ваши cabal install-ed пакеты собираются? В папке ~/.cabal посмотрите файл config. Если вы не редактировали его, я думаю, что строки с комментариями и без комментариев, если в них указано предпочтение, указывают значения по умолчанию для установки с --global и --user. В каталоге ~.ghc/ проверьте подкаталог myghcversion/package.conf.d и посмотрите, есть ли там что-нибудь; это должно совпадать с тем, что вам сообщает ghc-pkg. (Вы можете изучить параметры для ghc-pkg в целом, например, ghc-pkg check и ghc-pkg recache, если вы этого не сделали. Возможно, вы установили что-то странным образом.)
Если вы установили ghc и cabal и т. Д. установив платформу Haskell с бинарным установщиком или менеджером пакетов, что кажется хорошей идеей, я думаю, также неплохо сохранить библиотеки платформы как нечто священное и убедиться, что вы никогда не устанавливаете что-либо глобально из Hackage ; среди прочего, это может привести к перезаписи библиотек платформы - хотя это не кажется проблемой здесь: было бы более очевидно, если бы это было так.
person
applicative
schedule
02.06.2011