Как перечислить установленные пакеты go

Насколько мне известно, go distribution поставляется с каким-то package manager. После установки go 1.4.1 я запустил go help, чтобы найти любую подкоманду, способную перечислять локально установленную go packages, но, к сожалению, не получила ее.

Итак, как это сделать?

Ответ 1

goinstall теперь история

goinstall был заменен на go get. go get используется для управления внешними/сторонними библиотеками (например, для их загрузки, обновления, установки и т.д.).

Введите go help get чтобы увидеть справку командной строки, или посмотрите эти страницы:

Команда идти

О команде go (сообщение в блоге)

Если вы хотите просмотреть список установленных пакетов, вы можете сделать это с помощью команды go list:

Листинговые пакеты

Чтобы вывести список пакетов в вашей рабочей области, перейдите в папку рабочей области и выполните следующую команду:

go list ./...

./ говорит, чтобы начать с текущей папки, ... говорит, чтобы рекурсивно идти вниз. Конечно, это работает в любых других папках, не только в рабочей области Go (но обычно это то, что вас интересует).

Список всех пакетов

проведение

go list ...

в любой папке перечисляются все пакеты, включая сначала пакеты стандартной библиотеки, а затем внешние библиотеки в рабочей области go.

Пакеты и их зависимости

Если вы также хотите видеть импортированные пакеты по каждому пакету, вы можете попробовать этот пользовательский формат:

go list -f "{{.ImportPath}} {{.Imports}}" ./...

-f указывает альтернативный формат для списка, используя синтаксис template пакета. Структура, на поля которой можно ссылаться, может быть напечатана командой go help list.

Если вы хотите увидеть все зависимости рекурсивно (зависимости импортированных пакетов рекурсивно), вы можете использовать этот пользовательский формат:

go list -f "{{.ImportPath}} {{.Deps}}" ./...

Но обычно это длинный список, и вам нужен только один импорт ("{{.Imports}}") каждого пакета.


Также см. Связанный вопрос: Что такое Go (mod) эквивалент npm-устаревшего?

Ответ 2

Запустите Go документацию сервера:

godoc --http :6060

Посетите http://localhost: 6060/pkg

Там будет список всех ваших пакетов.

Если вы установите новые, они не появятся автоматически. Вам нужно перезапустить "Годок".

Ответ 3

on * nix systems (возможно, в Windows с помощью bash инструментов, таких как msysgit или cmder), чтобы увидеть, какие пакеты я установил, я могу запустить:

history | grep "go get"

Но это грязный выход. По какой-то причине я решил увидеть, что могу немного очистить эту выходную информацию, поэтому я сделал псевдоним для этой команды:

history | grep 'go get' | grep -v ' history ' | sed -e $'s/go get /\\\\\ngo get /g' | grep 'go get ' | sed -e $'s/-u //g' | sed -e $'s/-v //g' | sed -e $'s/ &&//g' | grep -v '\\\n' | egrep 'get [a-z]' | sed -e $'s/go get //g' | sed -e $'s/ //g' | sort -u

Пожалуйста, не спрашивайте, почему я это сделал. Может, проблема? Позвольте мне объяснить части

history история

grep "go get" grep по истории и только показать строки, куда мы пошли, и получили что-то

grep -v " history " и удалите время, когда мы искали "got get" в истории

sed -e $'s/go get /\\\\\ngo get /g' Теперь мы берем любые экземпляры "go get" и заставляем новую строку перед ней. Теперь они все в начале.

grep "go get " фильтровать только строки, которые теперь начинаются с "go get"

sed -e $'s/-u //g' и sed -e $'s/-v //g' удалить флаги, которые мы искали. Вы могли бы оставить их, но можете получить дубликаты при завершении вывода.

sed -e $'s/ &&//g' несколько раз мы устанавливаем несколько команд, используя '& &' поэтому позволяет удалить их с концов линии.

grep -v "\\\n" У моего вывода были другие строки с напечатанными новыми строками, которые мне не нужны. Таким образом, это избавилось от них.

egrep "get [a-z]" убедитесь, что вы правильно отформатировали только URL-адреса go go.

sed -e $'s/go get //g' удалите текст "go get"

sed -e $'s/ //g' разделите пробелы (необходимо отфильтровать дубликаты)

sort -u теперь сортировать оставшиеся строки и удалять дубликаты.

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

Также было бы более интересно сделать команду go ls для отображения фактических пакетов, которые вы явно установили. Но это намного больше. Тем более, что я все еще участвую в Go.

Вывод:

> gols 
code.google.com/p/go.crypto/bcrypt
github.com/golang/lint/golint
github.com/kishorevaishnav/revelgen
github.com/lukehoban/go-find-references
github.com/lukehoban/go-outline
github.com/newhook/go-symbols
github.com/nsf/gocode
github.com/revel/cmd/revel
github.com/revel/revel
github.com/rogpeppe/godef
github.com/tpng/gopkgs
golang.org/x/tools/cmd/goimports
golang.org/x/tools/cmd/gorename
gopkg.in/gorp.v1
sourcegraph.com/sqs/goreturns