Есть ли способ указать, где raco должен установить пакет? - PullRequest
1 голос
/ 26 июня 2019

Системы управления пакетами многих языков устанавливают сторонние пакеты в подпапку корневого репозитория данного проекта.(Например, node_modules/, deps/ и т. Д.) Это хорошо, поскольку позволяет красиво сосуществовать нескольким версиям одного пакета, поскольку каждая изолирована от проекта, который зависит от него.

racoпо умолчанию устанавливает пакеты в масштабе всей системы.Есть ли способ сообщить raco, что он должен устанавливать пакеты в определенную папку?

1 Ответ

1 голос
/ 29 июня 2019

Комментарий справедливо указывает на области действия пакета : использование области действия пакета каталога является наиболее детализированным уровнем контроля, доступным на уровне менеджера пакетов.Однако, как говорится в документации,

Проверка конфликтов запрещает установку одного и того же или конфликтующего пакета в разных областях…

Это решение по проектированию в системе пакетов Racketчтобы несколько версий одного и того же пакета могли сосуществовать в одной и той же установке.Идея состоит в том, что пакет не должен вносить критических изменений при использовании того же имени.В качестве источника вдохновения мы упомянули системы пакетов уровня ОС, такие как Debian, где gcc-4.7 и gcc-4.8 - это разные пакеты, которые устанавливают разные двоичные файлы.Это сильно отличается от практики некоторых других систем языковых пакетов (например, npm), но на практике хорошо работает, потому что сообщество Racket очень серьезно относится к обратной совместимости.

На самом деле это вторая система пакетов Racket.Старая система, PLaneT , пыталась быть гораздо более самоуверенной, включая встроенные понятия управления версиями.Новая / текущая система сознательно удалила некоторые из этих элементов, чтобы создать более минимальную и сфокусированную систему пакетов, что означает, что большая часть того, что раньше должно было быть «встроено» в Racket, теперь может быть просто другим пакетом.Вас может заинтересовать разговор о дизайне системы пакетов.В то время в списке рассылки также было много обсуждений, которые заархивированы здесь .

Если вы обнаружите, что вам нужны разные версии пакета в такой степени, что это невозможнопри поддержке существующих механизмов вы можете использовать автономную установку Racket (а не общесистемную) для получения полностью изолированной среды.Я уверен, что сообщество Racket также было бы интересно услышать о любых проблемах, которые у вас есть на практике.

...