2015-10-26 2 views
1

Я сделал opam update, а затем opam upgrade, и теперь OPAM хочет обновить 10 пакетов до более поздних версий.Как обновить один пакет?

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

Однако, делая opam upgrade <package> приводит к тому же, что и opam upgrade, то есть OPAM хочет обновить все 10 пакетов, а не только тот, который я хочу.

Я даже попробовал opam install <package>.<new version>, но он также хочет обновить все сразу.

Есть ли способ обновить только этот пакет, не касаясь остальных? В теории ничто не должно нарушать, но на практике это часто бывает ...

ответ

1

я узнал, что делает

opam reinstall <package>.<new version> 

позволяет мне получить то, что я хочу, то есть установить только пакет <package> и его зависимостей, без обновления несвязанных пакетов.

ОПАМ выдает предупреждение ([WARNING] <package>.<new version> is not installed.), но он предлагает мне установить его в любом случае.

Впоследствии, несмотря на некоторые предупреждения о том, что каталог назначения не пуст (из-за уже установленной предыдущей версии), OPAM смог установить только нужный пакет без обновления всего.

Обратите внимание, что то же самое происходит, если я пытаюсь установить новый пакет: потому что мой предыдущий opam update добавил несколько пакетов в список обновлений, пытаясь установить что-нибудь запустит алгоритм «обновить все» с помощью opam install, в то время как opam reinstall не будет.

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

Редактировать: как указано в this OPAM Github issue, используя --criteria=paranoid или --criteria=-changed,-notuptodate также может помочь с ничего не изменяя.

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

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