Комментарий справедливо указывает на области действия пакета : использование области действия пакета каталога является наиболее детализированным уровнем контроля, доступным на уровне менеджера пакетов.Однако, как говорится в документации,
Проверка конфликтов запрещает установку одного и того же или конфликтующего пакета в разных областях…
Это решение по проектированию в системе пакетов Racketчтобы несколько версий одного и того же пакета могли сосуществовать в одной и той же установке.Идея состоит в том, что пакет не должен вносить критических изменений при использовании того же имени.В качестве источника вдохновения мы упомянули системы пакетов уровня ОС, такие как Debian, где gcc-4.7
и gcc-4.8
- это разные пакеты, которые устанавливают разные двоичные файлы.Это сильно отличается от практики некоторых других систем языковых пакетов (например, npm), но на практике хорошо работает, потому что сообщество Racket очень серьезно относится к обратной совместимости.
На самом деле это вторая система пакетов Racket.Старая система, PLaneT , пыталась быть гораздо более самоуверенной, включая встроенные понятия управления версиями.Новая / текущая система сознательно удалила некоторые из этих элементов, чтобы создать более минимальную и сфокусированную систему пакетов, что означает, что большая часть того, что раньше должно было быть «встроено» в Racket, теперь может быть просто другим пакетом.Вас может заинтересовать разговор о дизайне системы пакетов.В то время в списке рассылки также было много обсуждений, которые заархивированы здесь .
Если вы обнаружите, что вам нужны разные версии пакета в такой степени, что это невозможнопри поддержке существующих механизмов вы можете использовать автономную установку Racket (а не общесистемную) для получения полностью изолированной среды.Я уверен, что сообщество Racket также было бы интересно услышать о любых проблемах, которые у вас есть на практике.