2015-05-05 3 views
4

Я хочу локально перекомпилировать/переустановить пакет, который уже был загружен через OPAM, но не загружал его снова.OPAM: как локально переустановить пакет без повторной загрузки?

opam reinstall Кажется, что он всегда перезагружает пакет, и я не вижу возможности отключить его.

Вот несколько причин, одна, возможно, захотите выполнить эту локальную переустановку:

  • местные источники были изменены, и человек хочет применить изменения, без необходимости вручную восстановить все из исходный код;
  • В настоящее время нет подключения к Интернету, или он медленный/ограниченный.
+0

В manpage упоминается переменная среды OPAMCURL - предположительно, вы можете использовать ее для определения замены завитка, используемой для загрузки пакетов. Вы считали, что используете это? (путем установки его в фиктивный сценарий, который просто «извлекает» локальные источники, а не загружает их) –

ответ

4

opam будет пытаться синхронизировать загруженный пакет с восходящим потоком. Это означает, что если пакет находится в локальном кеше и он не отличается от восходящего пакета, он не будет загружен.

Если вы хотите поменять исходный код локально, вам понадобится pin. Другой вариант - создать свой собственный репозиторий и добавить его в ваш opam. Ваш локальный репозиторий может содержать все пакеты или только несколько, которые вам интересны. Для обработки локальных репозиториев есть инструмент opam-admin.

Создание собственного репозитория - задача не очень простая, поэтому я предлагаю вам использовать команду pin и пакеты контактов, которые вы хотите локально, указанному локальному пути.

Пример (требуется opam 1.2 или более поздней)

opam source lwt.2.4.8 
opam pin add lwt lwt.2.4.8 

lwt была выбрана произвольно, просто потому, что оно короткое. Первая команда загрузит источники указанной версии и поместит их в папку lwt.2.4.8 вместе с файлом opam. Вторая заставит инструмент opam использовать эту конкретную папку в качестве источника для пакета lwt.

+2

Но скажите, что вы вносите изменения в закрепленный пакет, как вы получаете opam, чтобы перекомпилировать его, помимо утомительного отказа, а затем снова закрепить? –

+2

Это легко, 'opam update lwt; opam upgrade lwt' (на самом деле бывшая команда, возможно, даже опустилась в некоторых случаях, но проще просто выдать ее каждый раз) – ivg

+0

Я вижу, я думал, что это будет работать, только если номер версии действительно изменился, а не если изменение источника , Благодаря! –

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

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