Скопируйте установленный GHC и все пакеты на другую машину
Я сталкиваюсь с особой проблемой. Здесь, в старшей школе, я получил около 10 компьютеров (все они одного типа, одного типа процессора, памяти одного типа и т. Д.), Которые теперь работают с Debian после переустановки. Я пытался научить учеников немного Хаскеллу, я сам немного этому научился. Дети заинтересованы. Проблема в том, что наша страна - третий мир, а интернет очень медленный и дорогой. Основные ghc и ghci, которые я установил с помощью пакетов deb (которые можно найти с помощью apt-rdepends) на всех машинах после однократной загрузки всех файлов deb только на одну машину с использованием бесплатного интернет-соединения в течение ограниченного времени. Для загрузки всех отсутствующих файлов deb ghc потребовалось более 10 часов.
Я хочу знать, возможен ли такой трюк для клики? Я скачаю все необходимые tar-файлы или другие файлы один раз, на одном компьютере, используя дорогой и медленный интернет, но потом я не хочу тратить все свои деньги на скачивание из интернета для всех 10 компьютеров.
Я хочу показать детские диаграммы и глянцевую упаковку, так как это весело и забавно. Меня вдохновляет этот джентльмен Смит. Как мне это сделать? Есть ли способ для других пакетов вообще, кроме диаграмм и глянца? Спасибо и извините за мой плохой английский.
2 ответа
По умолчанию Cabal кэширует каждый загружаемый пакет. ~/.cabal/packages
(и предпочитает, чтобы его кэш повторно выбирал пакет, если вы явно не запросите повторную выборку). Поэтому достаточно просто скопировать этот каталог между компьютерами.
Это все равно потребует от вас сборки всех пакетов на каждом компьютере. Если вы предпочитаете пропустить даже этот шаг, вы можете напрямую скопировать базу данных пакетов GHC на каждую из машин. Это немного более деликатно, но может сэкономить довольно много времени / энергии.
Глобальная база данных пакетов (где вы должны устанавливать пакеты, которыми вы хотите поделиться между пользователями) находится в /usr/local/lib/ghc-$version
по умолчанию, и вы сможете скопировать этот каталог на все ваши компьютеры. Вы можете проверить, что вы установили нужные пакеты в глобальную базу данных, используя ghc-pkg list
, в котором будут перечислены все установленные комбинации пакетов / версий, разделив их в зависимости от того, установлены ли они в глобальной базе данных или в базе данных пользовательских пакетов.
В прошлом я делал это для того, чтобы GHC и Cabal работали на машине за брандмауэром, через которую "cabal install" не мог видеть.
Вы можете использовать "wget" для загрузки последней версии каждого пакета Hackage. (Или вы можете попробовать сделать что-то подобное со стеком, но я этого не пробовал). Также загрузите https://hackage.haskell.org/packages/index.tar.gz, который является индексным файлом.
Установите GHC, cabal и cabal-install, а затем найдите файл конфигурации cabal-install и укажите его в локальном репозитории, содержащем пакет index.tar.gz и архивы для загруженных пакетов. Тогда, надеюсь, вы обнаружите, что "установка cabal" будет работать из локального репозитория.