Go package guidelines (简体中文)

软件包 go 中包含了 go 工具 (用于运行 go fix, go build 等)。 另外还有个提供 gccgogcc-go 软件包。

Arch 软件包准则

32-bitCLRCMake – Cross – DKMSEclipse – Electron – Font – Free Pascal – GNOME – GoHaskellJava – KDE – Kernel – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHPPython – R – Ruby – Rust – VCS – Web – Wine

翻译状态:本文是 Go package guidelines翻译。上次翻译日期:2018-05-03。如果英文版本有所更改,则您可以帮助同步翻译。

Arch Linux 对 Go 的支持非常完善。

通用准则

命名

  • 对于使用 Go 语言编写的软件库,请使用小写字母的 go-库名 作为软件包名。
    • 如果软件库名本身就是以 go- 开头的,请不要使用 go-go-模块名 这样的名字,而改用 。
  • 对于使用"go"工具下载的软件包,只有当它不是从tar包或者tagged提交(而是从trunk/HEAD)下载源码时,软件包名才添加"-git"后缀。
    • 类似的,对于mercurial 版本控制系统,只有当软件包未从release-revision下载源码时,才添加"-hg"后缀。
    • 其他版本控制系统,请一并参考该准则。
    • "go"工具下载那个分支或者Tag通常有他自己的一套逻辑。请参考 .
  • 如果有多个同名的软件包,可考虑将作者的名字添加到软件包名之中,例如:。
    • 当然,通常情况下,最流行的软件包会使用最短或者"最佳"的软件包名。
  • 如果软件开发者本身并没有正式的官方发布,那么这种后缀名 (例如 , -git 或 ) 只是可选的。 一方面,这种软件包通常都是直接通过源码版本库下载使用的。另一方面, 大多数 Go 语言项目从不发布任何tarball,而只发布源码版本库。并将版本库的master分支、HEAD提交以外的分支、Tag作为官方发布的方式。另一方面,Go语言官方的模块安装方式 go get 也往往直接使用源码版本库。所以请根据情况作出最佳选择。

打包

  • Go 语言项目通常只包含软件库、可执行文件或者两者俱有。请以合适的方式打包他们。后续有几个例子以供参考。
  • 有些 Go 语言项目并不支持最新版本的Go编译。这种情况下
    • 直接执行  一般就可以搞定了。如果仍有问题,请上报给上游开发者,并且他们修复。
  • 有些Go语言项目并没有版本号或者授权协议文件。这种情况下:
    • 使用 license=('unknown') 并向上游开发者提交授权协议缺失的报告。
    • 如果没有版本号,请使用 "0.1", "1" 或者Git库的revision ( 其他版本控制系统类似)。
    • 作为备选,可以用当前日期作为版本号,格式形如 。

PKGBUILD 范例

参考示例包

参考示例包

    使用 go get

    这是推荐的使用"go get"的方式,请优先选用这种方式,后文介绍的那种仅供参考。

    这种方式将依赖于"go get"。

    通常情况下你无需修改 build() 或 package() 函数,只需要修改前面定义的变量 (pkgname 等)即可。

    如果打包失败,请先确保手动执行"go get"能成功。

    感谢 Rémy Oudompheng‎ 提供该范例。

    使用 go get

    另外一种依靠 go get的方式如下。

    一般不需要修改 build() 或 package() 函数,只需要修改前面的变量 (pkgname 等)即可。

    如果打包有问题,请先确保手动执行 go get 没问题。

    This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.