2013-08-27 1 views
4

У меня версия 3.0.1 Alex установлена ​​на моем /usr/bin. Я думаю, что платформа Haskell первоначально разместила ее там (хотя я не уверен на 100% ...).Каков правильный способ обновления версий программ Haskell, установленных на/usr/bin?

К сожалению, версия 3.0.1 - bugged, поэтому мне нужно обновить ее до 3.0.5. Я попытался с помощью междусобойчик, чтобы установить последнюю версию Alex но cabal install alex-3.0.5 он установлен на исполняемый файл на .cabal/bin над моей домашней папке, а не на /usr/bin

ли я просто вручную скопировать исполняемый /usr/bin? (это звучит как много хлопот, чтобы сделать все время)

ли я изменить PATH переменной окружения, так что .cabal/bin предшествует /usr/bin? (я боюсь, что исполняемый файл «ls» или аналогичный код в папке cabal может закончиться испортить мою систему)

Или есть более простой способ пойти на него в целом?

+7

Изменение PATH так, что '/ .cabal/bin' выглядит первым, это лучший вариант. Поскольку специальный диспетчер пакетов обычно создает пакеты в '/ usr/bin', вы не должны с ним напрямую сталкиваться. – Satvik

+0

@Satvik: У меня были люди, которые говорили мне, что вы не должны помещать свои вещи в/bin и/usr/bin в переменную PATH. Ты уверен? – hugomg

+1

Вы не должны были устанавливать alex в '/ usr/bin' в первую очередь. Лучший способ, который я нахожу, - установить ghc, а затем установить остальную часть вещей с помощью cabal. Я знаю, что он пришел с платформой haskell, но он также обязывает вас ждать следующего релиза для обновления пакетов. Я не вижу никакого вреда в случае размещения '.cabal/bin' перед'/usr/bin'. – Satvik

ответ

1

Во-вторых, если поставить /.cabal/bin перед/usr/bin в PATH проще, и это то, что делают большинство людей.

Его также не имеет большого значения, так как только cabal будет помещать файлы в .cabal/bin, поэтому он должен быть предсказуемым и с небольшим риском перезаписывать вещи.

3

Я хочу сначала указать макет, который хорошо подходит для меня, а затем предложить, как вы можете действовать в своей конкретной ситуации.

Что хорошо работает для меня

В общем, я думаю, что лучше макет должен иметь следующий путь поиска:

  1. каталоги с важными не-Haskell бинарных файлов
  2. каталог, cabal install устанавливает на
  3. каталог, в котором находятся двоичные файлы платформы Haskell, находится в

Таким образом, вы можете использовать cabal install для обновления двоичных файлов на платформе Haskell, но они не могут случайно скрыть некоторые не связанные с Haskell бинарные файлы.

(На моей машине с Windows этот макет легко достичь, потому что двоичные файлы платформы Haskell по умолчанию установлены в отдельном каталоге. Поэтому я просто вручную адаптирую путь поиска, и все. Я не знаю как добиться этого на других платформах).

Предложение для вашей конкретной ситуации

В вашей конкретной ситуации с платформой бинарных файлов Haskell уже установлены вместе с не связанных с Haskell бинарных файлов, может быть, вы можете использовать следующую схему для поиска пути:

  1. каталог, содержащий ссылки на некоторые из бинарников в 3
  2. каталог с важными не-Haskell бинарных файлов и Haskell бинарных файлов платформы
  3. каталог что cabal install устанавливается в.

В этом случае двоичные файлы от cabal install не могут случайно затенять важные вещи в 2.Но если вы решите, что хотите затенять что-то из платформы Haskell, вы можете вручную добавить ссылку на 1. Если это мягкая ссылка, я думаю, вам нужно сделать это только один раз для имени программы, а затем вы можете позвонить cabal install для этого чтобы обновить его. Вы даже можете посмотреть, какие исполняемые файлы связаны с платформой Haskell, и сделать это раз и навсегда.

+0

Дополнительная директория с программными ссылками - отличная идея. Благодаря! – hugomg

 Смежные вопросы

  • Нет связанных вопросов^_^