Есть ли способ указать, где raco должен установить пакет?

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

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


person Ashton Wiersdorf    schedule 26.06.2019    source источник
comment
raco pkg install --help показывает вариант --scope-dir, который может быть полезен. Вы можете просмотреть документацию по областям действия пакета. .   -  person Flux    schedule 28.06.2019


Ответы (1)


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

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

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

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

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

person LiberalArtist    schedule 28.06.2019