如何在不使用go get的情况下安装Go应用?

I'm trying to install a specific version of CockroachDB on my ubuntu machine. I followed the guide on the site and after downloading ~200MB, the latest version is installed :

$ go get -d github.com/cockroachdb/cockroach
$ cd $GOPATH/src/github.com/cockroachdb/cockroach
$ git checkout beta-20170330
$ make install

One issue is that /src/github.com/cockroachdb/cockroach is 300MB while if I download last version from the GitHub page it is only 30MB. Why?

I used git checkout v0.1-alpha to switch to the version I want :

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

But it fails after running 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

I'd really appreciate if I could install the specific version I downloaded from GitHub because it's smaller in size and it has a cleaner structure. But it's missing some files such as .go-version .bootstrap and fatal: Not a git repository (or any of the parent directories): .git

Does go get insert these files itself? How do I initialize them?

Shouldn't there be a better way to do this, without having to download an extra 100MB everytime I run make install?

duanjianqu3685
duanjianqu3685 我相信30MB的大小来自从githubui下载zip/tar文件。
3 年多之前 回复
duanluo9369
duanluo9369 蟑螂回购的克隆大于300MB。您在看什么,只有30MB?Cockroachdb并不是要通过goget安装的,因此如果您的目标是要通读他们的文档,了解如何从源代码进行构建。如果他们的构建说明不起作用,那么您可以向他们提出问题。
3 年多之前 回复

2个回答



使用 go get </ code>下载cockroachdb我得到了 $ GOPATH / src / github.com / cockroachdb / cockroach </ code>的大小为664MB。</ p>

然后,我尝试为ockroachdb克隆github存储库,它的大小为304MB,这主要是由于所致。 git </ code>隐藏的263MB文件夹。</ p>

从github ui下载zip文件并解压缩后,我得到了42MB文件夹。 </ p>

但是,纯git克隆的回购和zipfile版本缺少 vendor </ code>文件夹,您可以在此处阅读。 它又占了302MB。 当使用 go get </ code>下载回购协议时,该文件夹中填充有cockroachdb的依赖项(我猜它遵循的是蟑螂的供应商回购链接,您可以在github页面上看到该链接) 。</ p>

由于我是从master分支完成此操作的,因此我的尺寸与 v0.1-alpha </ code>版本略有不同。 但是我猜想它也有类似的原因造成大小差异。 </ p>

要使用zip文件使其正常工作,您可以尝试将zipfile提取到 $ GOPATH / src / github.com / cockroachdb / cockroach </ code>。 然后在该文件夹中执行 git init </ code>。 然后按照README中该标记中的指示进行操作,指示您应该运行 make build </ code>。 但是,我相信您仍然需要获取一些cockroachdb的依赖项,因此按照官方说明进行操作可能要简单得多。</ p>

我还没有尝试过,但是您呢? 确定每次运行时 make install </ code>都会导致新的下载?</ p>
</ div>

展开原文

原文

Downloading cockroachdb using go get I get a $GOPATH/src/github.com/cockroachdb/cockroach with a size of 664MB.

I then tried to clone the github repo for cockroachdb it has a size of 304MB most of which is because of the .git hidden folder which is 263MB.

Downloading a zipfile from the github ui and unpacking it I end up with a 42MB folder.

The pure git cloned repo and the zipfile version however lacks the vendor folder which you can read about here. It accounts for another 302MB. The folder is populated with the dependencies of cockroachdb when go get is used to download the repo (I'm guessing that it follows the link to the vendor repo for cockroach that you can see on the github page).

Since I've done this from the master branch my sizes are a bit different from the v0.1-alpha version. But I'm guessing that it has a similar cause for the size difference.

To get it to "work" using the zipfile you could try to extract the zipfile to $GOPATH/src/github.com/cockroachdb/cockroach. Then do a git init in that folder. And then follow the instructions in the README for in that tag which indicate that you should run make build. However, I believe you will still need to get some of cockroachdb's dependencies, so it is probably a lot simpler to just follow the official instructions.

I haven't tried it, but are you certain that make install causes new downloads each time you run it?

dongyanhu5628
dongyanhu5628 您确定使用的是正确分支中的下载内容吗? 我认为它将包含源代码树中的所有文件。 同样,如果只需要构建应用程序,则一旦构建了应用程序,就可以删除源(如果需要空间)。 这是您要构建可在docker映像中使用的cockroachdb或映像大小重要的问题吗?
3 年多之前 回复
duanbi7204
duanbi7204 将logflags.go中第74行的sync.Locker更改为* syncutil.Mutex,遇到此错误:#github.com/cockroachdb/cockroach/pkg/util/log/logflags pkg / util / log / logflags / logflags.go:74 :未定义:syncutil.Mutex Makefile中的syncutil:122:目标“安装”的配方失败:*** [安装]错误2恢复了更改。 再次进行构建。 现在它以某种方式工作!!!!!!!!! exec文件自然位于/ bin中。 我准备再次尝试,只是为了确保下次运行构建时,exec文件位于蟑螂文件夹中。 为什么它如此随机!!
3 年多之前 回复
dpzzkfb1244
dpzzkfb1244 用/ cockroach文件夹替换了zip内容,从go获取版本复制了.go-version和.bootstrap,运行了make build,这就是我遇到的问题:#github.com/cockroachdb/cockroach/pkg/util/log pkg / util / log /flags.go:28:调用logflags时没有足够的参数。InitFlags具有(* syncutil.Mutex,* bool,* logDirName,* bool,* level,* moduleSpec,* traceLocation)想要(sync.Locker,* bool, flag.Value,* bool,* bool,flag.Value,flag.Value,flag.Value)Makefile:122:目标“安装”的配方失败:*** [安装]错误2
3 年多之前 回复




我使用git checkout v0.1-alpha切换到想要的版本</ p>
< / blockquote>

v0.1-alpha </ code>很古老,而且肯定不是您想要的(我不再为它不再构建而感到惊讶;我们已经 从那以后提高了我们构建过程的可重复性)。 最新的发行版(在撰写本文时)为 beta-YYYYMMDD </ code>形式。 </ p>

CockroachDB 二进制发行版可以是 没有 go get </ code>的情况下安装。 我们目前正在重新整理安装说明,以使用源tarball代替 go get </ code>或 git clone </ code>。 </ p>
</ div>

展开原文

原文

I used git checkout v0.1-alpha to switch to the version I want

v0.1-alpha is ancient, and surely not what you want (I'm not too surprised that it doesn't build any more; we've improved the repeatability of our build process since then). The most current releases (as of this writing) are the ones of the form beta-YYYYMMDD.

CockroachDB binary releases can be installed without go get. We're currently reworking the installation instructions to use a source tarball instead of go get or git clone.

doufei6456
doufei6456 感谢您指出这一点,我们将对其进行修复。
3 年多之前 回复
doulilou8560
doulilou8560 设法使其得以建造! 顺便说一句,此博客文章重复了两次,为什么我不能运行100个节点的CockroachDB集群?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐