英文:
Go importing vendor dependencies issue when building a Go 1.7 project using govendor, dh-make-golang
问题
我一直在研究将一个Go项目构建成Debian软件包。
我已经研究了dh-make-golang,并在我的代码库中设置了一个漂亮而完整的debian文件夹。但是,当我尝试使用gbp buildpackage --git-pbuilder时,由于找不到所有的依赖项,它会报错。似乎dh-make-golang在从我的项目的Git仓库中复制所有内容时忽略了vendor文件夹,而我使用的是govendor,所以所有的依赖项都在那里。
我该如何解决这个依赖问题,并正确地构建项目为.deb软件包?供参考,我得到的错误是:
src/github.com/project/project/project.go:15:2: cannot find package "google.golang.org/grpc/grpclog" in any of: /usr/lib/go-1.7/src/google.golang.org/grpc/grpclog (from $GOROOT) /tmp/project/obj-x86_64-linux-gnu/src/google.golang.org/grpc/grpclog (from $GOPATH) 
英文:
I've been looking into building a go project into a debian package.
I've looked into dh-make-golang and I have a nice and shiny debian folder set up in my repository. When I try to use gbp buildpackage --git-pbuilder though it errors out due to all of my dependencies not being found. It seems that dh-make-golang ignores the vendor folder when it copies everything from my project's git repository, and I use govendor so all of my dependencies are in there.
How can I resolve this dependency issue and build the project as a .deb package properly? For reference, the error I am getting is:
src/github.com/project/project/project.go:15:2: cannot find package "google.golang.org/grpc/grpclog" in any of:
/usr/lib/go-1.7/src/google.golang.org/grpc/grpclog (from $GOROOT)
/tmp/project/obj-x86_64-linux-gnu/src/google.golang.org/grpc/grpclog (from $GOPATH)
答案1
得分: 1
问题是关于dh-make-golang在导入供应商依赖项方面的一个错误。它刚刚在今天修复了。
https://github.com/Debian/dh-make-golang/issues/46
英文:
Issue was a bug in dh-make-golang regarding importing vendor dependencies. It was just fixed today.
答案2
得分: 0
请看一下goxc - 它可以为您完成这个任务!
您只需要在您的目录根目录下添加一个名为.goxc.json的文件,内容如下:
{
    "AppName": "my_app",
    "ArtifactsDest": "downloads",
    "Tasks": [
        "interpolate-source",
        "deb"
    ],
    "BuildConstraints": "linux,amd64 windows,amd64 darwin,amd64 linux,arm",
    "ResourcesInclude": "INSTALL*,README*,LICENSE*,config/*,static/*,templates/*",
    "PackageVersion": "0.9.3",
    "TaskSettings": {
        "deb": {
            "metadata": {
                "description": "my app",
                "maintainer": "me",
                "maintainer-email": "me@example.com"
            },
            "metadata-deb": {
                "Homepage": "https://example.com"
            },
            "other-mapped-files": {
                "/": "debian/",
                "/usr/share/something/static": "static/",
                "/usr/share/something/templates": "templates/"
            }
        }
    },
    "ConfigVersion": "0.9"
}
然后运行goxc,它会为您完成所有的工作。
英文:
Take a look at goxc - it can do this for you!
You simply need to add a .goxc.json to the root of your directory, that looks like this
{
	"AppName": "my_app",
	"ArtifactsDest": "downloads",
	"Tasks": [
		"interpolate-source"
		"deb",
	],
	"BuildConstraints": "linux,amd64 windows,amd64 darwin,amd64 linux,arm",
	"ResourcesInclude": "INSTALL*,README*,LICENSE*,config/*,static/*,templates/*",
	"PackageVersion": "0.9.3",
	"TaskSettings": {
		"deb": {
			"metadata": {
				"description": "my app",
				"maintainer": "me",
				"maintainer-email": "me@example.com"
			},
			"metadata-deb": {
				"Homepage": "https://example.com"
			},
			"other-mapped-files": {
				"/": "debian/",
				"/usr/share/something/static": "static/",
				"/usr/share/something/templates": "templates/"
			}
		}
	},
	"ConfigVersion": "0.9"
}
Then run goxc and it'll do all the work for you.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论