2015-10-13 6 views
3

opam list -a перечислены все пакеты, доступные в настоящее время на OPAM, но не отображает номер версии пакетов, которые в настоящее время не установлены, согласно opam list --help выхода:Как указать текущие версии пакетов в OPAM?

(...) формат вывода отображает один пакет за строка, и каждая строка содержит имя пакета, установленную версию или - если пакет не установлен, (...)

Как я могу перечислить все пакеты, включая их номера версий?

ответ

1

Уточненная (и быстрее) версия ответа Anol является дать весь список пакетов для opam show в один проход (с просьбой opam к выходу как package и version поле), а также для обработки результата с sed, как, видимо show выходы каждого поля по своей линии:

opam show -f package,version $(opam list -a -s) \ 
| sed -e '/ *package:/N; s/ *package: \([^\n]*\)\n *version: \([^\n]*\)/\1: \2/' 
3

opam info <packagename>.

Я думаю, opam list выполняет печать только версий уже установленных пакетов из-за зависимостей пакета. Список последних версий пакетов, например, еще не установленных пакетов, не очень полезен.

+0

проблема с 'opam info' является то, что он принимает только один пакет в то время, например, если я хочу, чтобы быстро увидеть самые последние версии каждого' 'мираж * пакет , Я должен перечислить их все, а затем индивидуально запросить для каждой версии. – anol

1

Это не идеальное решение, но с использованием recommandation camlspotter, я вручную опрошена каждый пакет для своего version поля, используя следующий цикл оболочки:

for p in $(opam list -a -s); do echo "$p $(opam show -f version $p)"; done 

Это работает, но это занимает ~ 85 секунд, чтобы завершить на моей машине (запрашивает более 1000 пакетов, доступных в настоящее время).