Как установить приложение Go без использования go get?
Я пытаюсь установить конкретную версию CockroachDB на мою машину с Ubuntu. Я следовал инструкциям на сайте и после загрузки ~200MB установлена последняя версия:
$ go get -d github.com/cockroachdb/cockroach
$ cd $GOPATH/src/github.com/cockroachdb/cockroach
$ git checkout beta-20170330
$ make install
Одна проблема заключается в том, что /src/github.com/cockroachdb/cockroach
составляет 300 МБ, в то время как, если я загружаю последнюю версию со страницы GitHub, это только 30 МБ. Зачем?
я использовал git checkout v0.1-alpha
чтобы перейти на версию, которую я хочу:
warning: unable to rmdir vendor: Directory not empty
Previous HEAD position was f0f5783... Merge pull request #14448 from BramGruneir/vendorsnappy
HEAD is now at 26088f8... Merge pull request #3475 from mrtracy/mtracy/code_review_feedback
Но это не удается после запуска make install
:
github.com/agtorre/gocolorize 99fea4bc9517 [checkout f42b554bf7f0]
github.com/biogo/store 913427a1d5e8 [checkout 3b4c041f52c2]
github.com/cockroachdb/c-lz4 834d3303c9e8 [checkout c40aaae2fc50]
github.com/cockroachdb/c-protobuf 323984796a7b [checkout 6a18bfcdd516]
github.com/cockroachdb/c-rocksdb 0dd42399d1f0 [checkout bf15ead80bdc]
github.com/cockroachdb/c-snappy c0cd3c9ce92f [checkout 5c6d0932e0ad]
github.com/cockroachdb/yacc 7c99dfd2164a [get checkout 443154b1852a]
github.com/coreos/etcd 38a914973544 [checkout 0eb46eb1457b]
github.com/cpuguy83/go-md2man a65d4d2de4d5 [get checkout 71acacd42f85]
github.com/docker/docker 6311e9fc9d34 [get checkout 5e0283effa73]
github.com/elazarl/go-bindata-assetfs 30f82fa23fd8 [checkout d5cac425555c]
github.com/go-sql-driver/mysql 9dee4ca50b83 [get checkout d512f204a577]
github.com/gogo/protobuf c0656edd0d9e [checkout 8658879224bd]
github.com/golang/lint cb00e5669539 [get checkout 32a87160691b]
github.com/google/btree 316fb6d3f031 [checkout cc6329d4279e]
github.com/gordonklaus/ineffassign f0c5cfc1817d [get checkout 507e48671a07]
github.com/inconshreveable/mousetrap 76626ae9c91c [get OK]
github.com/jteeuwen/go-bindata a0ff2567cfb7 [get OK]
github.com/julienschmidt/httprouter 6f3f3919c878 [checkout f30ab90cccbd]
github.com/kisielk/errcheck 23699b7e2cbf [get checkout 12fd1ab9811e]
github.com/kisielk/gotool 0de1eaf82fa3 [get checkout 58a7a198f2ec]
github.com/kr/pretty cfb55aafdaf3 [get checkout e6ac2fc51e89]
github.com/kr/text 7cafcd837844 [get checkout bb797dc4fb83]
github.com/lib/pq 2704adc878c2 [checkout 11fc39a580a0]
github.com/mattn/go-runewidth 14207d285c6c [checkout d96d1bd051f2]
github.com/mibk/dupl 3447d9b0cb5a [get checkout 47b66d6a523f]
github.com/montanaflynn/stats f8cd06f93c6c [checkout 4dd27fe9ac79]
github.com/olekukonko/tablewriter febf2d34b54a [checkout 333c0610de34]
github.com/opennota/check 11e2eec79ec4 [get checkout 591428223a6a]
github.com/peterh/liner 88609521dc4b [checkout 4d47685ab2fd]
github.com/rcrowley/go-metrics 1f30fe9094a5 [checkout 7839c01b09d2]
github.com/robfig/glock 39b969c32281 [checkout cb3c3ec56de9]
github.com/russross/blackfriday 5f33e7b78783 [get checkout d18b67ae0afd]
github.com/samalba/dockerclient a30362618471 [get checkout 4656b1bc6cbc]
github.com/shurcooL/sanitized_anchor_name 1dba4b3954bc [get checkout 10ef21a441db]
github.com/spf13/cobra 7aeaa2cce6ae [checkout ee6224d01f6a]
github.com/spf13/pflag d16db1e50e33 [checkout 08b1a584251b]
github.com/tebeka/go2xunit 13c29c7515e6 [get checkout 0519fcc9b45b]
github.com/termie/go-shutil bcacb06fecae [get OK]
golang.org/x/crypto 88915ccf7aeb [checkout 7b85b097bf75]
golang.org/x/net ffcf1bedda3b [checkout 21af302bb527]
golang.org/x/text f4b4367115ec [checkout 00e205363f74]
golang.org/x/tools 620ecdb8d794 [checkout 1cdaff4a02c5]
gopkg.in/yaml.v1 9f9df34309c0 [OK]
cmd github.com/cockroachdb/c-protobuf/cmd/protoc [built]
cmd github.com/cockroachdb/cockroach/protoc-gen-gogoroach [error exit status 2]
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/gogoproto
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/plugin
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/testgen
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/defaultcheck
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/embedcheck
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/enumstringer
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/marshalto
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/oneofcheck
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/unmarshal
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/compare
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/description
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/equal
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/face
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/gostring
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/size
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/stringer
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/union
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/grpc
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command
github.com/cockroachdb/cockroach/protoc-gen-gogoroach
# github.com/cockroachdb/cockroach/protoc-gen-gogoroach
protoc-gen-gogoroach/main.go:12: undefined: vanity.NotInPackageGoogleProtobuf
go install -tags '' -ldflags '-X "github.com/cockroachdb/cockroach/util.buildTag=alpha-6447-g26088f8" -X "github.com/cockroachdb/cockroach/util.buildTime=2017/04/03 11:46:56" -X "github.com/cockroachdb/cockroach/util.buildDeps=github.com/cockroachdb/c-lz4:c40aaae2fc50293eb8750b34632bc3efe813e23f github.com/cockroachdb/cockroach:26088f81e5ecfb2fd63f8f15f524102c9a0c1c05 github.com/cockroachdb/cockroach/vendor:17711805119083543d94edac10e423260a597426 github.com/julienschmidt/httprouter:f30ab90cccbd5171771d26b6557d3c2f49e047a6 github.com/peterh/liner:4d47685ab2fd2dbb46c66b831344d558bc4be5b9 gopkg.in/yaml.v1:9f9df34309c04878acc86042b16630b0f696e1de"'
# github.com/cockroachdb/cockroach/cli
cli/sql_util.go:148: table.Append(row) used as value
Makefile:71: recipe for target 'install' failed
make: *** [install] Error 2
Я был бы очень признателен, если бы мог установить конкретную версию, которую я скачал с GitHub, потому что она меньше по размеру и имеет более чистую структуру. Но ему не хватает некоторых файлов, таких как .go-version
.bootstrap
а также fatal: Not a git repository (or any of the parent directories): .git
Есть ли go get
вставить эти файлы сам? Как мне их инициализировать?
Не должно ли быть лучшего способа сделать это без необходимости загружать дополнительные 100 МБ каждый раз, когда я запускаю make install
?
2 ответа
Скачивание таракана с помощью go get
Я получаю $GOPATH/src/github.com/cockroachdb/cockroach
с размером 664 МБ.
Затем я попытался клонировать репозиторий github для cockroachdb, размер которого составляет 304 МБ, большинство из которых из-за .git
скрытая папка, которая составляет 263 МБ.
Скачивая zip-файл с пользовательского интерфейса github и распаковывая его, я получаю папку размером 42 МБ.
Однако в клонированном репозитории git и в версии zipfile отсутствует vendor
Папка, о которой вы можете прочитать здесь. Это составляет еще 302 МБ. Папка заполняется зависимостями cockroachdb, когда go get
используется для загрузки репозитория (я предполагаю, что он идет по ссылке на репо продавца для таракана, которую вы можете увидеть на странице github).
Так как я сделал это из основной ветки, мои размеры немного отличаются от v0.1-alpha
версия. Но я предполагаю, что у этого есть аналогичная причина для разницы в размере.
Чтобы заставить его работать, используя zip-файл, вы можете попробовать распаковать zip-файл в $GOPATH/src/github.com/cockroachdb/cockroach
, Тогда сделай git init
в этой папке. А затем следуйте инструкциям в README для этого тега, которые указывают, что вы должны запустить make build
, Тем не менее, я считаю, что вам все равно нужно будет получить некоторые зависимости от cockroachdb, так что, вероятно, намного проще просто следовать официальным инструкциям.
Я не пробовал, но вы уверены, что make install
вызывает новые загрузки каждый раз, когда вы запускаете его?
Я использовал git checkout v0.1-alpha, чтобы перейти на нужную мне версию
v0.1-alpha
древний, и, конечно, не то, что вы хотите (я не слишком удивлен, что он больше не собирается; с тех пор мы улучшили повторяемость нашего процесса сборки). Самые последние выпуски (на момент написания статьи) имеют вид beta-YYYYMMDD
,
Бинарные выпуски CockroachDB могут быть установлены без go get
, В настоящее время мы дорабатываем инструкции по установке для использования исходного архива вместо go get
или же git clone
,