Go语言 一致的构建/从二进制文件中删除个人信息

gv8xihay  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(156)

现在我意识到Go语言将源代码的绝对路径保存在二进制文件中,以便打印堆栈跟踪等。我不想完全删除这些信息,但是,这也意味着每个开发者在构建相同的程序时,都会生成一个具有不同校验和的可执行文件。在我尝试使用chroot或类似的方法重新实现之前:有没有办法告诉Go语言不要使用绝对路径呢?

hmmo2u0o

hmmo2u0o1#

我知道它没有直接解决你的问题,但是@JimB的建议确实指出了你似乎遇到的问题的一类解决方案。
其中一个更简单的方法(我认为)是让开发人员安装Docker并创建一个别名,以便运行go命令:

docker run --rm --tty --volume $GOPATH:/go golang:1.7.1(-$YOUR_PLATFORM) go

然后,每个构建(以及测试和运行)都认为它使用的是/go的GOPATH,开发人员的校验和不会因此而不一致。
有关详细信息,请参阅here

kqqjbcuj

kqqjbcuj2#

有没有办法告诉Go语言不要使用绝对路径呢?
现今有:-trimpath .
https://pkg.go.dev/cmd/go#hdr-Compile_packages_and_dependencies 解释道:

  • 修剪路径
    从生成的可执行文件中删除所有文件系统路径。记录的文件名不是绝对文件系统路径,而是以module path@version(使用模块时)或普通导入路径(使用标准库或GOPATH时)开头。

相关问题